Pythonでグラフを作成するツールには、matplotlib、seaborn、plotnineなどがあります。
今回は、seabornを勉強します。
勉強はseabornのチュートリアルを読みながら進めていきました。
実行環境にはGoogle Colaboratoryを用いました。
seabornのインポート
import seaborn as sns
データセットの読み込み
seaborn.load_datasetを用いてデータセットを読み込みます。
tips = sns.load_dataset("tips")
データセットを確認してみます。
tips.head()
データの可視化
seaborn.relplot
seaborn.relplotを用いて、2つの変数間の関係を可視化します。
tipsデータセットのtotal_billとtipの関係を可視化します。
sns.relplot(data=tips, x="total_bill", y="tip")
テーマの適用
seaborn.set_themeを用いてテーマを適用します。
以下のコードでは、デフォルトのテーマを適用します。
sns.set_theme()
sns.relplot(data=tips, x="total_bill", y="tip")
以下のコードでは、tickを適用します。
sns.set_theme(style="ticks")
sns.relplot(data=tips, x="total_bill", y="tip")
曜日ごとで色分け
hue="day"を加え、曜日ごとで色分けします。
sns.relplot(data=tips, x="total_bill", y="tip", hue="day")
時間でグラフを分ける
col="time"を加え、時間でグラフを分けます。
sns.relplot(data=tips, x="total_bill", y="tip", hue="day", col="time")
Lunchは木曜日と金曜日が多く、Dinnerは土曜日と日曜日が多いことがわかります。
人数でプロットの大きさを分ける
size="size"を加え、人数でプロットの大きさを分けます。
sns.relplot(data=tips, x="total_bill", y="tip", hue="day", col="time", size="size")
seaborn.lmplot
seaborn.lmplotを用いて、回帰モデルを可視化します。
sns.lmplot(data=tips, x="total_bill", y="tip", hue="day", col="time")
散布図に回帰直線がつきました。
seaborn.displot
seaborn.displotを用いて、ヒストグラムを作成します。
sns.displot(data=tips, x="tip", col="time")
カーネル密度推定の結果をつける
kde=Trueを加え、カーネル密度推定の結果をつけます。
sns.displot(data=tips, x="tip", col="time", kde=True)
LunchとDinnerの分布が異なることがわかります。
ECDFを可視化
kde=Trueを削除し、kind="ecdf"を加え、ECDFを可視化します。
ECDFとは、累積分布関数を推定したものです。
sns.displot(data=tips, x="tip", col="time", kind="ecdf")
カーネル密度推定の結果がついたヒストグラムよりわかりづらいですが、LunchとDinnerの分布が異なることがわかります。
seaborn.catplot
seaborn.catplotを用いて、変数の分布を棒グラフで可視化します。
sns.catplot(data=tips, kind="bar", x="time", y="tip")
tipは、LunchよりDinnerのほうが多い傾向があります。
total_billも見てみます。
sns.catplot(data=tips, kind="bar", x="time", y="total_bill")
total_billも、LunchよりDinnerのほうが多い傾向があります。
バイオリンプロット
kind="violin"に変更し、バイオリンプロットを作成します。
sns.catplot(data=tips, kind="violin", x="time", y="total_bill")
seaborn.jointplot
seaborn.jointplotを用いて、散布図とヒストグラムを可視化します。
sns.jointplot(data=tips, x="total_bill", y="tip")
seabornを用いて、1つのデータセットから様々なグラフを作成できることがわかりました。
勉強を続けて、自由自在にグラフを作成できるようになりたいです。
参考文献
https://seaborn.pydata.org/index.html
https://note.nkmk.me/python-matplotlib-seaborn-basic/
https://qiita.com/s-yonekura/items/dc16ef05aec78322367e