・お題:綺麗なグラフを簡単に作成し、データの分布や関係を見たい。
・ややこしいコマンドを書かず、とにかく綺麗なグラフで変数の関係を一目で分かるようにしたい。一つ一つのグラフを作成するなら、seabornというライブラリがとても便利。聞きなれないプロットがたくさん出てくるので、メモしておきたい。
・とりあえず、パッケージをインポートする(インストールは割愛)。
import seaborn as sns
import numpy as np
import pandas as pd
・次に、データセットを作成。
X=np.random.normal(0,10,100)
Y=[ np.random.normal( 0,5 ) + i*1.3 for i in X ]
Z=[ np.random.normal( 0,10) + i*3 for i in X ]
S=[ abs( i+10 )*10 + 1 for i in X ]
df=pd.DataFrame( zip(X, Y, Z), columns = ["X", "Y", "Z"])
①histplot
sns.histplot(X)
②boxplot
sns.boxplot(data=df)
③swarmplot
sns.swarmplot(data=df)
⑥scatterplot
sns.scatterplot(X,Y,hue=Z,s=S)
hueという引数に、実数を与えると色の濃淡、カテゴリカル変数を与えると色分けしてくれるみたい(下図)。
import random
M=[random.choice(["A","B","C"]) for n in range(100)]
sns.scatterplot(X,Y,hue=M,s=S)
⑤pairplot
sns.pairplot(data=df)
⑥jointplot
プロットがたくさんあった方が見栄えが良いので、データセットを作り直す。
A=np.random.normal(0,10,1000)
B=[np.random.normal(0,5) + i*1.3 for i in A]
df2=pd.DataFrame(zip(A,B),columns=["A","B"])
sns.jointplot(x="A",y="B",data=df2)
真ん中が重なって見にくいので、引数kind="hex"を与える。
sns.jointplot(x="A",y="B",data=df2,kind="hex")
⑦lineplot
にょろにょろしていた方が見栄えが良いので、データセットを作り直す。
X=np.linspace(0,10,100)
A=np.sin(X)
B=np.cos(X)
df3=pd.DataFrame(zip(A,B),columns=["sin","cos"])
sns.lineplot(data=df3)
ちょっとおしゃれで楽しい。
おわり