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)
はいこの通り。
・回帰直線がデフォルトで出るので、
sns.lmplot(x="x",y="y",data=df,fit_reg=False)
と書けば出なくなる。
カンタン!
orderを変えればn次曲線で回帰線が引ける。
sns.lmplot(x="x",y="y",data=df,order=2)
綺麗に出ました。
余談
複数のリストを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はいいぞ
ありがとうございました。