iPAS 備考專區 登入

iPAS AI 應用規劃師 中級 科目二 大數據處理分析與應用・114 年第二次・L22・第 45 題

pandas groupby + sum 畫各平台全球銷售總額長條圖

原題

為了觀察各遊戲平台的市場表現,分析師想要統計每個平台的全球銷售總額,並以長條圖呈現。請選出最能正確實現此分析的程式碼。

白話

遊戲銷售資料集有 Platform 欄和 Global_Sales 欄,分析師要把相同平台的所有遊戲銷售額加總,然後畫成長條圖,讓每個平台佔一根柱子,柱子高度代表該平台的全球銷售總額(加總)。

問你:哪一行程式碼能正確計算每個平台的全球銷售總額(不是數量、不是平均)並以長條圖呈現?

一句話總結

要統計每個平台的全球銷售「總額」並畫長條圖,正確寫法是 data.groupby("Platform")["Global_Sales"].sum().plot(kind="bar"):groupby 按平台分組,sum() 加總每組的銷售額,plot(kind="bar") 畫長條圖。

情境

先感受問題:同一平台的遊戲銷售要加起來

遊戲研究公司分析師小凱要做各平台市場表現比較圖。資料集有 2000 行,每行是一款遊戲,Wii 平台有 300 款,PS4 有 200 款。

她要的結果是:

Platform Global_Sales(總額)

PS4 237.4 百萬份

Wii 928.1 百萬份

X360 491.2 百萬份

...

這需要三個步驟:按 Platform 分組(groupby)→ 對每組的 Global_Sales 加總(sum)→ 畫長條圖(plot bar)。三步合在一行就是選項 A。

核心陷阱在於「總額」vs「數量」vs「平均」:count 算的是每個平台有幾款遊戲(數量),value_counts 也是數量,mean 是平均銷售額。只有 sum 才是題目要的「銷售總額」。

舊方法

四種聚合方式各算什麼

  1. sum():加總。把同一平台所有遊戲的 Global_Sales 加在一起,得到該平台的累積銷售量。這是題目要的「銷售總額」。Wii 有 300 款遊戲,把所有款銷售額加總 = Wii 的市場貢獻。
  2. count():計數。算每個平台有幾筆資料(幾款遊戲),不考慮銷售額的數值。Wii 有 300 款 → count = 300,但這是「遊戲數量」不是「銷售額」。
  3. value_counts():計數(另一種寫法)。直接對 Platform 欄做值計數,同樣算「每個平台出現幾次(幾款遊戲)」,結果和 groupby + count 類似,但更簡潔,也不是「銷售額」。
  4. mean():平均。算每個平台所有遊戲的平均銷售額,反映的是「平均一款遊戲賣多少」,而非總市場規模。Wii 平均銷售額高,不代表 Wii 的市場份額大(可能只有少數暢銷遊戲拉高均值)。
  5. 混淆「排行榜順序」和「銷售總額」:資料集本身已按 Global_Sales 降序排列,但前幾名的平台不一定是總銷售額最高的,需要 groupby + sum 才能算出真正的平台累積表現。

新方法

groupby + sum + plot 三步連鎖

小凱的一行程式碼:

data.groupby("Platform")["Global_Sales"].sum().plot(kind="bar")

分解來看:

data.groupby("Platform") → 把資料按 Platform 分成若干群組

["Global_Sales"] → 鎖定要聚合的欄位

.sum() → 對每個群組的 Global_Sales 做加總

.plot(kind="bar") → 把 Series(平台名→銷售總額)畫成長條圖

結果是一張 x 軸為各平台名稱、y 軸為全球銷售總額(百萬份)的長條圖,直觀呈現哪個平台累積銷售量最高。這就是選項 A 講的:data.groupby("Platform")["Global_Sales"].sum().plot(kind="bar")。

錯選項

為什麼其他選項是錯的

Bgroupby + count()

字面在說什麼

按平台分組後,計算每個平台的 Global_Sales 筆數,畫長條圖。

為什麼不對

count() 算的是「這個平台有幾款遊戲(幾筆資料)」,不是「銷售額加總」。題目要的是銷售總額(Sales amount),不是遊戲數量(Game count)。一個平台可能遊戲數很多但都賣得不好,count 高不代表銷售總額高。

誰會選錯

不確定 count 和 sum 差別的人,看到「統計每個平台」就選了 count,混淆了「統計數量」和「加總數值」。

Cvalue_counts()

字面在說什麼

對 Platform 欄做值計數,把每個平台出現的次數畫成長條圖。

為什麼不對

value_counts() 直接對 Platform 欄操作,算的是每個平台名稱出現幾次(有幾款遊戲),同樣是「數量」而非「銷售額」。而且 value_counts() 的語法根本沒有涉及 Global_Sales 欄,完全沒有計算銷售額的部分。

誰會選錯

只想簡化程式碼,用 value_counts() 代替 groupby,但沒有意識到這兩種操作的語意完全不同。

Dgroupby + mean()

字面在說什麼

按平台分組後,計算每個平台的平均銷售額,畫長條圖。

為什麼不對

mean() 算的是「每款遊戲的平均銷售額」,反映的是每個平台的典型遊戲銷售表現,而不是整個平台的市場規模。Wii Sports 等超大暢銷款會拉高 Wii 的平均值,讓平均看起來比實際累積銷售更高。題目要的是「市場表現(市場規模)」,應該用加總(sum)而非平均(mean)。

誰會選錯

把「市場表現」理解成「平均表現」的人,或者不清楚 sum 和 mean 在分析意義上的差別。

變形題

同個考點下次怎麼變形

延伸

想再往下看,這 5 個

答案、題目或解析有問題?回報這題

出處:iPAS 經濟部產業人才能力鑑定 ・ 114 年第二梯次 iPAS AI 應用規劃師 中級 科目二 大數據處理分析與應用 第 45 題

看官方原文 PDF

原題 © 經濟部產業發展署,AITerms.tw 僅作教學解析使用,本站解析以 CC BY-NC-SA 4.0 授權。