はじめに
Pythonのライブラリであるseabornによる棒グラフによる可視化の方法を解説します。
月見
seabornをマスターするとデータ分析が圧倒的に高速で描画の美的センスも高めることができます。
実行環境
Anacondaをインストールし、JupyterNotebookで実行します。
- Anacondaのインストール方法
可視化方法
使用するデータ
タイタニック号の生存者と死者のデータを使用します。
import seaborn as sns
import pandas as pd
# Load Titanic dataset
titanic = sns.load_dataset("titanic")
titanic = pd.DataFrame(titanic)
titanic
データの件数 (頻度) を集計し、棒グラフで可視化する
基本
タイタニック号の性別データを使用してみましょう。
sns.countplot(titanic["sex"], hue=None, data=None, order=None,
hue_order=None, orient=None, color=None, palette='Set2',
saturation=1, ax=None)
titanic[“sex”]を引数としてプロットしています。
- 縦軸:人数(カウント)
x, y | 集計対象の列名。x に指定した場合縦方向に、y に指定した場合横方向にグラフを描画します。 |
---|---|
hue | 各軸をさらに分割して集計する場合に利用する列名を指定。 |
data | 集計対象のデータフレーム。 |
order | 出力する順番を文字列のリストで指定。 |
hue_order | 上記 hue で指定した列を出力する順番を文字列のリストで指定。 |
color | 各列の色をリストまたはパレットで指定。 |
palette | 上記 hue で指定した列の色リストまたはパレットで指定。 |
saturation | 色の彩度。1 に近いほど彩度が高く、0 に近いほど彩度が低くなる。 (デフォルト値: 0.75) |
ax | 軸を重ねて出力する場合に指定。 |
**kwargs | matplotlib の plt.bar で定義されている引数を設定可能です。参考: matplotlib で棒グラフを描く |
hueを使って細かく分析する方法
例えば、classの男女子供の数をカウントしたいとき。
sns.countplot(x="class", hue="who", data=titanic, palette='Set2')
colを使って複数の棒グラフを描く
複数の棒グラフを描きたい場合は以下です。
sns.catplot(x="class", hue="who", palette='Set2', col="survived",
data=titanic, kind="count",
height=4, aspect=.7);
なるほど、死人(survived = 0)には、男性が多いんですね。ということがわかったりする。
データの平均値と信頼区間を出力し棒グラフで可視化
sns.barplot(x="sex", y="survived", data=titanic,palette='Set2')
黒い線が信頼区間です。バーの高さが平均値になります。例えばこの結果から、女性の方が生存率が高いことがわかります。
x, y | 集計対象の列名。x に指定した場合縦方向に、y に指定した場合横方向にグラフを描画します。 |
---|---|
hue | 各軸をさらに分割して集計する場合に利用する列名を指定。 |
data | 集計対象のデータフレーム。 |
order | 出力する順番を文字列のリストで指定。 |
hue_order | 上記 hue で指定した列を出力する順番を文字列のリストで指定。 |
estimator | (デフォルト値: ) |
ci | 信頼区間の幅。None を指定すると、ブートストラップを行わず、エラーバーも出力しません。 (デフォルト値: 95) |
n_boot | 信頼区間を求めるために行うブートストラップの繰り返し回数。 (デフォルト値: 1000) |
units | マルチレベルでブートストラップを行う際にサンプリング単位。data で指定したデータフレームの列名または、配列で指定。 (デフォルト値: None) |
orient | グラフの向きを指定。”v”(vertical, 垂直) または、”h” (horizontal, 水平) のいずれかを指定。 |
color | 各列の色をリストまたはパレットで指定。 |
palette | 上記 hue で指定した列の色リストまたはパレットで指定。 (デフォルト値: None) |
saturation | 色の彩度。1 に近いほど原色に近く、0 に近いほど白・黒に近い色合いで出力。 (デフォルト値: 0.75) |
errcolor | 信頼区間を示すバーの色。/td> |
errwidth | 信頼区間を示すバーの幅 |
capsize | 信頼区間を示すバーの終端の線(キャップ)のサイズ |
ax | 軸を重ねて出力する場合に指定。 |
hueを使って細かく分析する方法
sns.barplot(x="class", y="survived", hue ="sex" , data=titanic,palette='Set2')
colを使って複数の棒グラフを描く
sns.catplot(x="class", y="survived",hue="who", palette='Set2', col="embarked",
data=titanic,kind="bar",
height=4, aspect=.7);
コメント