Pandas単体でも簡易的な散布図は描けますが、本格的に可視化する場合は Matplotlib や Seaborn と組み合わせて使うのが一般的です。
ここでは、基礎から応用まで段階的に詳しく説明します。
目次
基本的な散布図(Pandas内蔵機能)
Pandas の DataFrame.plot.scatter
を使えば、すぐに散布図を描画できます。
import pandas as pd
import matplotlib.pyplot as plt
# サンプルデータ作成
df = pd.DataFrame({
"x": [5, 7, 8, 7, 6, 9, 5, 6, 7, 8],
"y": [99, 86, 87, 88, 100, 86, 103, 87, 94, 78],
"category": ["A", "B", "A", "B", "A", "B", "A", "A", "B", "B"]
})
# 散布図を描画
df.plot.scatter(x="x", y="y")
plt.show()
この方法はシンプルですが、スタイル調整の自由度は低めです。
色分けやサイズ指定
散布図では「カテゴリ別に色分け」や「数値で点の大きさを変える」こともよくあります。
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({
"x": [5, 7, 8, 7, 6, 9, 5, 6, 7, 8],
"y": [99, 86, 87, 88, 100, 86, 103, 87, 94, 78],
"category": ["A", "B", "A", "B", "A", "B", "A", "A", "B", "B"]
})
# category列を数値に変換(A=0, B=1 など)
df["category_num"] = df["category"].astype("category").cat.codes
# 数値列を色に使う
df.plot.scatter(x="x", y="y", c="category_num", colormap="viridis", s=100)
plt.show()
c="category"
: 色をカテゴリで分けるcolormap="viridis"
: カラーマップを指定s=100
: 点のサイズを指定
Matplotlibを使ったカスタマイズ
Pandasは裏でMatplotlibを使っているので、より細かく制御したい場合は直接Matplotlibを使います。
plt.scatter(df["x"], df["y"], c=df["y"], cmap="plasma", s=100, alpha=0.7, edgecolors="k")
plt.xlabel("X values")
plt.ylabel("Y values")
plt.title("Custom Scatter Plot")
plt.colorbar(label="Y intensity")
plt.show()
ポイント
alpha=0.7
: 透明度を設定(点が重なるとき見やすくなる)edgecolors="k"
: 点に黒枠をつけるcolorbar()
: カラーマップの凡例を追加
Seabornでの散布図(おすすめ)
SeabornはPandasと相性がよく、カテゴリごとの色分けや回帰線の追加などが直感的にできます。
import seaborn as sns
sns.scatterplot(data=df, x="x", y="y", hue="category", size="y", palette="deep")
plt.show()
hue="category"
: カテゴリごとに色分けsize="y"
: 値に応じて点の大きさを変更palette="deep"
: カラーパレットを選択
さらに回帰直線を引くことも可能です。
sns.lmplot(data=df, x="x", y="y", hue="category", ci=None)
plt.show()
実用的なTips
- 大量データのとき →
alpha
で透明度を下げて重なりを見やすくする - カテゴリが多いとき → Seabornのカラーパレット(
palette="tab20"
など)を活用 - 相関を確認したいとき →
df.corr()
で数値的な相関を確認してから散布図を描くと効率的
まとめ
- Pandasだけ →
df.plot.scatter()
で簡易的に描ける - Matplotlib → デザインや凡例を細かく調整可能
- Seaborn → 見栄えがよく、色分け・回帰線などが簡単
以上、PythonのPandasで散布図を描画する方法についてでした。
最後までお読みいただき、ありがとうございました。