![bianalyst gt 商業分析師的隨筆記 商業分析 數據分析 python pandas excel xlsxwriter](https://static.wixstatic.com/media/750d11_0a87f7c6e3ce41e6aea5f4073dcad987~mv2.gif)
在 Medium 的 [分享] 使用 Python 自動產出 Excel 報告(Windows 10)這篇文曾經提到,可以如何使用 Python 自動化製作 Excel 報表,當時主要重心放在「自動化」的流程與方式,這次則是要告訴大家實際用 Python 編輯 Excel 的小撇步!
(註:也剛好當工作的記錄 XD)
本文將以上面的 GIF 做為範本,以下會針對 GIF 中用到的功能一一說明。
使用套件
開始之前,先介紹我們會使用到 Python 套件:xlsxwriter & Pandas。
若你是 Anaconda 的使用者, Anaconda 因為已內建 xlsxwriter,所以不用另外再 pip install 套件囉!直接速速到 Jupyter notebook import 就好。
import pandas as pd
import xlsxwriter
完成 import 後,寫入 Excel 的起手式通常會有這幾行 code:
# writer = pd.ExcelWriter('檔名', engine = 'xlsxwriter')
writer = pd.ExcelWriter('Excel_file.xlsx', engine = 'xlsxwriter')
dataframe.to_excel(writer, sheet_name = 'top_10') # sheet_name 可自行命名
workbook = writer.book # 指定接下來要編輯的 sheet
worksheet = writer.sheets['top_10']
writer.save() # 最後存檔,一定要加上
記得一定要有 save 的指令,Excel 編輯好之後才會完成儲存喔!
I、用 Python xlsxwriter 製作 Excel 圖表
首先,帶大家實作超實用的圖表功能。Python xlsxwriter 不僅可以做出折線圖、長條圖,甚至是組合圖也都能實現!
除了支援各種基本圖表,xlsxwriter 最方便的地方在於它直接可以在 Excel 裡面產出,不用另外將圖表以「插入圖片」的方式放到 Excel 檔案中!
以下為繪製長條圖的範例:
writer = pd.ExcelWriter('bar_demo.xlsx', engine = 'xlsxwriter')
dataframe.to_excel(writer, sheet_name = 'top_10')
workbook = writer.bookworksheet = writer.sheets['top_10']
bar_chart = workbook.add_chart({'type': 'column'})
# 'type': 'column' 即為圖表類別為 bar chart
bar_chart.add_series({'name': '=top_10!$C$1',
'categories': '=top_10!$B$2:$B$8',
'values': '=top_10!$C$2:$C$8'})
# 'name': 顯示於 legend 的名稱
# 'categories': X 軸值
# 'values': 資料值# 圖表擺放位置於 K2
worksheet.insert_chart('K2', bar_chart)
writer.save()
上面的程式碼就能產出一張長條圖,若想追加更多細節,也能透過以下這些功能修改設定:
bar_chart.set_x_axis:設定 X 軸標題
bar_chart.set_y_axis:設定 Y 軸標題
bar_chart.set_legend:設定圖例位置
bar_chart.set_size:設定圖表大小
II、用 Python xlsxwriter 設定儲存格資料格式 & 儲存格寬度
一份報表光是數字格式就有很多種,包含不想要有小數點的、想要以百分比呈現的、要加上千分位符號的,更不用說數字或文字太多,需要調整儲存格寬度的情況!
不過不用擔心,這些小細節都是可以調整的!以下就來示範該怎麼進行設定(底下的範例:百分比取小數點兩位):
writer = pd.ExcelWriter('bar_demo.xlsx', engine = 'xlsxwriter')
dataframe.to_excel(writer, sheet_name = 'top_10')
workbook = writer.bookworksheet = writer.sheets['top_10']
# 新增百分比格式
pctg_format = workbook.add_format({'num_format': '0.00%'})
# 指定 sheet 裡的 A 欄位,整欄套用寬度 15 單位,並設定成百分比格式worksheet.set_column('A:A', 15, pctg_format)
III、進階玩法
結合上面提到的 Python xlsxwriter 畫圖、調整資料格式與設定儲存格寬度,大家也可以參考底下的 GitHub Python script,以了解更彈性、更貼近實務面的寫法:
如何在同份 Excel file 寫入多個 sheets
如何在同份 Excel file 的同個 sheet 擺放多個 DataFrames
如何設定我的資料表或圖表要放哪裡
如何繪製組合圖
結語
自動化與 Python 系列算是最近正好工作遇到,自己研究之後很感興趣的內容,希望能夠對大家有點幫助!也很歡迎各路達人分享自己在自動化或是資料分析遇到的情境,讓我可以有下個主題可以寫 XD
另,xlsxwriter 還能夠做很多變化,包含調字型、底色…等,這邊也不一一贅述,請好奇心還沒被滿足的朋友們點進 docs 來深入研究。
Comments