箱ひげ図


matplotlib

import matplotlib.pyplot as plt

# yがyesとnoのときのcolumn1データを抽出
# ここでの抽出は y == yes で該当する行が全て取り出されている
y_yes = df[df["y"] == "yes"]
y_no = df[df["y"] == "no"]

# 縦軸をcolumn1で箱ひげ図を書きたい
# yesとnoのデータをまとめる
# 格納先へ = [y_yesのcolumn1の値抽出, y_noのcolumn1の値抽出]
y_column1 = [y_yes["column1"], y_no["column1"]]

# 箱ひげ図の描画
# y_column1に分けて格納したデータに対してboxplotする
plt.boxplot(y_column1)

# x軸(横軸)とy軸(縦軸)のラベルを追加
plt.xlabel("y")
plt.ylabel("column1")

# gca(get current axes)では直前まで作ったaxes部分(今回はboxplotとラベル)をaxに取得する
ax = plt.gca()

# ここまででは、x軸の2つのboxへの分類ラベルは未設定

# 取得しておいたaxにx軸の2つのboxの分類ラベルを追加
# xticklabelsで、x軸の目盛りラベルを設定
plt.setp(ax,xticklabels = ['yes','no'])
plt.show()

gcaについて

matpltlib内には
用紙としてfigure
キャンバスとしてaxes
枠内に引く線としてline
という階層構造がある。

gca(get current axes)
1. figure内にplt.boxplot(y_column1)でboxplotが描画される。
2. axesにboxplotが描画され横軸と縦軸を追加
3. axesに行なった操作を plt.gca() として ax に取得しておく
4. x軸の分類ラベルは xticklabels で加筆

今回はこのような流れになっているはず。

seaborn

量的変数の分布

import seaborn as sns

sns.boxplot(y="column3", data=df)

カテゴリー別の量的変数の分布

sns.boxplot(x="y",y="column1", data=df)

# (x,y)=(カテゴリー、量的)

boxの並びの指定

sns.boxplot(x="y",y="column1",order=["yes","no"], data=df)

box内を別の質的変数で分ける


sns.boxplot(x="category2", y="column1", hue="y", data=df)