分組統計
電商老闆常問「不同渠道的業績怎麼樣?」「哪個商品類別最賺?」。如果你還在 Excel 樞紐分析表手動拖拉,pandas 的 groupby() 讓你用同樣思維,在程式裡秒算出答案。
你會學到什麼
- 用
groupby()先分組再統計,快速得到各類別、各渠道的指標 - 使用
.agg()一次產出多種統計量,省去重複計算 - 判斷什麼時候用
value_counts(),什麼時候用groupby().count()
GROUP BY 概念
在 Excel 樞紐分析表,你會「選欄位分組 → 選統計方式」。groupby() 也是兩步:
- 先按欄位把資料拆成小群組
- 再對每組套用統計(平均、總和、數量...)
結果通常是 Series 或 DataFrame,取決於你選了一個欄位還是多個欄位。
小提醒:欄位名一定要用引號
groupby("渠道"),不要寫成groupby(渠道),否則 Python 會以為那是變數名稱。
多種統計
.agg() 就像在樞紐分析表一次勾選「筆數、總和、平均」。你為每個欄位指定多個函式,pandas 會自動逐組計算,回傳一個整齊的 DataFrame,適合直接匯出或做後續視覺化。
小提醒:
.agg()裡的語法是新欄名=("原欄位", "統計函式"),記得用小括號包起來。
計數
如果你只想知道「某欄位各值出現幾次」,value_counts() 最快,會直接回傳排序好的結果。groupby().count() 則會對每組計算「每個欄位的非空數量」,適合已分組後對多欄位同時計數。
小提醒:
groupby()取單一欄位再算統計時回傳的是Series,需要reset_index()才會變回 DataFrame。取特定組別結果時用result["web"]。
AI 協作:學了這個,跟 AI 怎麼配合?
groupby 就像 Excel 樞紐分析表——AI 幫你寫語法,但「怎麼分組、算什麼」你決定。
你的人類優勢:
- 你知道報表要「按月」還是「按季」、「按城市」還是「按業務員」彙總
- 你能判斷彙總結果是否跟你手算的大數對得上
可以這樣跟 AI 說:
幫我用 groupby 統計每個商品類別的總銷售額和平均客單價,結果按總銷售額排序。
練習題
互動示範
挑戰任務
建立 DataFrame:渠道 ['web','app','web','store','app','web']、金額 [1500,2300,800,3500,1200,950],印出 web 的訂單數
使用同上資料,印出 app 渠道的總金額
使用同上資料,用 nunique() 印出共有幾種不同的渠道