Python 練習:CSV 繪製樞鈕分析圖表
0 |
不時有需要將測試結果轉成樞鈕分析圖表的場合,過去遇上這類需求,我的 SOP 都是輸出 CSV 匯入 Excel,再拖拉操作一番交差。說來不難,但需要一堆點選操作,沒法整成自動化流程。
上回體驗過用 Python 算平均、標準差、95 百分位數畫成圖表的流暢體驗,決定也來練習用 Python 產生樞鈕分析圖表。
這裡借用【Excel 放題】菜鳥都能學會的樞紐分析表應用!文章的範例 Excel:
我打算產生依顧客、銷售員統計銷售額的樞鈕分析結果:
不熟 Python,但我一點都不慌,自從得到 Github Copilot 黑魔法之後,面對陌生程式語言不再害怕,有種深入蠻荒但我帶了嚮導的安心感。尤其是我有大絕 - 先用 C# 寫再請 Copilot 轉換,即便未必是 Best Practice,動起來完全任務肯定沒問題。
點開 CSV 讓 Copilot 知道我們要處理的對象,點左側的 Chat 圖示[2]開啟聊天視窗,
提供的程式直接就能跑,但顯示長條圖時會因欄名有中文字出錯。就再問一下 Github Copilot 怎麼辦:
程式如下:
import pandas as pd
import matplotlib.pyplot as plt
# 讀取CSV文件
df = pd.read_csv('pivot-example.csv')
# 建立樞紐分析表
pivot_table = df.pivot_table(index=['顧客姓名', '銷售人員'], values='銷售總額', aggfunc='sum')
# 顯示樞紐分析表
print(pivot_table)
# 建立長條圖
pivot_table.plot(kind='bar')
# 設置字體為微軟正黑體
plt.rcParams['font.sans-serif'] = ['Microsoft JhengHei']
plt.rcParams['axes.unicode_minus'] = False
# 顯示圖形
plt.show()
做法很簡單,pandas pd.read_csv() 將 CSV 轉成 Pandas Dataframe,呼叫 .pivot_table() 輸入分群依據、彙總值及彙總函式得到樞紐分析表。print() 可將結果顯示成表格,接著呼叫 .plot(kind='bar') 產生長條圖,完成。
整理這回用到的 Python 觀念,順便留下麵包屑,方便未來找參考資料:
- DataFrame - Pandas 套件用來處理雙維度資料的利器,用起來就像資料表,有 Row 跟 Column,基本上想得到的資料表操作(CRUD篩選排序)都有支援
延伸閱讀:資料分析必懂的Pandas DataFrame處理雙維度資料方法 by Mike Ku - Pandas Pivot Table - Pandas 套件內建,配合 DataFrame 使用,可涵蓋 Excel 的樞鈕分析功能,只差在圖表沒那麼精緻
延伸閱讀:解析Pandas套件的Pivot Table(樞紐分析表)用法透視資料 by Mike Ku - Matplotlib - 強大的繪圖程式庫,與 Excel 相比,程式輸出結果後可直接用 API 操控產生圖表,一氣喝成的整合性更好
延伸閱讀:Hello Matplotlib! by Steven Lo
In the past, I mainly used Excel to create Pivot Tables, but this article attempts to accomplish the same task using Python.
Comments
Be the first to post a comment