このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Python入門】散布図の表示

散布図の表示
データに含まれる2種類の値の関係を直感的に把握する手段として、散布図(さんぷず) は非常に有効です。横軸に1つめの値を、縦軸に2つめの値を配置し、各データ点をプロットすることで、両者の相関関係や分布の特徴を見つけやすくなります。Pandasには、データフレームから散布図を生成するメソッドが用意されており、数行のコードで簡単に描画できます。ここでは、Pandasのscatter
メソッドを使った散布図の作り方を解説します。

プログラムのダウンロード
「ダウンロード」から、JupyterLab で実行できるサンプルプログラムがダウンロードできます。ファイルは、ESET Endpoint Securityでウイルスチェックをしておりますが、ダウンロードとプログラムの実行は自己責任でお願いいたします。
1.散布図とは
散布図は、2つの変数(列)を軸として設定し、データを点でプロットした図表です。点の分布から、これらの変数間にどのような関係があるのか(正の相関・負の相関・無相関など)を視覚的に掴むことができます。また、クラスタリングの結果を散布図に重ねることで、各点がどのクラスに属しているのかも一目で確認できます。
2.サンプルデータの準備
今回のサンプルでは、物理(Physics)、生物(Biology)、化学(Chemistry)の3科目のスコアが200行ぶん格納された「science_scores.csv」を用います。CSVの構造は以下のようになっていると想定してください。
Physics,Biology,Chemistry
65,70,85
72,63,90
81,59,74
... (200行)
あらかじめこのファイルをJupyterLabのカレントディレクトリに配置しておきます。
3.Pandasのscatterメソッドを使った散布図
3.1.scatterメソッド
PandasのDataFrameオブジェクトには、plot.scatter()
というメソッドが用意されており、列名を指定するだけで散布図を生成可能です。コード例では横軸に「Physics」、縦軸に「Chemistry」を設定し、点の大きさや色、輪郭色などをキーワード引数で変更しています。
- 横軸 :
x=列名
- 縦軸 :
y=列名
- 点のサイズ :
s
- 点の塗りつぶし色 :
c
- 点の輪郭色 :
edgecolor
- 図のサイズ :
figsize=(幅, 高さ)
(単位はインチ)
以下のサンプルプログラムをJupyterLabのセルに貼り付け、実行してみてください。
import pandas as pd
from matplotlib import pyplot
def plot_scatter(csv_file="science_scores.csv",
x_col="Physics",
y_col="Chemistry",
out_file="scatter1.png"):
"""
CSVファイル(csv_file)から、x_colとy_colで指定された2列を使って散布図を作成し、
out_fileにPNGとして保存、さらに画面に表示するサンプル関数。
"""
# CSVファイルを読み込み (デフォルトエンコーディングをUTF-8と想定)
df = pd.read_csv(csv_file, encoding="utf_8")
# 散布図の作成
ax = df.plot.scatter(
x=x_col,
y=y_col,
s=80, # 点のサイズ
c="white", # 点の塗りつぶし色
edgecolor="blue", # 点の輪郭色
figsize=(6, 6) # 図のサイズ(幅6インチ, 高さ6インチ)
)
# 散布図ファイルを保存
pyplot.savefig(out_file)
# 画面に表示
pyplot.show()
# 実行例: Physicsを横軸、Chemistryを縦軸に散布図を作成し"scatter1.png"へ保存
plot_scatter(
csv_file="science_scores.csv",
x_col="Physics",
y_col="Chemistry",
out_file="scatter1.png"
)
実行結果

3.2.パラメータの調整
引数scatter(…)
に対して、以下のキーワード引数を加えることで、見た目を調整できます。
s
: 点のサイズ(数値が大きいほど大きい点に)c
: 点の塗りつぶし色(文字列やカラーコードで指定)edgecolor
: 点の輪郭色figsize
: 図のサイズを(幅, 高さ)インチ単位で指定
他にもalpha
(点の透明度)やmarker
(点の形状)など、多数のオプションが存在します。ドキュメントを参照するとより詳細なスタイル調整ができます。
4.散布図を保存して確認する
上記プログラムでは、最終行でpyplot.savefig(out_file)
により散布図をPNGファイルとして保存します。また、pyplot.show()
を呼び出すことで、プロット結果をGUIウィンドウやノートブック上に表示可能です。
終了操作: プロットを全画面で表示している場合は、[Q]キーを押すかウィンドウを閉じるなどで表示を終了します。
もし、物理(Physics)と生物(Biology)の散布図を見たい場合は、x_col="Physics", y_col="Biology"
のように指定するだけです。同様に生物と化学の関係を見たいときは、x_col="Biology", y_col="Chemistry"
を指定すればOKです。
まとめ
散布図は2つの変数の関係性を可視化するために欠かせないツールです。Pandasのplot.scatter
メソッドを使えば、DataFrameに含まれるどの列同士の関係もすぐに図として描画でき、相関の有無や外れ値の存在を直感的に把握することができます。
さらに、スタイルパラメータを活用することで点のサイズや色を変え、見やすいグラフを作成できます。機械学習の前処理やクラスター分析の結果を視覚化する際にも散布図は役立ちますので、ぜひ慣れておくと良いでしょう。