目錄
Toggle前言與適用情境
在專案管理、團隊協作與數據分析的日常工作中,將處理後的數據自動匯出至 Excel 是常見需求。無論是產生專案進度報表、團隊績效統計,還是將資料庫資料轉換為可視化文件,Pandas 都能大幅簡化流程。透過本教學,你將學會如何靈活運用 Pandas 將數據匯出為 Excel,並掌握各種進階應用技巧,有效提升工作效率。
環境安裝與準備
在開始之前,請確認已安裝以下 Python 套件:
- pandas:數據處理核心庫
- openpyxl:支援 .xlsx 格式 Excel 檔案的讀寫
- xlsxwriter(可選):進階格式化與大數據匯出時的替代方案
安裝指令如下:
pip install pandas openpyxl xlsxwriter
openpyxl 適合大多數 .xlsx 檔案操作,若需進階格式化或處理大量數據,建議改用 xlsxwriter。
Pandas 匯出 Excel 基本語法
建立 DataFrame 範例
Pandas 的 DataFrame 可來自多種來源:手動建立、讀取 CSV、資料庫查詢等。以下為三種常見方式:
import pandas as pd
# 1. 手動建立
df_manual = pd.DataFrame({
'姓名': ['王小明', '李小華'],
'分數': [90, 85]
})
# 2. 讀取 CSV
df_csv = pd.read_csv('data.csv')
# 3. 從資料庫查詢
import sqlite3
conn = sqlite3.connect('example.db')
df_db = pd.read_sql_query('SELECT * FROM users', conn)
to_excel() 基本用法與參數詳解
將 DataFrame 匯出為 Excel 檔案,最常用的方法為 to_excel()
。基本範例如下:
df_manual.to_excel('output.xlsx', index=False)
常用參數說明:
參數 | 功能說明 | 範例 |
---|---|---|
index | 是否輸出索引 | index=False |
header | 是否輸出欄位名稱 | header=True |
sheet_name | 指定工作表名稱 | sheet_name=’成績表’ |
encoding | 指定編碼(.xls 時需特別注意) | encoding=’utf-8′ |
startrow | 資料起始列 | startrow=2 |
engine | 指定引擎(openpyxl/xlsxwriter) | engine=’xlsxwriter’ |
常見錯誤與解決方式:
- ModuleNotFoundError: No module named ‘openpyxl’
→ 請確認已安裝 openpyxl。 - PermissionError: 檔案被佔用
→ 關閉已開啟的 Excel 檔案後重試。 - UnicodeEncodeError(中文亂碼)
→ 匯出 .xls 時請指定 encoding=’utf-8’,或優先使用 .xlsx 格式。
進階應用
自訂工作表名稱與多工作表匯出
若需將多個 DataFrame 匯出至同一 Excel 檔案的不同工作表,可搭配 ExcelWriter
使用:
with pd.ExcelWriter('多工作表範例.xlsx', engine='openpyxl') as writer:
df_manual.to_excel(writer, sheet_name='成績表', index=False)
df_csv.to_excel(writer, sheet_name='原始資料', index=False)
適用情境:專案月報、團隊多部門數據彙整等。
注意事項:
– 若需追加資料至現有 Excel,請加上 mode='a'
並指定 if_sheet_exists
參數(openpyxl 支援)。
– 多工作表操作時,建議確保每個 sheet_name 唯一,避免覆蓋。
只匯出部分欄位或列
實務上常需僅匯出部分資料。可透過 DataFrame 過濾:
# 只匯出姓名與分數欄位,且分數大於85
df_filtered = df_manual[df_manual['分數'] > 85][['姓名', '分數']]
df_filtered.to_excel('高分同學.xlsx', index=False)
應用案例:產生高績效員工名單、篩選特定專案進度。
進階格式化技巧
Pandas 可結合 xlsxwriter 進行進階格式化,如設定欄寬、標題樣式、條件格式、凍結窗格等:
with pd.ExcelWriter('格式化範例.xlsx', engine='xlsxwriter') as writer:
df_manual.to_excel(writer, sheet_name='成績表', index=False)
workbook = writer.book
worksheet = writer.sheets['成績表']
worksheet.set_column('A:B', 15) # 設定欄寬
header_format = workbook.add_format({'bold': True, 'bg_color': '#D7E4BC'})
worksheet.write('A1', '姓名', header_format)
worksheet.freeze_panes(1, 0) # 凍結首列
產業應用:自動產生格式統一的專案進度表、團隊績效報表。
追加數據到現有 Excel
若需將新數據追加至現有 Excel,不覆蓋原有內容,可使用 openpyxl 的 append 模式:
with pd.ExcelWriter('output.xlsx', engine='openpyxl', mode='a', if_sheet_exists='overlay') as writer:
df_new.to_excel(writer, sheet_name='成績表', index=False, header=False, startrow=writer.sheets['成績表'].max_row)
注意:追加時 header 須設為 False,startrow 指定起始列。
數據透視表與報表自動化
Pandas 的 pivot_table()
可快速產生數據透視表,適合自動化產出專案統計或團隊績效分析:
# 以部門分組,計算平均分數
pivot = pd.pivot_table(df, index='部門', values='分數', aggfunc='mean')
pivot.to_excel('部門平均分數.xlsx', sheet_name='透視表')
Pandas 透視表 vs. Excel 樞紐分析表:
Pandas 產生的透視表為靜態數據,適合自動化流程;Excel 樞紐分析表則可互動操作,適合手動分析。
實務案例:
– 專案管理:自動彙整各專案進度、預算統計
– 團隊協作:產生各部門月度績效報表,並自動寄送給相關負責人
常見問題與FAQ
Q1:匯出 Excel 檔案打不開,或出現檔案損毀訊息?
A:請確認匯出過程未中斷,且未同時開啟該檔案。建議使用 openpyxl 或 xlsxwriter 引擎。
Q2:中文欄位或內容出現亂碼?
A:請優先匯出為 .xlsx 格式,避免 .xls。若需 .xls,指定 encoding=’utf-8’。
Q3:數字格式跑掉(如 001 變成 1)?
A:可將欄位轉為字串型態再匯出:df['員工編號'] = df['員工編號'].astype(str)
Q4:如何提升大量數據匯出效能?
A:建議使用 xlsxwriter 引擎,並避免匯出不必要的欄位或列。
Q5:匯出時如何保留原有 Excel 格式?
A:Pandas 匯出會覆蓋原格式。若需保留格式,建議先用 openpyxl 讀取原檔案,再寫入新資料。
結論與進一步提升建議
熟練運用 Pandas 將數據匯出至 Excel,能大幅提升專案管理、團隊協作與數據分析的自動化效率。無論是定期產生進度報告、績效統計,還是自動化資料彙整,都能節省大量人力與時間。若需進一步整合任務追蹤、進度管理與自動報表,建議搭配 Monday.com 等專業專案管理工具,將數據流與團隊協作無縫串接,打造高效數位工作流程。