2歩戻ったら2.5歩進みたい

関東で働くweb developerのブログ

seabornで散布図を描く

はじめに

・seabornを使って散布図を書く。

・seabornとは、pythonのグラフ描画ライブラリである

 matplotlibのラッパー

・matplotlibよりも書きやすいし、簡単に豊かな表現ができるので、

 人に見せる時や探索的データ解析する際に非常にお世話になる

・毎回書き方を忘れてしまうのと、自分でデータを作るのも慣れてないので覚え書き的に書いていく。

書いてみる

%matplotlib inline
import seaborn as sns
import pandas as pd
import random

#xは1~100で乱数を生成する。
x=[]
for i in range (40):
  x.append(random.randint(1,100))

#yはxの2乗に1~5000までの乱数を足して多少バラつきを足す
y=[]
for i in range(40):
  y.append(pow(x[i],2)+random.randint(2,5000))

#DataFrameに入れる
df=pd.DataFrame({"x":x,"y":y})

#プロット
sns.lmplot(x="x",y="y",data=df)

f:id:canisterism:20180308222012p:plain

はいこの通り。

・回帰直線がデフォルトで出るので、

sns.lmplot(x="x",y="y",data=df,fit_reg=False)

と書けば出なくなる。

f:id:canisterism:20180308222019p:plain

カンタン!

orderを変えればn次曲線で回帰線が引ける。

sns.lmplot(x="x",y="y",data=df,order=2)

f:id:canisterism:20180308221947p:plain

綺麗に出ました。

余談

複数のリストをDataFrameにまとめるとき、

df=pd.DataFrame({"a":[1,2,3],"b":[4,5,6]})

って感じで辞書型で置くのが慣れなくて毎回戸惑ってしまう。

pd.DataFrame(a,b)

で書きたい。

seabornでデータを指定する時も戸惑う。

sns.lmplot(x="a",y="b",data=df)

という感じで、カラム名を文字列で指定するのが微妙にピンと来ない。

sns.lmplot(x=df.a,y=df.b)

と書きたいが、とりあえず慣れるしかないので頑張る。

まとめ

・基本的には文字列でカラムを指定して、

実際のDataFrameはdataの引数にまとめて突っ込めば良い。

・慣らすために散布図だけ書いたが、もっと色々と便利なのでそのうち紹介していく

・seabornはいいぞ

ありがとうございました。