seaborn入門_「様々なデータの可視化手法」
こんにちは、ワタルです。
さっと見て、「あぁそうだったそうだった」と確認できるハンドブックのような存在を目指して。
pandas入門第1回目、「様々なデータの可視化手法」です。
はじめに
このエントリでは、以下の関数を学習することができます。
pyplot.hist(data) seaborn.jointplot(data1,data2) seaborn.distplot(data) seaborn.boxplot(data) seaborn.violinplot(data)
- はじめに
- おまじない
- ヒストグラムをプロットする
- 2つのヒストグラムを同時にプロットする
- sns.jointplot(data1,data2)結合分布表示
- カーネル密度推定のプロット
- seaborn.boxplot(data)箱ひげ図のプロット
- seaborn.violinplot(data)バイオリン図を描く
- 終わりに
おまじない
import numpy as np from numpy.random import randn import pandas as pd #描画のためのライブラリです。 import matplotlib.pyplot as plt import seaborn as sns # ブラウザ内に画像を埋め込むための命令です %matplotlib inline
ヒストグラムをプロットする
ヒストグラムを描くことで、データの概要をつかむことができます。
#正規分布に従う乱数を作ります。 dataset1 = randn(100) plt.hist(dataset1) #デフォルトは、bins=10 #binsというのは、ヒストグラムの棒の数 >>> (array([ 2., 2., 6., 19., 16., 23., 16., 9., 4., 3.]), array([-2.4821785 , -1.99590527, -1.50963205, -1.02335882, -0.5370856 , -0.05081237, 0.43546086, 0.92173408, 1.40800731, 1.89428053, 2.38055376]),
引数color
#データセットをもう一つ作ります。 dataset2 = randn(80) #引数colorで色を指定することができます plt.hist(dataset2,color='indianred') >>> (array([ 3., 6., 10., 15., 25., 11., 8., 1., 0., 1.]), array([-2.53975366, -1.9111417 , -1.28252975, -0.65391779, -0.02530583, 0.60330612, 1.23191808, 1.86053004, 2.48914199, 3.11775395, 3.7463659 ]),
引数normed
plt.hist(dataset1, normed=True) >>> (array([ 0.24336855, 0.2704095 , 0.2163276 , 0.2163276 , 0.40561425, 0.40561425, 0.3244914 , 0.29745045, 0.18928665, 0.13520475]), array([-1.7284242 , -1.35861471, -0.98880522, -0.61899573, -0.24918624, 0.12062325, 0.49043274, 0.86024223, 1.23005172, 1.59986121, 1.9696707 ]), <a list of 10 Patch objects>)
2つのヒストグラムを同時にプロットする
複数のヒストグラムを同時にプロットすることもできます。
plt.hist(dataset1,normed=True,alpha=0.5,bins=20) plt.hist(dataset2,normed=True,alpha=0.5,bins=20, color='indianred') >>> (array([0.03977016, 0.07954033, 0.03977016, 0.19885082, 0.07954033, 0.3181613 , 0.35793147, 0.23862098, 0.47724196, 0.51701212, 0.23862098, 0.19885082, 0.07954033, 0.23862098, 0.03977016, 0. , 0. , 0. , 0. , 0.03977016]), array([-2.53975366, -2.22544768, -1.9111417 , -1.59683573, -1.28252975, -0.96822377, -0.65391779, -0.33961181, -0.02530583, 0.28900014, 0.60330612, 0.9176121 , 1.23191808, 1.54622406, 1.86053004, 2.17483601, 2.48914199, 2.80344797, 3.11775395, 3.43205993, 3.7463659 ]), <a list of 20 Patch objects>)
sns.jointplot(data1,data2)結合分布表示
先ほどよりデータ点を増やして、それぞれをx軸、y軸におき、同時にプロットすることもできます。 これによって、データの粗密を感じることができます。
data1 = randn(1000) data2 = randn(1000) # 同時分布(結合分布) sns.jointplot(data1,data2) >>> <seaborn.axisgrid.JointGrid at 0x1a1d155cc0>
引数kind
引数にkind='hex'を与えると、六角形で表示されます。
sns.jointplot(data1,data2,kind='hex')
>>>
カーネル密度推定のプロット
ここでは、ヒストグラムとカーネル密度推定を同時にプロットしてみます。 引数で色やラベルを指定することもできます。
sns.distplot(data1, kde_kws={'color':'indianred','label':'KDE PLOT'}, hist_kws={'color':'blue','label':"HISTOGRAM"}) >>>
seaborn.boxplot(data)箱ひげ図のプロット
boxplotというメソッドでは、日本語でいう箱ひげ図を描くことができます。
sns.boxplot(data1) >>>
seaborn.violinplot(data)バイオリン図を描く
violinplotは、boxplotの様な外形をしつつ、カーネル密度推定の情報量を兼ね備えたものになります。
sns.violinplot(data1) >>>
終わりに
今回は、様々なデータの可視化方法について学びました。
お疲れ様でした!
次回はこちら
それじゃー、また。