▶ matplotlibによる可視化を基本から解説しています。以下の投稿も合わせてご覧ください。
はじめに
今回は箱ひげ図を取り扱います。これはデータのばらつきを見る際につかいます。前回、ヒストグラムを扱いましたが、箱ひげ図では複数のデータのばらつきを比較することができるので、こちらも是非押さえておきましょう。matplotlibで簡単に描くことができます。
箱ひげ図
箱ひげ図とは
箱ひげ図の解説は総務省統計局の「なるほど統計学園」の記載がわかりやすいです。
箱ひげ図は四分位数を用いてデータの散らばりを表します。四分位数とはデータを小さい順に並べて、4等分したものです。小さい値から数えて、総数の1/4番目に当たる値が第1四分位数、真ん中に当たる値が第2四分位数(=中央値)、3/4番目にあたる値が第3四分位数となります。そして、箱ひげ図の中央の線は中央値になります。平均値ではないので注意しましょう。分布に偏りがある場合は、平均は箱の外側にある場合もあります。
https://www.stat.go.jp/naruhodo/4_graph/shokyu/hakohige.html
これを図で表すと以下のようになります。
「第3四分位点-第1四分位点」を四分位範囲といいIQR(Interquartile Range)で表します。第3四分位範囲より+1.5IQRの点が最大値、第1四分位範囲より-1.5IQRの点が最小値となり、この範囲に入らない点は外れ値として扱います。
書式
matplotlibで描く場合の書式を確認しておきましょう。
箱ひげ図を描く
早速、確認してみましょう。データは前回と同様にseabornにあらかじめ準備されている学習用のデータセットを使うことにします。
# ライブラリのインポート
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# データセットの読み込み
df = sns.load_dataset('tips')
df.head()
早速、tips列で箱ひげ図を描いてみましょう。
# 箱ひげ図の描画
plt.boxplot(df['tip'])
簡単ですね。性別で箱ひげ図を描きたいときにはxの部分を配列で与えます。
# 男女別のtipのデータ
male = df.query('sex=="Male"')['tip']
female =df.query('sex=="Female"')['tip']
# 男女別のtipデータの箱ひげ図
plt.boxplot([male,female],labels=['Male','Female'])
このようにすると、男女別の分布がどのようになっているかを比較できますね。matplotlibでは男女別のデータを配列で与える必要がありますが、seabornを使うと次のように一発で描画することができます。
# seabornで男女別のtipのデータを描画
sns.boxplot('sex','tip',data=df)
まとめ
今回は箱ひげ図について解説しました。細かな分布まではわかりませんが、連続変数の分布がカテゴリ変数ごとでどのように違うかを比較するときなどに重宝しますね。書式はヒストグラムの場合とほとんど変わりません。慣れてしまうと、seabornで描画するほうが簡単で便利ですね!
コメント