從入門(mén)到實(shí)戰(zhàn)詳解Python解析Excel的完整指南
引言
在日常工作中,Excel是存儲(chǔ)和分析數(shù)據(jù)的常用工具,但手動(dòng)處理大量數(shù)據(jù)不僅耗時(shí),還容易出錯(cuò)。Python提供了多個(gè)強(qiáng)大的庫(kù)(如 openpyxl、pandas、xlrd 等),可以高效地讀取、修改和生成Excel文件。本文將介紹如何用Python解析Excel,并通過(guò)實(shí)戰(zhàn)案例帶你快速上手!
一、為什么選擇Python解析Excel?
- 自動(dòng)化處理:批量操作數(shù)據(jù),減少重復(fù)勞動(dòng)。
- 跨平臺(tái)兼容:支持Windows、macOS、Linux。
- 靈活性強(qiáng):結(jié)合數(shù)據(jù)分析庫(kù)(如
pandas)進(jìn)行復(fù)雜操作。 - 開(kāi)源免費(fèi):無(wú)需購(gòu)買(mǎi)Excel高級(jí)功能授權(quán)。
二、常用Python庫(kù)對(duì)比
| 庫(kù)名 | 適用場(chǎng)景 | 特點(diǎn) |
|---|---|---|
openpyxl | 讀寫(xiě) .xlsx 文件 | 支持公式、圖表、樣式修改 |
pandas | 數(shù)據(jù)清洗、分析、可視化 | 簡(jiǎn)潔高效,適合處理表格數(shù)據(jù) |
xlrd | 讀取舊版 .xls 文件 | 僅支持讀?。ú恢С謱?xiě)入) |
xlwt | 寫(xiě)入舊版 .xls 文件 | 僅支持寫(xiě)入(不支持讀取) |
xlsxwriter | 生成復(fù)雜的 .xlsx 文件 | 支持圖表、條件格式,性能優(yōu)秀 |
推薦組合:
- 讀寫(xiě)
.xlsx:openpyxl或pandas - 處理舊版
.xls:xlrd+xlwt - 生成復(fù)雜報(bào)表:
xlsxwriter
三、實(shí)戰(zhàn)教程:用Python解析Excel
1. 使用openpyxl讀寫(xiě)Excel
安裝庫(kù):
pip install openpyxl
示例代碼:
from openpyxl import load_workbook, Workbook
# 讀取Excel文件
wb = load_workbook("example.xlsx")
sheet = wb.active # 獲取活動(dòng)工作表
print(sheet["A1"].value) # 讀取A1單元格的值
# 修改Excel文件
sheet["B1"] = "Python解析Excel"
wb.save("modified_example.xlsx") # 保存修改
# 創(chuàng)建新Excel文件
new_wb = Workbook()
new_sheet = new_wb.active
new_sheet["A1"] = "Hello, Excel!"
new_wb.save("new_file.xlsx")
適用場(chǎng)景:
- 需要修改單元格樣式、公式或圖表。
- 處理
.xlsx格式文件。
2. 使用pandas高效處理數(shù)據(jù)
安裝庫(kù):
pip install pandas openpyxl # pandas依賴(lài)openpyxl讀寫(xiě).xlsx
示例代碼:
import pandas as pd
# 讀取Excel文件
df = pd.read_excel("data.xlsx", sheet_name="Sheet1")
print(df.head()) # 查看前5行數(shù)據(jù)
# 數(shù)據(jù)清洗與分析
df["New_Column"] = df["Column1"] * 2 # 新增列
filtered_data = df[df["Column2"] > 100] # 篩選數(shù)據(jù)
# 保存到新Excel文件
filtered_data.to_excel("filtered_data.xlsx", index=False)
適用場(chǎng)景:
- 需要快速清洗、分析或可視化數(shù)據(jù)。
- 處理大型表格數(shù)據(jù)(
pandas性能優(yōu)于openpyxl)。
3. 處理舊版.xls文件(xlrd+xlwt)
安裝庫(kù):
pip install xlrd xlwt
示例代碼:
import xlrd
import xlwt
# 讀取.xls文件
old_wb = xlrd.open_workbook("old_data.xls")
sheet = old_wb.sheet_by_index(0)
print(sheet.cell_value(0, 0)) # 讀取第1行第1列的值
# 寫(xiě)入.xls文件
new_wb = xlwt.Workbook()
new_sheet = new_wb.add_sheet("Sheet1")
new_sheet.write(0, 0, "Python寫(xiě)入.xls")
new_wb.save("new_old_file.xls")
注意:
xlrd從 2.0.0 版本開(kāi)始不再支持.xlsx文件,僅支持.xls。- 如果需要讀寫(xiě)
.xlsx,建議使用openpyxl或pandas。
四、常見(jiàn)問(wèn)題與解決方案
1.問(wèn)題:pandas 讀取Excel時(shí)報(bào)錯(cuò) XLRDError
原因:xlrd 2.0+ 不支持 .xlsx。
解決:
降級(jí) xlrd:pip install xlrd==1.2.0
改用 openpyxl:pd.read_excel("file.xlsx", engine="openpyxl")
2.問(wèn)題:如何處理超大Excel文件?
建議:
使用 pandas 的 chunksize 參數(shù)分塊讀取。
轉(zhuǎn)換為 CSV 格式處理(速度更快)。
3.問(wèn)題:如何保留Excel中的公式和格式?
解決:使用 openpyxl 或 xlsxwriter,它們支持公式和樣式操作。
五、總結(jié)
- 簡(jiǎn)單讀寫(xiě):用
pandas(推薦)或openpyxl。 - 修改樣式/公式:用
openpyxl或xlsxwriter。 - 處理舊版
.xls:用xlrd+xlwt。
Python解析Excel的核心優(yōu)勢(shì)是 自動(dòng)化 和 靈活性,無(wú)論是數(shù)據(jù)清洗、分析還是生成報(bào)表,都能顯著提升效率!
下一步建議:
- 嘗試用
pandas+matplotlib實(shí)現(xiàn)數(shù)據(jù)可視化。 - 學(xué)習(xí)
openpyxl的高級(jí)功能(如合并單元格、條件格式)。
優(yōu)化建議
- 添加截圖:展示代碼運(yùn)行前后的Excel文件對(duì)比。
- 視頻教程:錄制操作過(guò)程,嵌入博客中。
- 案例擴(kuò)展:增加實(shí)際業(yè)務(wù)場(chǎng)景(如銷(xiāo)售數(shù)據(jù)分析、考勤表處理)。
- 性能對(duì)比:測(cè)試不同庫(kù)處理大數(shù)據(jù)時(shí)的速度差異。
到此這篇關(guān)于從入門(mén)到實(shí)戰(zhàn)詳解Python解析Excel的完整指南的文章就介紹到這了,更多相關(guān)Python解析Excel內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一文詳解NumPy簡(jiǎn)單算術(shù)及其他運(yùn)算的實(shí)現(xiàn)
你可以直接在 NumPy 數(shù)組之間使用算術(shù)運(yùn)算符 + - * /,但本節(jié)討論了一個(gè)擴(kuò)展,其中我們有函數(shù)可以接受任何類(lèi)似數(shù)組的對(duì)象,如列表、元組等,并根據(jù)條件執(zhí)行算術(shù)運(yùn)算,文中通過(guò)代碼示例給大家講解的非常詳細(xì),需要的朋友可以參考下2024-06-06
利用Python制作一個(gè)簡(jiǎn)單的天氣播報(bào)系統(tǒng)
最近天氣的多變,好幾次出門(mén)半路天氣轉(zhuǎn)變。本文將利用python整個(gè)天氣爬蟲(chóng)來(lái)獲取天氣情況。這樣也好可以進(jìn)行一個(gè)提前預(yù)防,感興趣的可以動(dòng)手試一試2022-05-05
Python中IO多路復(fù)用模塊selector的用法詳解
selector?是一個(gè)實(shí)現(xiàn)了IO復(fù)用模型的python包,實(shí)現(xiàn)了IO多路復(fù)用模型的?select、poll?和?epoll?等函數(shù),下面就跟隨小編一起來(lái)學(xué)習(xí)一下它的具體使用吧2024-02-02
Python?subprocess.Popen?實(shí)時(shí)輸出?stdout的解決方法(正確管道寫(xiě)法)
這篇文章主要介紹了Python?subprocess.Popen實(shí)時(shí)輸出stdout正確管道寫(xiě)法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07
基于matplotlib中ion()和ioff()的使用詳解
這篇文章主要介紹了基于matplotlib中ion()和ioff()的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06
Python中實(shí)現(xiàn)優(yōu)雅的switch操作的方法小結(jié)
這篇文章主要為大家詳細(xì)介紹了如何在Python中優(yōu)雅地實(shí)現(xiàn)?switch?操作,并提供豐富的示例代碼,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-02-02
Matplotlib的反轉(zhuǎn)軸、繪制雙軸和定制刻度詳解
這篇文章主要介紹了Matplotlib的反轉(zhuǎn)軸、繪制雙軸和定制刻度詳解,作為Python生態(tài)中應(yīng)用最廣泛的繪圖庫(kù),Matplotlib用起來(lái)非常簡(jiǎn)單,也很容易上手,本文匯總了和軸、刻度相關(guān)的七個(gè)Matplotlib使用技巧,并給出了實(shí)例代碼,需要的朋友可以參考下2023-08-08
Python?存根文件(.pyi)簡(jiǎn)介與實(shí)戰(zhàn)案例及類(lèi)型提示的高級(jí)指南
存根文件(.pyi) 是Python用于定義接口類(lèi)型但不包含具體實(shí)現(xiàn)的特殊文件,它提供了一種獨(dú)立于實(shí)現(xiàn)的類(lèi)型定義方式,這篇文章給大家介紹Python存根文件(.pyi)簡(jiǎn)介與實(shí)戰(zhàn)案例及類(lèi)型提示的高級(jí)指南,感興趣的朋友一起看看吧2025-08-08

