【Pandas】データフレームからクラスごとに色分けされた散布図を2行で作成する方法

前提

以下のようなPandasのデータフレームがあったとします。

# pandasをimportしていること前提
# dfはpandas.DataFrame(100 rows × 3 columns)
df.head()
  y x f
0 6 8.31 C
1 6 9.44 C
2 6 9.50 T
3 12 9.07 C
4 10 10.16 T

ここから列fのクラス(C/T)ごとに色分けした凡例付きの散布図を作成したい。

方法

以下の2行のコードで簡単に実現できます(Python 3.6で確認)。

import seaborn as sns
sns.scatterplot(x='x', y='y', hue='f', data=df)

f:id:mimosom:20190501111219p:plain

ラクですね。

同じことは、以下のようなコードでも実現できます*1。

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
for name, group in df.groupby('f'):
ax.plot(group.x, group.y, marker='o', linestyle='', ms=8, label=name)
ax.legend()
plt.show()

f:id:mimosom:20190501102629p:plain

他にもplt.scatter()でx, yにクラスごとのデータを代入する方法など色々あるかと思いますが、拘りがなければseabornのscatterplot()が一番楽かと思います。

以上です。

 

コメント