目錄
Togglepd.read_excel 教學總覽
pd.read_excel 是什麼?適用情境與優勢
pd.read_excel
是 Pandas 套件中專門用來讀取 Excel 檔案(如 .xls、.xlsx、.xlsm、.xlsb、.ods 等)的函數。它能將 Excel 表格資料轉換為 DataFrame,方便進行資料分析、清洗與後續處理。
常見應用場景包括:
- 專案管理:批次匯入進度、預算、資源分配表。
- 團隊協作:彙整多部門回傳的 Excel 報表。
- 數據分析:將原始數據自 Excel 轉為可程式化分析的格式。
- 自動化流程:定期自動讀取、處理 Excel 資料。
優勢:
– 支援多種 Excel 格式與多工作表。
– 提供豐富參數,能精確控制資料讀取方式。
– 與 Pandas DataFrame 無縫整合,便於後續分析。
支援的 Excel 檔案格式與引擎選擇
pd.read_excel
支援以下常見格式:
格式 | 副檔名 | 常用引擎 |
---|---|---|
Excel 97-2003 | .xls | xlrd |
Excel 2007+ | .xlsx, .xlsm | openpyxl |
Excel 二進位 | .xlsb | pyxlsb |
OpenDocument | .ods, .odt | odf |
engine 參數說明:
– openpyxl
:現今最推薦的 .xlsx/.xlsm 讀取引擎,功能完整。
– xlrd
:僅支援 .xls(新版已不支援 .xlsx)。
– odf
:支援 .ods、.odt。
– pyxlsb
:支援 .xlsb。
常見情境:
若遇到「ValueError: Excel file format cannot be determined」等錯誤,請檢查檔案格式與 engine 是否對應。
安裝與準備
安裝 pandas 與 openpyxl
在開始使用前,建議安裝最新版 pandas 及 openpyxl:
pip install pandas openpyxl
openpyxl
為讀取 .xlsx/.xlsm 的主要引擎。- 若需支援 .xlsb、.ods,請額外安裝
pyxlsb
、odfpy
。
常見安裝問題與解決方式
- 找不到 openpyxl/odfpy/pyxlsb:
請確認已安裝對應套件,並重啟 Python 環境。 - Permission denied/權限問題:
請嘗試加上--user
參數或使用管理員權限安裝。 - 套件版本衝突:
建議使用虛擬環境(如 venv、conda)隔離安裝。
pd.read_excel 基本語法與參數
最基本的讀取方式
只需指定檔案路徑,即可將 Excel 第一個工作表讀入 DataFrame:
import pandas as pd
df = pd.read_excel('data.xlsx')
print(df.head())
- 預設讀取第一個工作表。
- DataFrame 結構可直接用於篩選、統計、視覺化等分析。
指定工作表(sheet_name)
Excel 檔案常有多個工作表,可用 sheet_name
參數指定:
# 以名稱指定
df = pd.read_excel('data.xlsx', sheet_name='任務列表')
# 以索引指定(0 為第一張表)
df = pd.read_excel('data.xlsx', sheet_name=1)
一次讀取多個工作表
若需同時讀取多個表,可傳入名稱或索引列表,或設為 None 讀取全部:
# 讀取多個指定工作表
dfs = pd.read_excel('data.xlsx', sheet_name=['任務列表', '預算表'])
# 讀取所有工作表
dfs = pd.read_excel('data.xlsx', sheet_name=None)
- 回傳型態為字典(dict),鍵為工作表名稱,值為對應 DataFrame。
- 實務應用:彙整多部門報表、批次資料清洗。
指定讀取的列與行(usecols、skiprows、nrows、index_col)
只讀取特定欄位
# 以欄名
df = pd.read_excel('data.xlsx', usecols=['姓名', '進度'])
# 以 Excel 欄位字母
df = pd.read_excel('data.xlsx', usecols='A:C')
跳過前幾行、只取部分資料
# 跳過前2行
df = pd.read_excel('data.xlsx', skiprows=2)
# 只讀取前10列
df = pd.read_excel('data.xlsx', nrows=10)
設定索引欄位
# 以「任務ID」欄作為索引
df = pd.read_excel('data.xlsx', index_col='任務ID')
常見錯誤:
– 欄位名稱拼錯或不存在會出現 KeyError。
– usecols、index_col 須與實際 Excel 標題對應。
處理標題列與索引(header、index_col)
header
:指定標題列所在的行數(預設為 0,即第一行)。index_col
:指定哪一欄作為 DataFrame 索引。
# 標題列在第3行(從0起算)
df = pd.read_excel('data.xlsx', header=2)
應用情境:
– 匯入格式不一的報表,標題列不在第一行時特別有用。
處理缺失值(na_values、keep_default_na)
na_values
:自訂哪些值視為缺失(NaN)。keep_default_na
:是否保留預設的缺失值判斷。
df = pd.read_excel('data.xlsx', na_values=['無', 'N/A'], keep_default_na=True)
常見情境:
– 報表中常見「無」、「-」等字樣,需自訂為缺失值。
設置數據類型(dtype、converters)
dtype
:直接指定欄位型態(如 str、int)。converters
:自訂欄位轉換函數。
# 指定「進度」欄為字串
df = pd.read_excel('data.xlsx', dtype={'進度': str})
# 自訂轉換函數
df = pd.read_excel('data.xlsx', converters={'日期': lambda x: str(x)})
注意:
– 若欄位資料混合型態,建議用 converters 增強彈性。
其他常用參數(skipfooter、parse_dates)
skipfooter
:跳過結尾 n 行(需搭配 engine=’python’)。parse_dates
:自動解析日期欄位。
df = pd.read_excel('data.xlsx', skipfooter=2, engine='python')
df = pd.read_excel('data.xlsx', parse_dates=['日期'])
進階應用與實務案例
讀取遠端 Excel 檔案
可直接讀取雲端或網路上的 Excel 檔案(需檔案公開存取權限):
url = 'https://example.com/data.xlsx'
df = pd.read_excel(url)
應用情境:
– 自動化抓取 Google Drive、Dropbox、企業內部報表。
多表合併與資料清洗流程
案例:合併多部門回報的進度表
# 讀取所有工作表
dfs = pd.read_excel('project.xlsx', sheet_name=None)
# 合併所有表
all_data = pd.concat(dfs.values(), ignore_index=True)
- 可進一步用 dropna、fillna 處理缺失值,或用 groupby 彙總。
效能優化建議
- 只讀取必要欄位與行數(usecols、nrows)。
- 大檔案可分批讀取(分 sheet 或分檔案)。
- 若只需部分資料,建議先用 Excel 篩選後再匯入。
常見錯誤訊息與排解
錯誤訊息 | 可能原因與解決方式 |
---|---|
ValueError: Excel file format cannot be determined | 檔案格式不符、檔案損壞、engine 未安裝 |
ImportError: Missing optional dependency ‘openpyxl’ | 未安裝 openpyxl,請 pip install openpyxl |
KeyError: ‘XXX’ | 欄位名稱拼錯或不存在 |
UnicodeDecodeError | 檔案編碼問題,請確認檔案格式 |
FileNotFoundError | 路徑錯誤、檔案不存在 |
FAQ:
-
Q:為什麼讀不到資料?
A:請確認檔案路徑、格式、權限,並檢查 sheet_name 是否正確。 -
Q:如何處理合併儲存格?
A:pandas 會自動展開合併儲存格,若資料錯位,建議先於 Excel 另存新檔再匯入。 -
Q:只想讀取部分資料怎麼做?
A:可用 usecols、nrows、skiprows 控制讀取範圍。
pd.read_excel 與其他工具比較
工具/函數 | 適用情境 | 優點 | 限制 |
---|---|---|---|
pd.read_excel | 資料分析、批次處理、資料清洗 | 整合 DataFrame、參數豐富 | 需安裝對應引擎 |
openpyxl | 讀寫 Excel、格式控制、VBA 操作 | 支援格式、寫入、合併儲存格 | 讀取效率較低 |
xlrd | 舊版 Excel(.xls)讀取 | 輕量、簡單 | 不支援 .xlsx |
Google Sheets API | 雲端表單自動化、多人協作 | 雲端即時同步、API 控制 | 需 API 設定、較複雜 |
選擇建議:
– 若需大量資料分析與自動化,建議以 pd.read_excel
為主。
– 若需寫入、格式控制,或處理複雜 Excel 檔案,可搭配 openpyxl。
– 雲端協作、多人同步建議考慮 Google Sheets API。
結語與延伸應用
pd.read_excel 在專案管理/數據分析的實際應用
pd.read_excel
能有效協助專案經理、團隊領導與數據分析師,快速將 Excel 報表自動化匯入、整合與分析。例如:
- 定期自動彙整多部門回報進度,提升專案透明度。
- 快速清洗、轉換原始 Excel 資料,減少人工整理錯誤。
- 搭配 Monday.com、ClickUp、Notion 等專案管理工具,將資料流程自動化,提升團隊效率。
推薦工具試用
若希望將 Excel 報表流程進一步自動化、結合專案協作,建議試用 Monday.com 等專業工具,能與多種資料來源整合,提升專案管理與團隊協作效率。