Pythonのグラフ表示ライブラリseabornを試してみる

スポンサーリンク

グラフ表示ライブラリseaborn

前回、ダミーデータ作成プログラムをアップデートして、機械学習のデータっぽいデータを出力できるようにしました。

Pythonでファイル数、行数、列数を指定してダミーデータのファイルを生成するプログラムを作ってみた その3:機械学習用データのダミーデータとして、ターゲットデータを出力できるようにする
機械学習用データ今回は前に作成したダミーデータ作成プログラムをさらにアップデートしていこうと思います。今回変更する点としては、一番最後の列に教師ありの機械学習で使う予想する結果の列「target」を出力するという点...

ということで今、3PySciがどこに向かっているのか分かってもらえた前回の記事だと思います。

そう今目指しているのはPythonで機械学習をすること。

そのためのPandasを色々いじってきたわけです。

ということで今回も機械学習を目指して行くわけですが、今回はグラフ表示でこれまでとは違うライブラリseabornを使ってみようと思っています。

前にmatplotlibの解説をして、さらにPandasの.plot()なんかを解説してきたのですが、どいうやらseabornではもっと楽にそしてもっと綺麗にグラフ表示ができるらしいです。

ということでものは試し、まずは使ってみようということです。

データは前回アップデートしたダミーデータ作成プログラムで作成したこちらのデータ。

まずはPandasで読み込んで、表示してみましょう。

import pandas as pd

df = pd.read_csv("python-seaborn-1_data1.txt", index_col = 0)

df

実行結果

今回はこのデータを元にseabornライブラリでどんなグラフが描けるのか紹介していきます。

そしてまた別の機会にmatplotlibと比較していくということをやっていきましょう。

スポンサーリンク

seabornのインポート

seabornを使うにはインポートする必要があります。

import seaborn as sns

seabornはsnsとしてインポートするのが慣例らしいので、とりあえず「as sns」をつけておきます。

またjupyter notebookでグラフを表示するのにマジックコマンドを足しておきましょう。

%matplotlib inline

ここであれ?っと思った方もいるかもしれません。

そうseabornはmatplotlibを元としてさらに見やすいとか使いやすいといった改良を加えたライブラリなのです。

また前はマジックコマンドとして「%matplotlib notebook」としていました。

Pythonでグラフ表示 matplotlib 〜折れ線グラフ、マジックコマンド、表示範囲の制限〜
グラフ描写ライブラリmatplotlibとは?これまで文字や数字をどうやって扱うかを解説してきました。そろそろ文字や数字だけの出力は飽きてきたのではないでしょうか?やっぱり数字を扱い始めたら、やりたくなるのが、グラ...

「%matplotlib notebook」では拡大縮小できて便利なのですが、どうもseabornとは相性が悪いのか、かなり動作が重くなってしまいました。

ということで今回は単にグラフを表示する「%matplotlib inline」を使っていきたいと思います。

ということで先ほどのPandasを加えて、インポートするライブラリはこんな感じになります。

import pandas as pd
import seaborn as sns
%matplotlib inline

それではseabornを使っていきましょう。

スポンサーリンク

pairplot

一番最初に紹介したいのは、pairplot。

なんとデータの二つの列からなる散布図を全ての組み合わせに対して自動で作ってくれる機能なのです。

これを紹介したいがためにseabornの記事を書いているといってもいいかもしれません。

コマンドは「sns.pairplot(データ)」だけです。

import pandas as pd
import seaborn as sns
%matplotlib inline

df = pd.read_csv("python-seaborn-1_data1.txt", index_col = 0)

sns.pairplot(df)

実行結果

たった1行のコマンドだけで、これだけ複雑なグラフが描けるのはかなり便利ですよね。

さらにオプション「hue=”列名”」を追加することで、その列のデータで分類することができます。

import pandas as pd
import seaborn as sns
%matplotlib inline

df = pd.read_csv("python-seaborn-1_data1.txt", index_col = 0)

sns.pairplot(df, hue="target")

実行結果

「target」の列の「0」が青色に「1」が橙色に分類されました。

さらに斜めのラインのグラフが棒グラフから線グラフに変わっていますが、こちらは意図したものではありません。

コマンドが簡単になった分、こういった中で自動で調整する部分が出てきてしまうのは仕方がない。

データをぱっと見て解析するという目的なので、多少のことは気にしないようにしましょう。

スポンサーリンク

lmplot

次はlmgplotというコマンドです。

こちらは散布図をプロットし、その回帰直線を自動で計算して表示してくれるコマンドです。

使い方は「sns.lmplot(x=”X値のデータ”, y=”Y値のデータ”, data=データ)」です。

import pandas as pd
import seaborn as sns
%matplotlib inline

df = pd.read_csv("python-seaborn-1_data1.txt", index_col = 0)

sns.lmplot(x="value_1", y="value_2", data=df)

実行結果

斜めの線が回帰直線、その周りにある青いエリアが95%信頼区間です。

https://ja.wikipedia.org/wiki/信頼区間

