3秒でわかる
データの散らばり方を箱とひげで描く seaborn の関数。カテゴリごとの分布を並べて比べ、外れ値の位置を一目で掴むために使います。
もう少し詳しく
どういうものか
sns.boxplot は、数値データの分布を箱ひげ図として描く関数です。箱の下端が第1四分位数、中の線が中央値、上端が第3四分位数を表します。箱の高さが四分位範囲 IQR で、真ん中の半数がどれくらいの幅に収まっているかを示します。
ひげは、箱の端から IQR の 1.5 倍以内に収まる最も遠い実データまで伸びます。そこからはみ出た値は個別の点として描かれます。
なぜ必要か
平均値だけを見ると、散らばり方の違いが消えます。平均が同じ2つのグループでも、片方は全員が近い値、もう片方は極端な値が混ざっている、ということが起こります。箱ひげ図なら、中心の位置と散らばりの幅と外れ値を1つの図で同時に確認できます。
カテゴリごとに箱を横に並べられるので、地域別や機種別の比較を数行のコードで作れます。
具体例
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset("tips")
sns.boxplot(data=tips, x="day", y="total_bill", hue="smoker")
plt.title("day vs total_bill")
plt.show()
# 実データの点も重ねると、箱だけでは見えない密度が分かる
sns.stripplot(data=tips, x="day", y="total_bill", color="black", size=3, alpha=0.4)
plt.show()つまずきやすいところ
showmeans=True を指定しますviolinplot や histplot に切り替えます似た用語との違い
| 関数 | 見せ方 |
|---|---|
| boxplot | 四分位と外れ値。比較に強い |
| violinplot | 分布の形そのもの。山が2つでも分かる |
| histplot | 1変数の度数分布 |
覚え方
箱は真ん中の半数、ひげは常識的な範囲、点はその外側。この3段階で読むと解釈がぶれません。