零基礎(chǔ)教你使用Python一鍵生成Excel圖表
引言
在日常辦公和數(shù)據(jù)分析中,Excel圖表是我們展示數(shù)據(jù)最直觀的工具。然而,當(dāng)面對每天、每周重復(fù)性的報(bào)表制作時,手動框選數(shù)據(jù)、插入圖表、調(diào)整格式不僅耗時,還容易出錯。
這正是Python發(fā)揮其“自動化魔法”的絕佳場景。通過Python,我們可以編寫一段簡短的代碼,讓計(jì)算機(jī)自動讀取數(shù)據(jù)、生成精美的圖表并保存為Excel文件。不僅效率極高,而且生成的圖表是原生的Excel圖表(意味著你打開Excel后依然可以手動修改它)。
本文專為零基礎(chǔ)編程新手設(shè)計(jì)。我們將系統(tǒng)地帶你了解如何使用Python在Excel中制作柱狀圖,告別繁瑣的手工操作。
準(zhǔn)備工作
在開始寫代碼之前,我們需要準(zhǔn)備好開發(fā)環(huán)境。
安裝Python:請確保你的電腦上已經(jīng)安裝了Python(建議版本3.8及以上)。你可以從Python官網(wǎng)下載并安裝。
安裝第三方庫 openpyxl:
openpyxl 是Python中操作Excel文件(.xlsx)最流行且最易學(xué)的庫之一。它完美支持讀取、寫入以及創(chuàng)建圖表。
打開你的終端(Windows的cmd/PowerShell,或Mac的Terminal),輸入以下命令并回車:
pip install openpyxl
核心實(shí)戰(zhàn):分步指南
我們將通過一個具體的業(yè)務(wù)場景來學(xué)習(xí):為一家公司的“第一季度各產(chǎn)品銷量”制作一張柱狀圖。
第一步:創(chuàng)建Excel工作簿并寫入數(shù)據(jù)
首先,我們需要用Python創(chuàng)建一個新的Excel文件,并在里面填入我們的基礎(chǔ)數(shù)據(jù)。
from openpyxl import Workbook
# 1. 創(chuàng)建一個新的工作簿和默認(rèn)工作表
wb = Workbook()
ws = wb.active
ws.title = "第一季度銷量"
# 2. 準(zhǔn)備我們的數(shù)據(jù)(表頭 + 數(shù)據(jù)行)
data = [
['產(chǎn)品名稱', '一月銷量', '二月銷量', '三月銷量'],
['產(chǎn)品A', 150, 200, 250],
['產(chǎn)品B', 120, 180, 210],
['產(chǎn)品C', 300, 250, 220],
]
# 3. 將數(shù)據(jù)逐行寫入工作表
for row in data:
ws.append(row)
第二步:引入圖表模塊
在 openpyxl 中,圖表功能是由特定的模塊負(fù)責(zé)的。為了畫柱狀圖,我們需要引入 BarChart(柱狀圖)和 Reference(數(shù)據(jù)引用范圍)。
from openpyxl.chart import BarChart, Reference
第三步:創(chuàng)建圖表對象并配置數(shù)據(jù)源
這一步是核心。我們需要告訴圖表兩件事:數(shù)據(jù)在哪里(數(shù)字),以及類別標(biāo)簽在哪里(產(chǎn)品A、B、C)。
# 1. 創(chuàng)建柱狀圖對象 chart = BarChart() chart.title = "第一季度產(chǎn)品銷量對比圖" chart.y_axis.title = "銷量 (件)" chart.x_axis.title = "產(chǎn)品名稱" # 2. 定義數(shù)據(jù)范圍 (Reference) # 數(shù)據(jù)包含了第2列到第4列(一月到三月),第1行到第4行 data_ref = Reference(ws, min_col=2, min_row=1, max_col=4, max_row=4) # 3. 定義類別標(biāo)簽范圍 (X軸顯示的文字) # 標(biāo)簽在第1列(產(chǎn)品名稱),第2行到第4行 cats_ref = Reference(ws, min_col=1, min_row=2, max_row=4) # 4. 將數(shù)據(jù)和標(biāo)簽添加到圖表中 # titles_from_data=True 表示將數(shù)據(jù)范圍的第一行(一月銷量等)作為圖例名稱 chart.add_data(data_ref, titles_from_data=True) chart.set_categories(cats_ref)
第四步:將圖表插入到工作表并保存
圖表配置好后,它還只是存在于內(nèi)存中。我們需要把它放在Excel表格的具體位置,并將文件保存到電腦上。
# 將圖表插入到 E6 單元格的位置
ws.add_chart(chart, "E6")
# 保存為真正的Excel文件
wb.save("sales_chart.xlsx")
print("Excel圖表生成成功!")
完整代碼示例
為了方便你復(fù)制和練習(xí),這里將上面的步驟整合成一段完整的、可直接運(yùn)行的代碼:
from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference
def create_excel_chart():
# 1. 初始化工作簿與數(shù)據(jù)
wb = Workbook()
ws = wb.active
ws.title = "第一季度銷量"
data = [
['產(chǎn)品名稱', '一月銷量', '二月銷量', '三月銷量'],
['產(chǎn)品A', 150, 200, 250],
['產(chǎn)品B', 120, 180, 210],
['產(chǎn)品C', 300, 250, 220],
]
for row in data:
ws.append(row)
# 2. 創(chuàng)建柱狀圖并設(shè)置標(biāo)題
chart = BarChart()
chart.title = "第一季度產(chǎn)品銷量對比圖"
chart.style = 10 # 設(shè)置圖表的內(nèi)置樣式
chart.y_axis.title = "銷量 (件)"
chart.x_axis.title = "產(chǎn)品名稱"
# 3. 框選數(shù)據(jù)和標(biāo)簽范圍
# 數(shù)據(jù):從第2列到第4列,第1行到第4行
data_ref = Reference(ws, min_col=2, min_row=1, max_col=4, max_row=4)
# 標(biāo)簽:第1列,第2行到第4行
cats_ref = Reference(ws, min_col=1, min_row=2, max_row=4)
# 4. 綁定數(shù)據(jù)到圖表
chart.add_data(data_ref, titles_from_data=True)
chart.set_categories(cats_ref)
# 5. 插入圖表并保存文件
ws.add_chart(chart, "E6")
wb.save("sales_chart.xlsx")
print("自動化任務(wù)完成:sales_chart.xlsx 已生成!")
if __name__ == "__main__":
create_excel_chart()
運(yùn)行這段代碼后,你的文件夾里會出現(xiàn)一個 sales_chart.xlsx 文件。打開它,你會看到漂亮且規(guī)范的柱狀圖!
常見避坑指南
對于剛接觸Python操作Excel的新手,以下幾個坑請務(wù)必避開:
- PermissionError (權(quán)限拒絕報(bào)錯):這是最常見的新手錯誤!如果你在運(yùn)行Python代碼時,正在用Excel軟件打開著那個目標(biāo)文件(例如
sales_chart.xlsx),Python會因?yàn)闊o法獲取寫入權(quán)限而報(bào)錯。解決辦法:每次運(yùn)行代碼前,請確保關(guān)閉對應(yīng)的Excel文件。 - 行列索引從 1 開始:在Python的常規(guī)列表或數(shù)組中,索引是從
0開始的。但在openpyxl中,為了和Excel的習(xí)慣保持一致,行和列的索引都是從1開始的(A列=1,第一行=1)。在設(shè)置Reference范圍時千萬不要寫錯。 - 圖表樣式的選擇:
chart.style = 10代表使用了Excel內(nèi)置的第10套圖表配色方案。你可以嘗試修改為1到48之間的任意數(shù)字,探索不同的視覺效果。
進(jìn)階資源與結(jié)語
恭喜你!你已經(jīng)成功掌握了使用Python制作原生Excel圖表的基礎(chǔ)技能。這不僅能幫你省下大量復(fù)制粘貼的時間,還為你打開了自動化辦公的大門。
當(dāng)你熟悉了 openpyxl 之后,如果你希望處理百萬級的數(shù)據(jù)或者進(jìn)行更復(fù)雜的數(shù)據(jù)分析,建議你了解以下進(jìn)階資源:
- openpyxl 官方文檔:學(xué)習(xí)如何制作折線圖 (LineChart)、餅圖 (PieChart) 以及散點(diǎn)圖 (ScatterChart)。
- Pandas 庫:Python數(shù)據(jù)分析領(lǐng)域的王者,配合
XlsxWriter引擎,可以實(shí)現(xiàn)極速的數(shù)據(jù)清洗并一鍵輸出帶圖表的報(bào)表。
行動起來吧! 復(fù)制上面的完整代碼,在你的電腦上運(yùn)行一次,親眼見證Python為你自動繪制出第一張Excel圖表。這就是你邁向“辦公自動化達(dá)人”的第一步!
到此這篇關(guān)于零基礎(chǔ)教你使用Python一鍵生成Excel圖表的文章就介紹到這了,更多相關(guān)Python生成Excel圖表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python使用pymongo與MongoDB基本交互操作示例
這篇文章主要介紹了python使用pymongo與MongoDB基本交互操作,結(jié)合實(shí)例形式詳細(xì)分析了python基于pymongo庫實(shí)現(xiàn)與MongoDB基本交互相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2020-04-04
Python數(shù)據(jù)擬合實(shí)現(xiàn)最小二乘法示例解析
這篇文章主要為大家介紹了Python數(shù)據(jù)擬合實(shí)現(xiàn)最小二乘法的示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-10-10
Python爬蟲beautifulsoup4常用的解析方法總結(jié)
今天小編就為大家分享一篇關(guān)于Python爬蟲beautifulsoup4常用的解析方法總結(jié),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-02-02
Python實(shí)現(xiàn)爬取天氣數(shù)據(jù)并可視化分析
這篇文章主要和大家分享一個用Python實(shí)現(xiàn)的小功能:獲取天氣數(shù)據(jù),進(jìn)行可視化分析,帶你直觀了解天氣情況!感興趣的小伙伴可以學(xué)習(xí)一下2022-02-02
anaconda中Conda創(chuàng)建虛擬環(huán)境的實(shí)現(xiàn)步驟
在Anaconda中,可以使用conda命令來創(chuàng)建和管理虛擬環(huán)境,本文主要介紹了anaconda中Conda創(chuàng)建虛擬環(huán)境的實(shí)現(xiàn)步驟,具有一定的參考價值,感興趣的可以了解一下2023-12-12
Python內(nèi)置函數(shù)int()的具體使用
這篇文章主要為大家介紹了Python內(nèi)置函數(shù)int()的具體使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
利用Python實(shí)現(xiàn)快速批量轉(zhuǎn)換HEIC文件
HEIC 是蘋果采用的新的默認(rèn)圖片格式,它能在不損失圖片畫質(zhì)的情況下,減少圖片大小。本篇文章將使用 Python 批量實(shí)現(xiàn) HEIC 圖片文件的格式轉(zhuǎn)換,需要的可以參考一下2022-07-07
用Python實(shí)現(xiàn)服務(wù)器中只重載被修改的進(jìn)程的方法
這篇文章主要介紹了用Python實(shí)現(xiàn)服務(wù)器中只重載被修改的進(jìn)程的方法,包括用watchdog來檢測文件的變化等,實(shí)現(xiàn)起來充分體現(xiàn)了Python作為動態(tài)語言的靈活性,強(qiáng)烈推薦!需要的朋友可以參考下2015-04-04

