PythonのPandasで散布図を描画する方法について

散布図,イメージ

AI実装検定のご案内

Pandas単体でも簡易的な散布図は描けますが、本格的に可視化する場合は MatplotlibSeaborn と組み合わせて使うのが一般的です。

ここでは、基礎から応用まで段階的に詳しく説明します。

目次

基本的な散布図(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で散布図を描画する方法についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次