iPAS 備考專區 登入

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

seaborn barplot + nlargest 找北美銷售前五名

原題

研究團隊想要知道在北美地區(NA)銷售成績最好的遊戲前五名,並希望以 seaborn 的條狀圖呈現結果。請選出能正確完成這項分析的程式碼。

白話

要從遊戲資料集中找出北美銷售量前五名的遊戲,然後用 seaborn 的長條圖呈現,x 軸是遊戲名稱(Name),y 軸是北美銷售量(NA_Sales)。四個選項各有不同的選資料和繪圖方式,需要找出能正確「先取前五名、再用 barplot 呈現」的那一個。

問你:哪一行程式碼能正確選出北美銷售前五名並用 seaborn barplot 呈現?

一句話總結

要取北美銷售前五名並畫 barplot,正確寫法是 sns.barplot(x="Name", y="NA_Sales", data=data.nlargest(5, "NA_Sales")):nlargest(5, "NA_Sales") 取出 NA_Sales 最大的 5 筆,x 是遊戲名稱,y 是銷售量。head(5) 只取前五行不是前五名,lineplot 畫折線,countplot 不支援 y 參數。

情境

先感受問題:head(5) 和 nlargest(5) 不一樣

遊戲研究公司的分析師小凱要找北美前五名。資料集本身已按 Global_Sales 全球銷售額降序排列,但「全球前五」不等於「北美前五」:例如日本本土大賣但北美銷量普通的遊戲,可能在全球排名很高,但北美銷售不在前五。

head(5):取資料集的前 5 行,按原有排序(Global_Sales 降序)

→ 得到的是全球銷售前五,不是北美銷售前五

nlargest(5, "NA_Sales"):找 NA_Sales 最大的 5 筆資料

→ 正確取出北美銷售前五名

取出前五名後,用 sns.barplot 畫圖:x 軸是遊戲名稱(Name),y 軸是北美銷售量(NA_Sales),這樣每根柱子代表一款遊戲的北美銷售量,直觀呈現排名。

舊方法

四個選項各哪裡出了問題

  1. 選項 A 用了 head(5) 而非 nlargest:head(5) 取資料集前 5 行,是依照原始排序(全球銷售 Global_Sales 降序)的前 5 款遊戲,不是北美銷售前 5 名。而且 x 和 y 的欄位放反了(x="NA_Sales" 把數值欄當 x 軸),雖然不報錯但習慣上應該是 x=類別欄(Name)、y=數值欄(NA_Sales)。
  2. 選項 B 正確:nlargest(5, "NA_Sales") 正確取北美前五,x="Name"(類別)、y="NA_Sales"(數值),barplot 畫長條圖,三個部分都對。
  3. 選項 C 用了 lineplot:lineplot 畫折線圖,適合時間序列,不適合比較各個遊戲的銷售量,視覺上折線連接離散遊戲沒有意義。
  4. 選項 D 用了 countplot 並且語法錯誤:countplot 不支援 y 參數(它只統計類別的頻率,不接受數值欄作為 y 軸),而且 countplot 計算「Name 出現幾次」,不是「NA_Sales 的值」。
  5. nlargest 和 sort_values + head 的差異:data.sort_values("NA_Sales", ascending=False).head(5) 和 data.nlargest(5, "NA_Sales") 結果相同,但 nlargest 語法更簡潔。sort_values 是先排序整個 DataFrame,nlargest 是直接找出前 N 大值,大資料量時 nlargest 效率更高。

新方法

nlargest 取前五 + barplot 畫圖

小凱的正確程式碼:

sns.barplot(x="Name", y="NA_Sales", data=data.nlargest(5, "NA_Sales"))

分解來看:

data.nlargest(5, "NA_Sales") → 從 data 取出 NA_Sales 最大的 5 行

x="Name" → x 軸是遊戲名稱(類別)

y="NA_Sales" → y 軸是北美銷售量(數值)

sns.barplot(...) → 畫長條圖,5 根柱子代表 5 款遊戲

結果:5 根柱子的長條圖,x 軸是北美前五名的遊戲名稱,y 軸是各遊戲的北美銷售量(百萬份),直觀呈現排名和差距。這就是選項 B 講的:sns.barplot(x="Name", y="NA_Sales", data=data.nlargest(5, "NA_Sales"))。

錯選項

為什麼其他選項是錯的

Ahead(5) + x/y 對調

字面在說什麼

取資料的前 5 行,x 軸是 NA_Sales(數值),y 軸是 Name(遊戲名稱)。

為什麼不對

head(5) 取的是資料集按原排序(Global_Sales 降序)的前 5 行,不是 NA_Sales 最大的 5 行。全球前五不等於北美前五。而且通常 x 軸放類別(Name),y 軸放數值(NA_Sales)更符合長條圖的慣例,雖然 x 和 y 對調不會報錯,但選 A 還有選錯資料(用 head 而非 nlargest)的根本問題。

誰會選錯

以為資料集已按 NA_Sales 排序(其實是按 Global_Sales)的人,或者不知道 nlargest 方法只用過 head 的人。

Clineplot

字面在說什麼

用 lineplot 以遊戲名稱為 x 軸,NA_Sales 為 y 軸,取北美前五名畫折線圖。

為什麼不對

lineplot 畫折線圖,適合 x 軸是連續數值(如時間)的趨勢分析。遊戲名稱是離散的類別,用折線連接各遊戲沒有任何意義(「Wii Sports 到 Super Mario Bros. 之間的趨勢」是什麼?)。視覺化效果也差,無法直觀看出各遊戲的銷售量差異。

誰會選錯

知道 nlargest 正確,但把 barplot 和 lineplot 搞混,誤以為 lineplot 也能做同樣的事。

Dcountplot(語法錯誤)

字面在說什麼

用 countplot 以 Name 為 x 軸,NA_Sales 為 y 軸,畫全部資料的圖。

為什麼不對

countplot 的語法不支援 y 參數同時接受數值欄位,它只計算 x 欄中每個類別出現的次數(頻率),不接受「y 是數值欄」的用法。而且沒有用 nlargest 篩選前五名,是對全部資料(2000 款遊戲)做圖,x 軸會擠滿 2000 個遊戲名稱,完全不可用。執行這行通常會直接報錯。

誰會選錯

看到「countplot」就以為能計算任何統計量,或不熟悉 countplot 和 barplot 各自 API 差異的人。

變形題

同個考點下次怎麼變形

延伸

想再往下看,這 5 個

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

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

看官方原文 PDF

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