iT邦幫忙

2024 iThome 鐵人賽

DAY 17
0
Python

30 天學會用 Python pandas 和 openpyxl 處理 Excel —— 成為用 Python 處理 Excel 檔案的高手系列 第 17

Python 將 pandas 的 DataFrame 輸出到 Excel 檔案【Python 處理 Excel #17】

  • 分享至 

  • xImage
  •  

本篇文章同步發布於 Python 將 pandas 的 DataFrame 輸出到 Excel 檔案【Python 處理 Excel #17】

前言

系列文《30 天學會用 Python pandas 和 openpyxl 處理 Excel》從前期使用 Python pandas 讀取 Excel 檔案、對 DataFrame 資料進行處理,到這篇文章開始進入「輸出檔案」的階段。這篇文章分享將 DataFrame 輸出為 Excel 檔案的兩種方式。

延伸閱讀:Python pandas 讀取 Excel 檔案【Python 處理 Excel #2】


需要安裝的套件

在開始之前,需要先確認已經安裝 pandas 和 openpyxl 這兩個套件。

  • pandas:一個數據處理和分析的工具,能夠進行數據導入導出、清理、轉換、分析等操作。
  • openpyxl:用於讀取和寫入 Excel 檔案的 Python 套件。

如果還沒有安裝這兩個套件,可以用以下指令安裝:

pip install pandas openpyxl

使用 pandas 的內建方法輸出 Excel 檔案

to_excel 是 pandas 內建的一個方法,可以直接將 DataFrame 輸出到 Excel 檔案。

to_excel 方法的基本語法

to_excel 方法的基本語法如下:

DataFrame.to_excel(excel_writer, sheet_name='Sheet1', index=True)

參數解釋

  • excel_writer:必填,指定要寫入的 Excel 檔案路徑或一個已經存在的 ExcelWriter 物件。
  • sheet_name:可選,指定工作表的名稱,預設為 Sheet1
  • index:可選,是否寫入列索引,預設為 True

to_excel 方法的使用案例

下方是一個使用 to_excel 方法的簡單案例:

import pandas as pd

# 讀取 Excel 檔案
df = pd.read_excel('input.xlsx')

# 對 DataFrame 進行一些操作
# 例如:過濾數據、計算統計值或變更欄位名稱等
# 這裡省略具體的程式碼

# 將 DataFrame 輸出為 Excel 檔案
df.to_excel('output.xlsx', index=False)

解釋

  • to_excel:這是 pandas 直接將 DataFrame 輸出為 Excel 檔案的方法。第一個參數 'output.xlsx' 指定輸出檔案的名稱。index=False 表示不輸出 DataFrame 的索引,否則會包含額外的列索引。

使用 openpyxl 輸出 Excel 檔案

程式 Debug 的過程中,我會用 pandas 的 to_excel 方法快速輸出 Excel 檔案查看內容,但如果需要對輸出的 Excel 檔案進行比較細緻的設定,我會選擇使用 openpyxl 輸出 Excel 檔案。

下方是使用 openpyxl 輸出 Excel 檔案的例子:

import pandas as pd
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows

# 讀取 Excel 檔案
df = pd.read_excel('input.xlsx')

# 對 DataFrame 進行一些操作
# 例如:過濾數據、計算統計值或變更欄位名稱等
# 這裡省略具體的程式碼

# 建立活頁簿
wb = Workbook()
ws = wb.active

# 使用 dataframe_to_rows 將 DataFrame 轉換為逐列的數據
for row in dataframe_to_rows(df, index=False, header=True):
    ws.append(row)

# 儲存結果為 Excel 檔案
wb.save('output.xlsx')

解釋

  • 引用 openpyxl:程式碼開頭從 openpyxl 套件引用 Workbook 類別和 dataframe_to_rows 函數。Workbook 用於建立新的 Excel 活頁簿,而 dataframe_to_rows 用於將 DataFrame 轉換為列資料,以便後續寫入 Excel 檔案。
  • wb = Workbook():建立一個新的 Excel 活頁簿物件 wb。這個活頁簿是空白的,可以用來添加數據和工作表。
  • ws = wb.active:獲取當前活躍的工作表,並將其賦值給 ws。在新建立的活頁簿中,預設的活躍工作表是第一個工作表。
  • dataframe_to_rows(df, index=False, header=True):將 pandas 的 DataFrame 轉換為逐列資料,這樣可以一列一列地將資料添加到 Excel 檔案中。index=False 表示不包含列索引,header=True 表示用 DataFrame 的欄位名稱作為 Excel 工作表的欄位名稱。
  • for row in ...:這是一個迴圈,遍歷 dataframe_to_rows 回傳的每一列。
  • ws.append(row):將每一列數據添加到工作表 ws 中。append 方法將指定的列數據添加到工作表的末端,這表示每次調用 append 方法時,數據將被追加到工作表的下一個空白的列。因為是在迴圈中執行 append 方法,DataFrame 的數據就逐列被寫入 Excel 檔案的工作表中。
  • wb.save('output.xlsx'):將活頁簿儲存為檔案名稱為 output.xlsx 的檔案。

總結

  • pandas 提供簡單的 to_excel 方法將 DataFrame 輸出為 Excel 檔案。
  • 需要進行更多自定義的輸出設定時,openpyxl 提供更細緻的輸出控制方法。
  • openpyxl 的 dataframe_to_rows 函數和 append 方法能逐列將 DataFrame 資料寫入 Excel 檔案。

本篇文章同步發布於 Python 將 pandas 的 DataFrame 輸出到 Excel 檔案【Python 處理 Excel #17】


上一篇
Python pandas 使用 rank 得到排名【Python 處理 Excel #16】
下一篇
Python 使用 openpyxl 將多個 pandas DataFrame 輸出到同一個 Excel 檔案,以及如何刪除 Excel 工作表【Python 處理 Excel #18】
系列文
30 天學會用 Python pandas 和 openpyxl 處理 Excel —— 成為用 Python 處理 Excel 檔案的高手27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言