【Python】箱ひげ図とは?図の読み方と書き方を紹介

こんにちは!

今回は、Pythonでの箱ひげ図の書き方を紹介していきます。

この記事を読むことで

  • 箱ひげ図とは
  • 箱ひげ図が表す意味
  • Pythonでの箱ひげ図の書き方

がわかるようになります。

箱ひげ図とは

箱ひげ図とは以下のような図を指し、データのばらつきをわかりやすく示すことができます。子のグラフから分散や歪度をおよそ把握できます。

箱ひげ図の例
Wikipediaより引用

箱と、その両側(上下)に出るひげから「箱ひげ図」と呼ばれています。英語では”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冊で十分という内容・ボリュームなので、損はしないと思います^^

まとめ

箱ひげ図について少しでも理解を深めていただけたでしょうか。

あまり見かけない図かもしれませんが、知っておいて損はないと思います。

よく見る年収のグラフなんかも箱ひげ図で描いたら面白いのでは?と思います(余談ですが)。

ではでは👋