[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でデータ解析を行っている。解析自体はpandasを用いて行い、最終結果はpandas.DataFrameの形式で保持されている。 この結果を他のアプリケーションで利用するため、json形式でファイル出力したい。 やり方 1...
現象 raspberry piでfirestoreをimportしようとするとタイトルのエラーが発生。 from from firebase_admin import firestore ImportError: Failed to import the Cloud...
概要 フィッティングを行いたい場合、pythonならばscipy.optimize.leastsqなどでできます。 しかし、フィッティングを行う場合、フィッティングパラメータに条件を付けたい場合も多々あります。 例えば、下記のようにパラメータa、bは共に正の範囲で最適な値を...
Comments