▶ 行・列ごとに描画する、グリッド表示について解説した記事もあります。PairGrid( ), Pairplot( ), FacetGrid( )については以下の記事をご覧ください。
はじめに
これまでいろんなグラフを描いてきました。可視化することで得られることが多いことを実感できたでしょうか?今回は、カテゴリ別のプロットをおこなうことで、「比較」する方法を扱います。データから何かを読み取ろうとするときに大きな力を発揮します。
サンプルデータ
サンプルデータは、これまでにつかったseabornにあらかじめ用意されているtipsを使いましょう。
tips=sns.load_dataset('tips')
tips.head()
カテゴリ別にプロット
ここからはカテゴリ別に比較するのに便利ないろんなグラフを見ていきましょう。seabornライブラリのseabron.catplot()を使います。引数kindの値を変えることで、指定されたプロット関数を呼び出してくれます。
strip plot (ストリップチャート)
ストリップチャートは、一次元散布図のことです。同一の値があった場合は、(たぶん)少しずらしてプロットすることで密度もわかるようになっています。tipsデータセットのdayに曜日が格納されているので、これをカテゴリとして指定(x軸)して、y軸に総支払額を指定下ストリップチャートを描いてみましょう。
sns.catplot(x='day',y='total_bill',data=tips)
すごいっ!たった一行で個のプロットを描けるなんて・・・。平日よりも土日のほうが、総支払額が広い範囲にわたってますね。金曜日よりも木曜日のほうがデータも多く、総支払額も高い傾向があることがわかります。
swarm plot (スウォームチャート)
ストリップチャートでは同一の値の要素が重なっていたのに対し、スウォームチャートは重ならないように描いたものです。
sns.catplot(x='day',y='total_bill',data=tips,kind='swarm')
これも同様に一行で描けます。 似たような値がどれくらいあるか、が視覚的にわかりますね。縦横を変えるのも簡単にできます。これは、カテゴリ変数をy軸に指定するだけです。
sns.catplot(x='total_bill',y='day',data=tips,kind='swarm')
box plot (箱ひげ図)
次は箱ひげ図 箱ひげ図では,長方形(はこ)と線(ひげ)を使って「最大値・最小値・四分位数」の情報を表現します。
sns.catplot(x='day',y='total_bill',data=tips,kind='box')
これも引数kindにboxを指定するだけです。簡単ですね。boxplotは、箱の下側が第1四分位数、箱の上側が第3四分位数、箱の真ん中の横線が第2四分位数(中央値)となります。箱の上下のひげは最大値、最小値を表しています。この箱ひげ図をみることで、箱の中は全体の 25%~75%のデータと一目でわかります。データの分布をおおざっぱに把握することができます。
violin plot (バイオリン図)
今度はバイオリンプロットです。バイオリンプロットはヒストグラムを90度回転させたような形となります。箱ひげ図よりもデータの分布がわかりやすい、というメリットがあります。
※箱の外にもデータはあるのに、箱ひげ図だとなんとなくデータがないイメージがありませんか?(わたしだけ!?)
sns.catplot(x='day',y='total_bill',data=tips,kind='violin')
カウントプロット
最後にカウントプロットです。xにカテゴリ変数、yの指定をせずに、kind=’count’でデータの個数をカウントした棒グラフを描くことができます。
sns.catplot(x='day',data=tips,kind='count')
他のカテゴリ別プロットでも同様ですが、カテゴリ別プロットに引数hueで別のカテゴリ変数を指定することもできます。
sns.catplot(x='day',data=tips,kind='count',hue='sex')
まとめ
いかがでしたか?たくさんのグラフを扱いましたが、どれもたった一行で指定できるのは驚きですね。しかもkindに指定する値を変えるだけでした。このようにseabornは大変強力なライブラリです。是非、積極的に活用していきたいですね。
▶ カテゴリごとに散布図を描く方法も紹介しています。以下の記事をどうぞ。
▶ 自由にグラフを並べて比較したい場合は以下の記事を参考にしてください。
コメント