[python]データをどうやって可視化するか

はじめに


kaggleのcompetitionなど、機械学習を行う際にはまず最初にやるのはデータの可視化ではないでしょうか。そしてデータの可視化にはseabornを使うことが多いかと思います。でもグラフにも色々種類があってどれを使うか迷ってしまうことってありませんか?(僕はあります)「どのメソッドを使うとこういうグラフが描けるよ」という説明はたくさんあるのですが、「どういう状況ではこのグラフが良いよ」という説明は少ない気がしました。そこで、ここでは説明変数と目的変数の種類ごとにseabornのどのメソッドを使えばよいのかまとめてみました。


環境は python: 3.6.6 seaborn: 0.10.0


説明変数:離散量(カテゴリ) 目的変数:離散量


まずは説明変数、目的変数ともに離散量(カテゴリ)の場合。seabornのcountplotを用います。目的変数の各カテゴリがそれぞれどれだけ存在するのか描画します。countplotの引数xに説明変数を、hueに目的変数を渡します。データはtitanicです。


import pandas as pd
import seaborn as sns

data=pd.read_csv("train.csv")
sns.countplot(x='Embarked', data=data, hue='Survived')

なお、xとhueを逆にしても良いです(どちらが良いかは好みの問題?)。


sns.countplot(x='Survived', data=data, hue='Embarked')


説明変数:連続量 目的変数:離散量


次に説明変数が連続量、目的変数が離散量の場合。seabornのdistplotで目的変数のカテゴリ毎の説明変数の分布を描画します。


g=sns.FacetGrid(data=data, hue='Survived', size=5)
g.map(sns.distplot, 'Fare')
g.add_legend()

このように引数hueを持たないメソッドで色分けする方法は別記事でも解説しましたのでご参照ください(Seabornでhueを引数に持たないメソッドでも色分けをする方法)。


説明変数:離散量 目的変数:連続量


次に説明変数が離散量、目的変数が連続量の場合。seabornのviolinplotで説明変数のカテゴリ毎の目的変数の分布を描画します。データにはkaggleのHouse Pricesを用います。


train_data=pd.read_csv("train.csv")
sns.violinplot(x="MSZoning", y="SalePrice", data=train_data)

説明変数:連続量 目的変数:連続量


最後に説明変数、目的変数ともに連続量の場合。seabornのjointplotで説明変数と目的変数の相関関係を描画します。


sns.jointplot(x="LotArea", y="SalePrice", data=train_data)

このjointplotは2変数の相関関係とそれぞれの分布が同時に分かる優れものです。



まとめ


以上をまとめると下の表のようになります。



最新記事

すべて表示

概要 フィッティングを行いたい場合、pythonならばscipy.optimize.leastsqなどでできます。 しかし、フィッティングを行う場合、フィッティングパラメータに条件を付けたい場合も多々あります。 例えば、下記のようにパラメータa、bは共に正の範囲で最適な値を求める、という感じです。 f(x, a, b)=a*x^2+b (a>0 and b>0) 今回はそんな手法についてご紹介しま

靴を大切にしよう!靴管理アプリ SHOES_KEEP

納品:iPhone6.5①.png

靴の履いた回数、お手入れ回数を管理するアプリです。

google-play-badge.png
Download_on_the_App_Store_Badge_JP_RGB_blk_100317.png

テーマ日記:テーマを決めてジャンルごとに記録

訂正①2040×1152.jpg

ジャンルごとにテーマ、サブテーマをつけて投稿、記録できる日記アプリです。

google-play-badge.png