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)
- figure内にplt.boxplot(y_column1)でboxplotが描画される。
- axesにboxplotが描画され横軸と縦軸を追加
- axesに行なった操作を plt.gca() として ax に取得しておく
- 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)