【Python】seabornの色々な分布図を扱う – distplot, jointplot, pairplot

Pythonデータ分析の基礎
スポンサーリンク

Pythonの描画ライブラリであるseabornの導入の方法はわかりました。特にこれまでの方法とそれは変わりませんね。

ここからはseabornでグラフの描画をやって行こうと思います。

seabornにはネット上(GitHub)に利用可能なデータセットが用意されています。

https://github.com/mwaskom/seaborn-data

この中にあるデータセットをload_dataset()を使って読み込んで使うことができるので、ここでもそれを利用して行きましょう。

まず、ここでは分布図を見て行くことにします。

スポンサーリンク

データの分布図を見ていく

ここからはデータの分布図を扱うことにします。データの分布を視覚化するには次のdistplot()、jointplot()、pairplot()といったメソッドを扱うことになります。これらを順に見ていくことにしましょう。

ではseabornのインポートから始めましょう。

import seaborn as sns
%matplotlib inline

tips = sns.load_dataset('tips')
tips.head()

jupyter notebookを利用するので、ここでは%matplotlib inlineも記述しています。

先ほども触れたように、seabornにあらかじめ用意してあるデータセットの’tips’をload_dataset()で読み込みtipsに格納しています。head()でデータの冒頭5つを表示します。

このデータを使ってグラフの表示をして行きましょう。(或いは、自分で適当なデータを作って利用しても構いません)

distplot()

distplot()は1つの変数データについての分布を示すことができます。

total_billの項目のデータを使ってグラフにプロットしてみます。

sns.distplot(tips['total_bill'])
sns.set()

tipsのtotal_billを指定して、distplot()に渡しています。

 

ここでは棒グラフの他に、それに沿って描かれてる曲線が表示されています。これはカーネル密度関数(kde)で、細かい説明は別のところに譲るとして、要するにヒストグラムの分布からそれを滑らかになるように推定したものを表示したものと考えておけばよいでしょう。

このグラフのビン(bins)は自動的に表示されています。ビンとは、サンプルデータをグラフ用に並べ替えるために使用する、等間隔の区間のことです。

このグラフのkdeを非表示にして、binsを30として表示しなおしてみます。

次のコードで書き換えることができます。

sns.distplot(tips['total_bill'], kde=False, bins=30)

kde=false, bins=30としています。

kdeの曲線が非表示になり、ビン数が変更されているのがわかります。

jointplot()

distplot()は1つのデータでしたが、jointplot()は2つの変数データを組み合わせて表示して比較することができます。グラフの種類には“scatter”、“reg”、“resid”、“kde”、“hex”といったものがあります。

scatter

ここではtotal_billとtipのデータを使ってみます。

sns.jointplot(x='total_bill', y='tip', data=tips, kind='scatter')

ここではkindにscatterを適用してみました。

 

x軸、y軸に対応した分布が表示され、それぞれの軸に対応したヒストグラムも表示されているのがわかります。

hex

hexを指定すれば、六角形のヒートマップとして表示することができます。

sns.jointplot(x='total_bill', y='tip', data=tips, kind='hex')

 

reg

regはregressionで回帰直線を表示することができます。

/* Your code... */
sns.jointplot(x='total_bill', y='tip', data=tips, kind='reg')

 

pairplot()

pairplot()は、データ全体の対の関係を視覚化することができます。

sns.pairplot(tips)

次のように表示されます。

操作自体はとても簡単ですね。

また、クラスごとにデータの色を変えたい場合は、hue引数にクラスに相当するカラム名を指定します。ここではhueにsexを指定して性別で分けてみます。

sns.pairplot(tips, hue='sex', palette='coolwarm')

ここでは、性別の色をpaletteにcoolwarmで指定してカラーリングしています。

グラフとしても意味の取りやすいものとなったのがわかると思います。

スポンサーリンク

最後に

Pythonのデータ視覚化ライブラリseabornに用意されているデータセットをload_dataset()を使って読み込んでグラフを描画してみました。

ここでは、distplot()、jointplot()、pairplot()といったメソッドで分布のプロットを視覚化してみました。

なお、ここではwarningが出ることがありますが、ここでの説明上は全く問題ないので無視してもかまいません。パッケージをアップデートすればwarningが消えるものもあります。

MacにインストールしたAnacondaのアップデート方法
MacにインストールしたAnacondaを使っていますが、パッケージなどのアップデートがあれは更新する必要も出てきます。ここでは、Anacondaのアップデートの方法についてまとめてみました。

他にもメソッドはありますので、公式ドキュメントなどに目を通すといいでしょう。

その他のものは今後扱っていく場面で出てきたときに触れて行こうと思います。

タイトルとURLをコピーしました