箱圖簡介
箱型圖是一種用作顯示一組數據分布情況的統計圖,因型狀如箱子而得名。
1977年由美國著名統計學家約翰·圖基(John Tukey)發明。它能顯示出一組數據的最大值、最小值、中位數及上下四分位數。

其中,中位數(50%),上四分位數(75%)和下四分位數(25%)都很好理解。
上邊緣和下邊緣的概念是不確定的,一般有以下幾種情況(不限於以下幾種情況):
- 所有數據中的最大值和最小值
- 在[Q1-1.5IQR, Q3+1.5IQR]范圍里的極小值和極大值 (通常被稱為Tukey Boxplot)
- 在平均數的基礎上上下浮動一個標准差
- 第9百分位數,第91百分位數
- 第2百分位數,第98百分位數
- 等等。。。
至於異常值,也就是比上邊緣大,比下邊緣小的值,如果上下邊緣是左右數據中的最大值和最小值,那么就不會有異常值。
數據預處理中的箱圖
箱圖最大的優勢是以一種簡單的方式顯示了數據的分布情況。
而我們在數據預處理之前,整體上了解數據各個特征的分布情況是非常有必要的,通過箱圖,了解數據的質量。
比如:
- 偏離中間值的情況,看中位數的位置
- Q1和Q3之間數據的量,看箱體的長短
- 異常值多不多,偏離大不大,通過調整上下邊緣來查看
了解數據各個特征(也就是每列)的質量和分布情況,有助於后續決策如何清洗數據,如何選擇合適的算法來分析不同的特征。
示例
最后,通過一個簡單的實例來演示如何通過箱圖來檢驗數據的情況的。
數據來源:國家統計局歷年糧食產量的統計數據。
數據比較多,這里為了演示,只取了3列來作圖。
中稻和一季晚稻單位面積產量(公斤/公頃)
亞麻單位面積產量(公斤/公頃)
其他谷物單位面積產量(公斤/公頃)
冬小麥單位面積產量(公斤/公頃)
雙季晚稻單位面積產量(公斤/公頃)
夏收糧食單位面積產量(公斤/公頃)
大豆單位面積產量(公斤/公頃)
大麥單位面積產量(公斤/公頃)
大麻單位面積產量(公斤/公頃)
小麥單位面積產量(公斤/公頃)
早稻單位面積產量(公斤/公頃)
春小麥單位面積產量(公斤/公頃)
棉花單位面積產量(公斤/公頃)
油料單位面積產量(公斤/公頃)
油菜籽單位面積產量(公斤/公頃)
煙葉單位面積產量(公斤/公頃)
烤煙單位面積產量(公斤/公頃)
玉米單位面積產量(公斤/公頃)
甘蔗單位面積產量(公斤/公頃)
甜菜單位面積產量(公斤/公頃)
秋糧單位面積產量(公斤/公頃)
稻谷單位面積產量(公斤/公頃)
糧食單位面積產量(公斤/公頃)
糖料單位面積產量(公斤/公頃)
紅小豆單位面積產量(公斤/公頃)
綠豆單位面積產量(公斤/公頃)
胡麻籽單位面積產量(公斤/公頃)
芝麻單位面積產量(公斤/公頃)
花生單位面積產量(公斤/公頃)
苧麻單位面積產量(公斤/公頃)
葵花籽單位面積產量(公斤/公頃)
蔬菜單位面積產量(公斤/公頃)
薯類單位面積產量(公斤/公頃)
谷子單位面積產量(公斤/公頃)
谷物單位面積產量(公斤/公頃)
豆類單位面積產量(公斤/公頃)
馬鈴薯單位面積產量(公斤/公頃)
高粱單位面積產量(公斤/公頃)
麻類單位面積產量(公斤/公頃)
黃紅麻單位面積產量(公斤/公頃)
前3列數據如下:
print(data)

根據3個特征箱圖如下:
box1, box2, box3 = data["中稻和一季晚稻單位面積產量(公斤/公頃)"], data["亞麻單位面積產量(公斤/公頃)"], data["其他谷物單位面積產量(公斤/公頃)"]
plt.title("sample for 箱圖")
labels = ["中稻和一季晚稻", "亞麻", "其他谷物"]
plt.boxplot([box1, box2, box3], labels=labels)
plt.show()

從圖中可以看出,其他谷物的數據分布比較平均,而中稻和一季晚稻的數據偏重於上半部,亞麻的數據沒有明顯的偏重。
此外,只有一個異常值(中稻和一季晚稻的零值數據)。
箱圖的默認上下邊緣數據是 Q3 + whis(Q3-Q1) 和 Q1 - whis(Q3-Q1),其中 whis = 1.5
我們可以通過調整 whis 的大小來調整上下邊緣的值,比如:
plt.boxplot([box1, box2, box3], labels=labels, whis=0.5)
這里 whis 設置為0.5,縮小了上下邊緣的間距,異常值就增多了。

總結
通過箱圖,可以直觀看出整個數據中各個特征的分布情況。
在數據預處理之前,用來了解收集數據的概況大有幫助。
