pythonでグラフを描いたり、可視化するのに seaborn がめちゃくちゃ便利です。
いつも忘れるのでメモとして残しておきます。
##必要なライブラリ
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
#データ
今回は有名なtitanicのデータ + irisのデータでやります。
titanicのデータはkaggleのデータを使いました。
train = pd.read_csv('train.csv')
irisのデータは、UCIのデータベースから取得してみました。
(こんなこと、やらなくていいです、、(笑)ちょっとやって見たかったので)
import requests
columns = ['sepal-length','sepal-width','petal-length','petal-width' ,'target']
data = pandas.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data", names=columns)
seabornにもデータセットがあるようです。
titanic = sns.load_dataset('titanic')
iris = sns.load_dataset('iris')
##barplot : データの平均値と信頼区間
平均値が高さで、信頼区間がエラーバーで表示されます。
sns.set(style='darkgrid')
g = sns.barplot(x='Sex', y='Survived', data=train, palette='Set2')
g.set_ylabel('Survival Probability')
x
, y
にそれぞれのデータを入れて、palette
で色のスタイルを決めます。
##countplot : データ件数の集計
基本的に1変数の指定ですかね
y=train['Pclass']
とすると横方向にグラフを描いてくれます。
pallete='Set3'
が私は結構好きです。
palette
で他に設定可能なのは Grays
, Pastel1
, Blues
などたくさんあるので検索してみて下さい。
sns.countplot(x=train['Pclass'], palette='Set3')
##distplot : ヒストグラム
seabornでヒストグラムを描く際には、distplot
を使います。
kde
は kernel density estimation(カーネル密度推定)で、表示したかったらTrue
, 表示したくないならFalse
を指定します。
bins
はx軸の刻み目の指定です。
sns.distplot(train['Age'], kde=False, bins=8, color='blue')
facetgrid
複数の kde
をひとつのプロットにかけます。
fig = sns.FacetGrid(train, hue='Sex', aspect=4)
fig.map(sns.kdeplot, 'Age', shade=True)
max_value = train['Age'].max()
fig.set(xlim=(0,max_value))
fig.add_legend()
##factorplot : 種別比較図
デフォがポイントプロットになっています。他のグラフも表示可能で
kind=
に point
, bar
, count
, box
, violin
, strip
が指定可能です。
sns.factorplot(x='Pclass',y='Age', hue='Sex', data=train, palette='pastel')
##heatmap : ヒートマップ
数値を表示させる場合、annot = True
、にしないと表示されないので気をつけて下さい。
df = train[['Age','Pclass','Fare','Survived']]
sns.heatmap(df.corr(), annot=True, fmt='.2f', cmap='summer')
scatterplot : 散布図
sns.scatterplot(x='sepal-length', y='sepal-width', hue='target', data=data, palette='Set2')
pairplot : ペアプロット図(散布図行列)
sns.pairplot(data, hue='target', size=2)
##jointplot :散布図+ヒストグラム
2変数間の分布を可視化できます。
相関変数とp-valueも表示してくれる。
sns.jointplot(x=data['petal-length'], y=data['petal-length'],data=data, color='green')
+α(memo)
カラム情報の取得
train.columns
最大値、最小値、平均、カウント
train['Age'].max() #80.0
train['Age'].min() #0.42
train['Age'].mean() #29.699
train['Pclass'].value_counts()
終わりに
seaborn とにかく可視化に使えます!
少しでも参考になればと思います。
ミスがありましたら、ビシバシご指摘お願いします。