あれもPython,これもPython

Pythonメモ※本サイトはアフィリエイトを利用しています

Pandasで可視化をしたい(非集計系)

この続きで、今回は集計ではなく分布などを確認するヒストグラム、箱ひげ、散布図です。

esu-ko.hatenablog.com

ヒストグラム

plot.histhistで挙動やパラメータが違うようです。(ややこしい!) さらにsubplots,groupby,byによって表示が変わります

#列ごとにヒストグラムを表示
iris.plot.hist(subplots=True)

#あるカテゴリでわけた後に列を色を変えてヒストグラムを表示
iris.groupby('Species').plot.hist(alpha=0.5)

#ある変量をカテゴリごとに色分けしてヒストグラムを表示
iris.groupby('Species')['sepal length (cm)'].plot.hist(alpha=0.5)

#カテゴリでグラフを分けて、ある変量のヒストグラムを表示
iris[['Species','sepal length (cm)']].hist(by='Species')
#iris.hist(by='Species',column='sepal length (cm)')
f:id:esu-ko:20200808001039p:plainf:id:esu-ko:20200808001118p:plainf:id:esu-ko:20200808001131p:plainf:id:esu-ko:20200808001149p:plain

変量ごとにグラフを分けて、その中でカテゴリごとに色違いのヒストグラムを出す、はできないようです。

箱ひげ図

#一つのグラフないに列ごとの箱を表示
iris.boxplot()
#iris.plot.box()

#複数のグラフに一つ一つの列の箱を表示
iris.plot.box(subplots=True)

#カテゴリごとにグラフをつくり、列ごとの箱を表示
iris.groupby('Species').boxplot()

#列ごとにグラフをつくり、カテゴリで箱を表示
iris.boxplot(by='Species')

#一つの列対し、カテゴリごとの箱を表示
iris.boxplot(by='Species',column='petal length (cm)')
f:id:esu-ko:20200808002554p:plainf:id:esu-ko:20200808002608p:plainf:id:esu-ko:20200808002633p:plainf:id:esu-ko:20200808002700p:plainf:id:esu-ko:20200808002711p:plain

散布図

iris.plot.scatter(x='sepal length (cm)',y='sepal width (cm)')

#forなしでカテゴリーごとに色を変える
iris.assign(c=pd.factorize(iris['Species'])[0]).plot.scatter(x='sepal length (cm)',y='sepal width (cm)',c='c',colormap='winter')


#カテゴリーごとにグラフを変え、第三変数で色を変える
iris.groupby('Species').plot.scatter(x='sepal length (cm)',y='sepal width (cm)',c='petal width (cm)')

#大きさまでは変えられない
#iris.groupby('Species').plot.scatter(x='sepal length (cm)',y='sepal width (cm)',c='petal width (cm)',s='petal length (cm)')

#量が多い時はhexbinが使える
iris.plot.hexbin(x='sepal length (cm)',y='sepal width (cm)',gridsize=10)

#カテゴリでグラフを分けてhexbin
#なお別の画像扱いになるため下記ではsetosaのみ
iris.groupby('Species').plot.hexbin(x='sepal length (cm)',y='sepal width (cm)',gridsize=10)
f:id:esu-ko:20200808005223p:plainf:id:esu-ko:20200808005232p:plainf:id:esu-ko:20200808005242p:plainf:id:esu-ko:20200808005258p:plainf:id:esu-ko:20200808005306p:plain