怎麼從 df.describe() 的輸出讀對統計數字?
使用銷售資料集(marketing.csv)進行迴歸分析,附圖程式碼展示資料載入與處理。根據 df.describe() 的輸出結果,下列何者正確? (describe() 輸出:youtube count=200, mean=176.451, std=103.025, min=0.840, 25%=89.25, 50%=179.700, 75%=262.590, max=355.680;facebook count=199, mean=27.820, std=17.808, min=0.000, 25%=11.940, 50%=27.000, 75%=43.680, max=59.520;newspaper count=200, mean=36.665, std=26.134, min=0.360, 25%=15.300, 50%=30.900, 75%=54.120, max=136.800;sales count=200, mean=16.827, std=6.261, min=1.920, 25%=12.450, 50%=15.480, 75%=20.880, max=32.400)
題目給出 marketing.csv 的 df.describe() 結果,包含 youtube、facebook、newspaper、sales 四個欄位的 count、mean、std、min、25%、50%、75%、max 八個統計量。四個選項各描述其中一個統計數字是否正確。
問你:對照 describe() 的輸出,哪一個描述是正確的?
一句話總結
對照 describe() 輸出,正確的是 D:youtube 欄的 25%(Q1)= 89.25,這就是第一四分位數。選項 A 的總筆數應以 youtube 的 count=200 為準;選項 B 把均值(mean)當成中位數(50%);選項 C 把 Q1(25%)當成 Q3(75%)。
先感受問題:describe() 的八個格子每個代表什麼
行銷資料分析師小嘉拿到 marketing.csv,用 df.describe() 看摘要。她要搞清楚每一行數字的意思,才不會把均值當中位數、把 Q1 當 Q3:
count:非缺失值的筆數(不是總行數)
mean:算術平均值
std:樣本標準差
min:最小值
25%:第一四分位數(Q1),比 25% 的值還低的臨界點
50%:第二四分位數(Q2),即中位數(Median)
75%:第三四分位數(Q3),比 75% 的值還低的臨界點
max:最大值
這題就是考「你有沒有記住這八個統計量的意義」。
逐一驗證四個選項
- 選項 A:「資料集個數 199 筆,變數 4 個」→ 前半錯。describe() 的 count 欄顯示各欄位的非缺失值筆數:youtube=200、facebook=199(有 1 筆 NaN)、newspaper=200、sales=200。「資料集個數」通常指總行數,應為 200(youtube 和 newspaper 等多數欄都是 200)。199 是 facebook 欄的缺失後筆數,不是整個資料集的總行數。
- 選項 B:「sales 中位數是 16.827」→ 錯。describe() 的 sales 欄:mean=16.827(這是均值),50%=15.480(這才是中位數)。16.827 是平均值,不是中位數。
- 選項 C:「facebook Q3 是 11.94」→ 錯。describe() 的 facebook 欄:25%=11.940(Q1),75%=43.680(Q3)。11.94 是 Q1(第一四分位數),不是 Q3(第三四分位數)。
- 選項 D:「youtube Q1 是 89.25」→ 正確。describe() 的 youtube 欄:25%=89.250。25% 對應的是 Q1(第一四分位數),89.25 就是 youtube 的 Q1。這個描述完全正確。
對照 describe() 輸出表格直接查
小嘉把各選項的說法對照 describe() 表格驗證:
選項 B:「sales 中位數 16.827」→ 查 sales 欄:mean=16.827、50%=15.480。16.827 是均值,50% 才是中位數。→ 錯。
選項 C:「facebook Q3 = 11.94」→ 查 facebook 欄:25%=11.940、75%=43.680。Q3 是 75% = 43.680,不是 11.94。→ 錯。
選項 D:「youtube Q1 = 89.25」→ 查 youtube 欄:25%=89.250。Q1 = 25% = 89.25。→ 正確!
這就是選項 D 講的:youtube 變數的第一四分位數(Q1)是 89.25。
技術版:describe() 的八個統計量精讀
中級考試大概率會考程式碼跟公式,所以這部分你還是要學。但如果現在學起來很痛苦,可以先跳過,等讀完其他題目回頭再來。
想像 200 個學生的數學分數排成一排,從最低到最高。count 算有幾個人分數有填(有缺席的不算)。mean 是平均分數。50% 是站在正中間那個人的分數(中位數)。25% 是站在四分之一位置的人的分數(Q1),75% 是站在四分之三位置的人的分數(Q3)。mean 和 50% 分開是因為有少數極高分拉高了平均,但中位數不受影響。
| describe() 的行標籤 | 統計意義 |
|---|---|
| count | 非缺失值筆數(≤ 總行數) |
| mean | 算術平均值 = Σx / n |
| std | 樣本標準差(ddof=1) |
| min | 最小值 |
| 25% | 第一四分位數 Q1(下四分位數) |
| 50% | 第二四分位數 Q2 = 中位數(Median) |
| 75% | 第三四分位數 Q3(上四分位數) |
| max | 最大值 |
- Q1(25th percentile)
- 四分之一分位數:25% 的資料值在 Q1 以下,75% 的資料值在 Q1 以上。
- Q2(50th percentile / Median)
- 中位數:50% 的資料值在 Q2 以下,也是資料的「中間值」,不受極端值影響。
- Q3(75th percentile)
- 四分之三分位數:75% 的資料值在 Q3 以下,25% 在 Q3 以上。
- IQR(Interquartile Range)
- 四分位距 = Q3 - Q1,衡量中間 50% 資料的散佈程度,可用來識別離群值。
- count vs len(df)
- count 是非 NaN 值的筆數,len(df) 是 DataFrame 的總行數(含 NaN 行)。兩者不同時代表有缺失值。
| 統計量 | 公式 |
|---|---|
| mean(均值) | x̄ = (Σxᵢ) / n |
| std(樣本標準差) | s = √(Σ(xᵢ - x̄)² / (n-1)) |
| Q1(25% 分位數) | 第 25th 百分位數,排序後 n×0.25 位置的值 |
| median(50%) | 排序後正中間的值(n 為奇數)或中間兩值的平均(n 為偶數) |
| IQR | Q3 - Q1 = 75th percentile - 25th percentile |
- describe() 的 count 和總行數(len(df))什麼時候不一樣?不一樣代表什麼?
- mean 和 50%(中位數)差很多代表什麼?哪種情況下兩者會相差很大?
- 25%、50%、75% 各稱為什麼?對應哪個四分位數符號?
- IQR = Q3 - Q1,這個數字在離群值偵測上有什麼用途?
- facebook count=199 但 youtube count=200,這意味著 facebook 欄有幾個缺失值?
為什麼其他選項是錯的
字面在說什麼:整個資料集有 199 筆資料,共 4 個變數。
為什麼不對:describe() 的 count 欄顯示 facebook=199 是因為 facebook 有 1 個缺失值,但 youtube、newspaper、sales 都是 200。整個 DataFrame 的總行數是 200(即 len(df)=200),不是 199。「資料集個數」應以最完整的欄位(或 len(df))為基準,而非某個有缺失值欄位的 count。
誰會選錯:看到 describe() 中出現 199 就以為是總筆數,沒有注意到各欄 count 值不同,以及 199 只是 facebook 欄的非缺失值個數。
字面在說什麼:sales 欄的中位數(中間值)是 16.827。
為什麼不對:describe() 中 sales 欄的 mean=16.827,50%=15.480。16.827 是算術平均值,不是中位數。中位數是 50% 那行的數字,也就是 15.480。mean 和 median 是兩個不同的集中趨勢指標,這題在考「你能不能區分 mean 和 50%」。
誰會選錯:把 mean 和 median(50%)搞混的人。看到「中間值」就想到「平均值」,或反過來,是初學者最常見的混淆。
字面在說什麼:facebook 欄的第三四分位數(Q3)是 11.94。
為什麼不對:describe() 中 facebook 欄:25%=11.940(這是 Q1)、75%=43.680(這是 Q3)。11.94 是 Q1(第一四分位數,25th percentile),不是 Q3(第三四分位數,75th percentile)。這題在考「你有沒有記住 25% = Q1,75% = Q3」。
誰會選錯:不清楚四分位數對應的百分位數,把 25% 和 75% 搞混,以為 25% 是「第三」的人(從最小值往上數第一個四分位點,稱為「下四分位數 Q1」,不是第三)。
同個考點下次怎麼變形
直覺:如果 mean 和 50%(中位數)差很多,代表資料的分佈有什麼特徵?
答案:代表資料有偏態(skewness)。mean > median 代表正偏態(右偏):少數極大值拉高了均值,大多數資料集中在較小的值(例如收入分佈)。mean < median 代表負偏態(左偏):少數極小值拉低了均值。銷售資料中,少數超暢銷遊戲的高銷售額會讓 mean 高於 median,這是正偏態的典型表現。
直覺:facebook 欄 count=199,youtube count=200,怎麼知道 facebook 有幾個缺失值?
答案:缺失值個數 = len(df) - count = 200 - 199 = 1。或者直接用 df['facebook'].isna().sum() 得到 1。describe() 的 count 告訴你「這欄有幾個有效值」,用總行數減掉就是缺失值個數。在 df.head() 的輸出也能看到 index 1 的 facebook 是 NaN,直接佐證。
直覺:用 IQR 方法定義離群值的標準公式是什麼?
答案:低於 Q1 - 1.5×IQR 或高於 Q3 + 1.5×IQR 的值是離群值(Tukey's fence)。以 youtube 為例:Q1=89.25、Q3=262.59、IQR=173.34。下界 = 89.25 - 1.5×173.34 = -170.76(不存在負銷售額,實際下界是 0);上界 = 262.59 + 1.5×173.34 = 522.60(youtube 的 max=355.68 未超過,所以沒有高端離群值)。箱型圖(boxplot)就是根據這個公式標記離群點的。
直覺:describe() 在機器學習流程中什麼時候最重要?
答案:EDA(探索性資料分析)階段:特徵縮放之前,看各特徵的值域(min/max)決定是否需要標準化;模型訓練之前,看 count 確認有無缺失值需要填補;診斷模型效果時,比較預測值和真實值的 describe() 輸出,確認模型不會有系統性偏差。describe() 是 EDA 的第一步,是資料科學家的「生命體徵檢查」。
直覺:如果 describe() 的 std 很大,代表什麼?對建模有什麼影響?
答案:std 大代表資料分散,各樣本之間的值差異很大。例如 youtube std=103.025,而 mean=176.451,代表許多樣本的 youtube 廣告費用和平均值差距超過 100 萬元。對建模的影響:線性迴歸等對尺度敏感的模型,std 大的特徵需要做標準化(Standard Scaler),否則該特徵會主導梯度下降的方向,讓訓練不穩定或收斂慢。
想再往下看,這 5 個
- 描述性統計(Descriptive Statistics)describe() 輸出就是描述性統計摘要,count/mean/std/min/max/四分位數涵蓋了集中趨勢和離散程度的核心指標。
- 資料視覺化(Data Visualization)describe() 的四分位數直接對應箱型圖(boxplot)的五數摘要,配合視覺化能更直觀看出分佈形狀。
- 資料填補(Data Imputation)describe() 的 count 欄揭露缺失值,是決定填補策略的第一步:以平均值、中位數還是眾數填補?
- 特徵縮放(Feature Scaling)describe() 的 mean 和 std 是標準化(Z-score scaling)的必要參數:z = (x - mean) / std。
- 線性迴歸(Linear Regression)本題資料集是迴歸分析的前置 EDA,describe() 讓分析師在建立迴歸模型前了解各特徵的分佈特性。