箱ひげ図は、四分位点を用いて、与えられたデータがどのように分布しているかを示すものです。
データの広がりを見つけることは、探索的データ解析(EDA)の重要な部分です。
このために、ヒストグラムや密度プロットのような既存のツールがあります。
しかし、箱ひげ図には、この2つに比べて大きな利点があります。
箱ひげ図は、非常に小さな面に多くの情報を詰め込み、1つのプロット上で2つ以上の変数を比較するときに便利です。
この記事では、箱ひげ図とは何か、その使い方、そしてPythonを使って箱ひげ図を実装する方法について紹介します。
Boxplot を解釈する
箱ひげ図は、5つの要約統計量に基づいてデータの分布を表示します。
- 第一四分位値 (Q1)
- 第3四分位値 (Q3)
- 最小値
- 最大値
- 中央値
分布の中の値の範囲に注目します。
#Import the required modules import numpy as np
import pandas as pd
data = pd.read_csv( 'Titanic.csv' )
#Plotting Boxplot of Age column boxplot = data.boxplot(column = [ 'Age' ])
|
1. Boxplotsで提供されるサマリー
- 中央値(Median)。中央値とは、中央の2つの数値の平均値です。
- 第一四分位値(Q1): 第一四分位値(Q1): 中央値の左側にあるデータポイントの中央値です。25位とも呼ばれる。
- 第3四分位値(Q3): 第3四分位値(Q3): 中央値より右側のデータポイントの中央値。
- 四分位範囲(IQR): Q3 – Q1 または 25 パーセンタイルから 75 パーセンタイルの間のデータ。
- 最小値 Q1 -1.5 ㎤* IQR(外れ値を除く)。
- 最大値 Q3 + 1.5 ㎤* IQR (外れ値を除く)
2. 外れ値
箱ひげ図は、データから外れ値を見つけるのに非常に適している。
ボックスプロットで外れ値を検出する最も一般的な方法は、1.5 x IQR ルールです。
Q1 – 1.5xIQR より小さいデータポイント、Q3 + 1.5xIQR より大きいデータポイントは外れ値とみなされる。
Python で箱ひげ図を実装する
Boxplots は多くのプロットライブラリを用いてプロットすることができます。
Pythonを使ってBoxplotを作成する方法を確認しましょう。
タイタニックデータセットを使って、プロットのデモを行います。
1. Pandasの使用
Pandas には dataframe に対して呼び出される boxplot
メソッドがあり、入力引数としてプロットする必要のあるカラムを指定するだけです。
boxplot = data.boxplot(column = [ 'Age' ], by = [ 'Sex' ])
|
boxplot = data.boxplot(column = [ 'Age' ] , by = [ 'Sex' , 'Survived' ] , notch = True )
|
もし、データに性別などのカテゴリ値がある場合、パンダはそれぞれのカテゴリに基づいてボックスプロットを作成することができます。
これをどのように行うか見てみましょう。
#Importing required modules import seaborn as sns
import pandas as ppd
data = pd.read_csv( 'Titanic.csv' )
sns.boxplot(data = data , x = 'Survived' , y = 'Age' , hue = 'Sex' )
|
sns.boxplot(data = data , x = 'Survived' , y = 'Age' , hue = 'Sex' , notch = True ) |
また、複数のカラムのリストを渡して、提供されたカラムに基づいてデータをグループ化し、ボックスプロットを作成することができます。
# importing required modules import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv( 'Titanic.csv' )
plt.boxplot(data.Age.dropna() , labels = [ 'Age' ])
plt.show() |
plt.boxplot([data.Fare , data.Age.dropna()] , labels = [ 'Fare' , 'Age' ])
plt.show() |
ノッチを True に設定すると、中央値の信頼区間を示すボックスプロット上のノッチが表示されます。
データセットに対して boxplot
メソッドを使用すると、ボックスプロットの視覚化が非常に速くなります。
2. Seabornの使用
Seabornを使うと、出版物用の高品質な箱ひげ図を作成することができます。
さっそくやってみましょう。
例えば、生存者と死亡者の年齢を性別でグループ分けした箱ひげ図が欲しいとします。
seabornの箱ひげ図には hue
引数があり、これを使うと便利です。
3. matplotlibの使用
seaborn ライブラリを使うと、より少ないコード行数でより美しいプロットを作成できますが、実は seaborn は matplotlib の上に構築されています。
matplotlib には boxplot を作成するメソッドがあり、 boxplot
と呼ばれる便利なメソッドです。
それでは、matplotlib を使って boxplot を作ってみましょう。
複数の変数をリストとして渡すことで、ボックスプロットを作成することができます。
まとめ
この記事では、箱ひげ図について、その重要性と使用目的について説明しました。
また、pandas、seaborn、matplotlibの各ライブラリを使用して独自の箱ひげ図を作成するコードも実装しました。