信頼区間に関してはちょっと正確には説明できませんが、95%の確率でデータの分布がその領域に入ってくると考えていいと思います。

こちらも「hue=”データ列”」をオプションに追加することで、データを分類して表示することができます。

import pandas as pd
import seaborn as sns
%matplotlib inline

df = pd.read_csv("python-seaborn-1_data1.txt", index_col = 0)

sns.lmplot(x="value_1", y="value_2", hue="target", data=df)

実行結果
スポンサーリンク

jointplot

次はjointplotです。

こちらは散布図と合わせて、X軸、Y軸に対してヒストグラムを表示できるコマンドです。

使い方は「sns.jointplot(x=”X値のデータ”, y=”Y値のデータ”, data=データセット)」です。

import pandas as pd
import seaborn as sns
%matplotlib inline

df = pd.read_csv("python-seaborn-1_data1.txt", index_col = 0)

sns.jointplot(x="value_1", y="value_2", data=df)

実行結果
スポンサーリンク

catplot

ここまでは一つのコマンドで複雑なグラフを描くコマンドでした。

次のcatplotは単純なグラフを描くコマンドですが、オプションで違う形式のグラフに変えることができます。

基本の使い方としては「sns.catplot(x=”X値のデータ”, y=”Y値のデータ”, data=データセット)」です。

import pandas as pd
import seaborn as sns
%matplotlib inline

df = pd.read_csv("python-seaborn-1_data1.txt", index_col = 0)

sns.catplot(x="target", y="value_1", data=df)

実行結果

これは何というグラフと言えばいいか分かりませんが、X軸側が分類項目になっているときに使えそうです。

boxplot

catplotのオプションとして「kind=”box”」を追加することで箱ひげ図にすることができます。

ということでコマンドは「sns.catplot(x=”X値のデータ”, y=”Y値のデータ”, kind=”box”, data=データセット)」という感じです。

import pandas as pd
import seaborn as sns
%matplotlib inline

df = pd.read_csv("python-seaborn-1_data1.txt", index_col = 0)

sns.catplot(x="target", y="value_1", kind="box", data=df)

実行結果

bar plot

次はbar plot、つまり棒グラフです。

catplotを棒グラフとして使うには、オプションで「kind=”bar”」を追加します。

つまり「sns.catplot(x=”X値のデータ”, y=”Y値のデータ”, kind=”bar”, data=データセット)」ということです。

import pandas as pd
import seaborn as sns
%matplotlib inline

df = pd.read_csv("python-seaborn-1_data1.txt", index_col = 0)

sns.catplot(x="target", y="value_1", kind="bar", data=df)

実行結果

エラーバーまで出してくれるのでかなり楽にデータを眺められますね。

point plot

次は線グラフです。

線グラフの場合は「kind=”point”」とします。

つまり「sns.catplot(x=”X値のデータ”, y=”Y値のデータ”, kind=”point”, data=データセット)」となります。

import pandas as pd
import seaborn as sns
%matplotlib inline

df = pd.read_csv("python-seaborn-1_data1.txt", index_col = 0)

sns.catplot(x="target", y="value_1", kind="point", data=df)

実行結果

こちらもエラーバーまで出してくれるので感覚を掴むのに楽でいいです。

まだまだ他にも描けるグラフはあるのですが、使いそうなもののみピックアップしてみました。

特にpairplotはそれぞれの値の相関を見るのにすごく役立ちます。

ただその分、データの処理や描写に時間がかかってしまうという難点があります。

そんな場合はデータを保存してしまう方が、後でじっくり解析できます。

データを描写と同時に保存するには「.savefig(“保存する場所+保存する名前”)」をpairplotのコマンドの最後に追加します。

import pandas as pd
import seaborn as sns
%matplotlib inline

df = pd.read_csv("python-seaborn-1_data1.txt", index_col = 0)

sns.pairplot(df, hue="target").savefig("pairplot.png")

もしくは一度グラフを変数に格納して、先ほどの.savefig()で保存するという手もあります。

import pandas as pd
import seaborn as sns
%matplotlib inline

df = pd.read_csv("python-seaborn-1_data1.txt", index_col = 0)

figure = sns.pairplot(df, hue="target")
figure.savefig("pairplot.png")

どちらも実行すると下のグラフがプログラムがあるフォルダに「pairplot.png」という名前で保存されます。

maplotlibでX軸やY軸、凡例なんかを自分で追加していくよりも、簡単にグラフが描けるのがいいですね。

特に列名や行名がしっかり入っているPandasと相性が良いので、Pandasを使っているときには積極的にseabornを使っていきたいものです。

ということで次回はそろそろ機械学習への勉強に入っていきたいと思います。

Python機械学習ライブラリScikit-learn その1:Scikit-learnをインストールして、練習用irisのデータを読み込んでみる
機械学習ライブラリScikit-learn前回はseabornライブラリを使って、複雑なグラフを簡単に描く方法を解説しました。今回は機械学習ライブラリScikit-learn (sklearn)というものを使って、...

ではでは今回はこんな感じで。

コメント

タイトルとURLをコピーしました