60
70

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

seabornで可視化 まとめ

Posted at

pythonでグラフを描いたり、可視化するのに seaborn がめちゃくちゃ便利です。
いつも忘れるのでメモとして残しておきます。

##必要なライブラリ

.py
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

#データ
今回は有名なtitanicのデータ + irisのデータでやります。

titanicのデータはkaggleのデータを使いました。

.py
train = pd.read_csv('train.csv')

irisのデータは、UCIのデータベースから取得してみました。
(こんなこと、やらなくていいです、、(笑)ちょっとやって見たかったので)

.py
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にもデータセットがあるようです。

.py
titanic = sns.load_dataset('titanic')
iris = sns.load_dataset('iris')

##barplot : データの平均値と信頼区間
平均値が高さで、信頼区間がエラーバーで表示されます。

.py

sns.set(style='darkgrid')
g = sns.barplot(x='Sex', y='Survived', data=train, palette='Set2')
g.set_ylabel('Survival Probability')

Screenshot from 2019-06-30 12-07-58.png

x , yにそれぞれのデータを入れて、paletteで色のスタイルを決めます。

##countplot : データ件数の集計

基本的に1変数の指定ですかね
y=train['Pclass']とすると横方向にグラフを描いてくれます。
pallete='Set3'が私は結構好きです。
palette で他に設定可能なのは Grays, Pastel1, Bluesなどたくさんあるので検索してみて下さい。

.py
sns.countplot(x=train['Pclass'], palette='Set3')

Screenshot from 2019-06-30 12-03-04.png

##distplot : ヒストグラム

seabornでヒストグラムを描く際には、distplotを使います。
kde は kernel density estimation(カーネル密度推定)で、表示したかったらTrue, 表示したくないならFalseを指定します。

binsはx軸の刻み目の指定です。

.py
sns.distplot(train['Age'], kde=False, bins=8, color='blue')

Screenshot from 2019-06-30 12-26-56.png

facetgrid

複数の kdeをひとつのプロットにかけます。

.py
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()

Screenshot from 2019-06-30 12-03-44.png

##factorplot : 種別比較図

デフォがポイントプロットになっています。他のグラフも表示可能で
kind=point, bar, count, box, violin, strip が指定可能です。

.py
sns.factorplot(x='Pclass',y='Age', hue='Sex', data=train, palette='pastel')

Screenshot from 2019-06-30 12-41-13.png

##heatmap : ヒートマップ

数値を表示させる場合、annot = True、にしないと表示されないので気をつけて下さい。

.py
df = train[['Age','Pclass','Fare','Survived']]
sns.heatmap(df.corr(), annot=True, fmt='.2f', cmap='summer')

Screenshot from 2019-06-30 12-04-58.png

scatterplot : 散布図

.py
sns.scatterplot(x='sepal-length', y='sepal-width', hue='target', data=data, palette='Set2')

Screenshot from 2019-06-30 12-05-40.png

pairplot : ペアプロット図(散布図行列)

.py
sns.pairplot(data, hue='target', size=2)

Screenshot from 2019-06-30 12-05-54.png

##jointplot :散布図+ヒストグラム

2変数間の分布を可視化できます。
相関変数とp-valueも表示してくれる。

.py
sns.jointplot(x=data['petal-length'], y=data['petal-length'],data=data, color='green')

Screenshot from 2019-06-30 12-35-24.png

+α(memo)

カラム情報の取得

.py
train.columns

Screenshot from 2019-06-30 12-02-27.png

最大値、最小値、平均、カウント

.py
train['Age'].max()  #80.0
train['Age'].min()  #0.42
train['Age'].mean()  #29.699
train['Pclass'].value_counts()

終わりに

seaborn とにかく可視化に使えます!
少しでも参考になればと思います。
ミスがありましたら、ビシバシご指摘お願いします。

60
70
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
60
70

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?