箱ひげ図をPythonで表示する方法を解説していきます。
箱ひげ図を知らない場合でも、知っておいても損はありません。
いや、これを機会に箱ひげ図ぐらいは知っておきましょう。
今は、高校数学で箱ひげ図を学ぶようなので。
「先輩(課長・部長)、箱ひげ図も知らないんっすか?」
こんな風には言われたくはありませんよね。
本記事の内容
- 箱ひげ図とは?
- 箱ひげ図の用途
- 箱ひげ図をPythonで作るための環境を準備する
- 箱ひげ図をMatplotlibで表示する
それでは、上記に沿って解説していきます。
箱ひげ図とは?
箱ひげ図は、データの分布を大雑把に把握するためのモノです。
早速ですが、箱ひげ図のグラフを確認しましょう。
上図は、数学のテストの点数を箱ひげ図で表現したモノです。
点数結果は以下。
[30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]
最小値と最大値の説明は不要ですね。
中央値は、平均ではありません。
中央値は、データ数が奇数か偶数かで求め方が異なります。
奇数 | 真ん中のデータ |
偶数 | 真ん中のデータ2つの平均 |
上記で示した数学のテスト結果は、14個で偶数です。
この場合、60と65が真ん中のデータ2つにあたります。
よって、中央値はその平均62.5となります。
上図においても、中央値の位置が大体合っていますね。
あとは、第1四分位と第3四分位の説明が必要です。
第1四分位は、データを小さい順に並べた時の下から25%の位置にある値のことです。
第3四分位は、データを小さい順に並べた時の下から75%の位置にある値のことです。
ここで、「あれ、第2四分位は?」となりますよね。
実は、中央値は第2四分位(50%の位置)でもあります。
以上が、箱ひげ図の説明です。
高校数学で出るぐらいなので、そこまで複雑なモノではありません。
じゃあ、この箱ひげ図はどう使うのでしょうか?
何のために箱ひげ図を利用するのでしょうか?
このことを次で説明します。
箱ひげ図の用途
箱ひげ図の用途を確認していきます。
データ分布を把握するという用途があるのは、大前提です。
次のグラフを見てください。
上図は、数学と英語のテスト結果を表した箱ひげ図です。
単体の箱ひげ図から、データの分布は確認できます。
でも、上図のように複数の箱ひげ図を並べることでそのデータ分布の度合を比較できます。
数学と英語なら、科目が違うからそれほど違和感は感じません。
しかし、これが同じ数学テストの結果ならどう感じますか?
上図は、同じ内容の数学テストを受けた結果だとします。
昨年度の入学生と今年度の入学生の結果を比較しているケースです。
昨年度は、できるできないの差が激しいと感じるはずです。
今年度は、能力に格差はないが全体的に高いと判断できます。
このような分析がすぐにできるのが、箱ひげ図の良いところです。
そこからさらに詳細を知りたいなら、数値を確認していく形になるでしょう。
以上、箱ひげ図の用途に関する解説です。
次は、この箱ひげ図を作るための準備について説明していきます。
箱ひげ図をPythonで作るための環境を準備する
箱ひげ図をPythonで作るためには、Matplotlibライブラリが必要です。
そこでMatplotlibをインストールしていきます。
最初に、現状のインストール済みパッケージを確認しておきます。
>pip list Package Version ---------- ------- pip 21.0.1 setuptools 53.0.0
次にするべきことは、pip自体の更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip
では、Matplotlibのインストールです。
Matplotlibのインストールは、以下のコマンドとなります。
pip install matplotlib
インストールは、すぐに終わります。
では、どんなパッケージがインストールされたのかを確認しましょう。
>pip list Package Version --------------- ------- cycler 0.10.0 kiwisolver 1.3.1 matplotlib 3.3.4 numpy 1.20.1 Pillow 8.1.0 pip 21.0.1 pyparsing 2.4.7 python-dateutil 2.8.1 setuptools 53.0.0 six 1.15.0
たくさんのパッケージがインストールされました。
これで、Matplotlibを用いてグラフを表示できるようになっています。
しかし、このままでは日本語をグラフ上には表示できません。
WindowsとLinuxに関しては、それぞれ日本語化対応の方法をまとめています。
日本語化対応を行う場合には、参考にしてください。
Windows
Linux(Ubuntu/Debian)
ここまで行えば、準備が整いました。
次は、実際に箱ひげ図をPythonのプログラミングで表示してみましょう。
箱ひげ図をMatplotlibで表示する
以下は、上記で出てきた「箱ひげ図の用途」グラフを作成するサンプルコードです。
import matplotlib.pyplot as plt # 数学の点数 math = [30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95] # 英語の点数 english = [60, 63, 67, 70, 72, 73, 74, 75, 76, 77, 80, 83, 87, 90] # 点数 points = (math, english) # 箱ひげ図 fig, ax = plt.subplots() bp = ax.boxplot(points) ax.set_xticklabels(['数学', '英語']) plt.title('箱ひげ図の用途') plt.ylabel('点数') plt.ylim([0, 100]) plt.grid() # 保存 plt.savefig("test.png")
たった、これだけのコードで箱ひげ図を作成できます。
上記のサンプルコードを実行すると、プログラムと同じフォルダ上にtest.pngが作成されます。
なお、日本語化対応していないと、日本語部分が文字化けしてしまいます。