こんにちは!
今回は、Pythonでの箱ひげ図の書き方を紹介していきます。
この記事を読むことで
- 箱ひげ図とは
- 箱ひげ図が表す意味
- Pythonでの箱ひげ図の書き方
がわかるようになります。
箱ひげ図とは
箱ひげ図とは以下のような図を指し、データのばらつきをわかりやすく示すことができます。子のグラフから分散や歪度をおよそ把握できます。
箱と、その両側(上下)に出るひげから「箱ひげ図」と呼ばれています。英語では”box plot”などと表現します。
箱ひげ図が表す意味
箱ひげ図では直感的にデータのばらつきを把握することができますが、図からきちんと情報を読み解くには少し知識が必要です。
例えば、
- 箱の範囲が表す意味は?
- ひげの長さの意味は?
- 上下の点は何?
といったことについて、知っておく必要があります。
箱ひげ図は五数要約を表す
箱ひげ図は、五数要約と呼ばれる統計量を表すグラフです。
五数要約とは、
- Q0/4:最小値
- Q1/4:第1四分位点
- Q2/4:中央値
- Q3/4:第3四分位点
- Q4/4:最大値
のことを指します。グラフのどの部分がどの値を表しているのかは、以下の図にまとめました。
第1四分位、第3四分位とは?
四分位とは聞き馴染みの無い言葉です。なんとなく文字から推測できるかもしれませんが、データを4つに分割したときの境目の値を指します。
つまり、第1四分位とはデータの下から25%の値を指し、第3四分位は下から75%の値を指します。
このことから、箱ひげ図の箱はデータの25~75%の部分を示しているということがわかります。
箱を区切る線は中央値
注意したいのが、箱を2つに区切る線は中央値を示しているということです。平均値ではないので気をつけてください。
ちなみに、箱ひげ図から平均値を読み取ることはできません。
外れ値がある場合
箱ひげ図の書き方によっては、下図のように外れ値が示される場合があります。
ひげの上下にある〇1つ1つが外れ値です。外れ値とみなす閾値は決まっていて、最小値以下の外れ値には
Q1/4 – 1.5(Q3/4 – Q1/4)
の値より小さいものが該当します。
言葉にすると、「第1四分位から箱の長さ×1.5を引いた値より小さい値が外れ値」ということになります。
一方、最大値以上の外れ値は
Q3/4 + 1.5(Q3/4 – Q1/4)
ということになります。
ここまでで、箱ひげ図についてある程度理解できたと思います。
ここからは、Pythonで実際に箱ひげ図を描いていこうと思います。
Pythonで箱ひげ図を描く
使用するデータ
今回も、ボストンの住宅価格データを使います。
import pandas as pd
from sklearn.datasets import load_boston
data = load_boston()
name = pd.DataFrame(data.target).rename(columns={0:"name"})
df = pd.DataFrame(data.data, columns=data.feature_names).merge(name, left_index=True, right_index=True)
df = pd.DataFrame(data.data, columns=data.feature_names)
箱ひげ図を描く
Pythonでは、matplotlibを使うことで箱ひげ図を描くことができます。
描き方は非常にシンプルで、以下のようなコードで描けます。
import matplotlib.pyplot as plt
plt.boxplot(df["AGE"])
複数のグラフを並べる
複数のグラフを並べたいときは、データを必要な数だけ渡してあげると描画されます。
#それぞれのデータのリスト
data = [df["INDUS"], df["RAD"]]
plt.boxplot(data)
#軸ラベルを変えた
plt.xticks([1,2], ["INDUS", "RAD"])
df[“INDUS”, “RAD”]みたいな感じにしてしまうとエラーが出ます。微妙な違いですが、注意してください。
また、箱ひげ図を並べるときは、それぞれのスケールに注意が必要です。スケールが異なるデータを並べると、箱ひげ図がつぶれてわけがわからなくなります。
Pythonでデータサイエンスするなら
Pythonでデータサイエンスをするなら、以下の書籍がおすすめです。Pandas、matplotlib、Numpy、scikit-learnといったデータサイエンスに必要なライブラリを、体系立てて一通り学ぶことができます。
ややお値段高めですが、これ1冊で十分という内容・ボリュームなので、損はしないと思います^^
まとめ
箱ひげ図について少しでも理解を深めていただけたでしょうか。
あまり見かけない図かもしれませんが、知っておいて損はないと思います。
よく見る年収のグラフなんかも箱ひげ図で描いたら面白いのでは?と思います(余談ですが)。
ではでは👋