あるチェーンスーパーの売り場面積 (space) と売上高 (sales) の関連について散布図を描いてみよう.まず,ここ参考にモジュールを読み込んだ後,データを準備します.
データフレームを準備する
df = pd.DataFrame([
[26, 65], [28, 65], [25, 62], [26, 59],
[28, 69], [33, 73], [32, 79], [29, 71],
[30, 73], [29, 71], [38, 86], [40, 88],
[32, 71], [26, 63], [34, 80]],
columns=['space', 'sales']
)
print(df.head())
space sales 0 26 65 1 28 65 2 25 62 3 26 59 4 28 69
散布図を描画するには scatter()
を利用すると良いでしょう.
散布図を描く
fig, ax = plt.subplots(1, 1, figsize=(6, 4))
ax.scatter(df['space'], df['sales'])
ax.set_xlabel('space')
ax.set_ylabel('sales')
plt.show()
マーカを変更します.
マーカーを変更する
plt.scatter(df['面積'], df['売上高'], marker='x')
plt.show()
プロバスケットボールのデータを使って散布図を描いてみます.まずは,ここからダウンロードした csv ファイルをソースプログラムと同じフォルダに設置して,データフレームとして読み込みます.これはホームチームとアウェイチームの得点データです.
csv ファイルを読み込む
df = pd.read_csv("basketball.csv")
df
上と同じ方法で散布図を描くが,データ数が多く密集していることから分布の詳細を掴むことは難しい.
散布図を描く
fig, ax = plt.subplots(1, 1, figsize=(6, 6))
ax.scatter(df['team_point_home'], df['team_point_away'])
ax.set_xlim(0, 150)
ax.set_ylim(0, 150)
ax.set_xlabel('team point home')
ax.set_ylabel('team point away')
plt.show()
プロットの不透明度は alpha
オプションで指定します.例えば不透明度を50%に設定すると次のようになります.
不透明度を50%に変更
fig, ax = plt.subplots(1, 1, figsize=(6, 6))
ax.scatter(df['team_point_home'], df['team_point_away'], marker='o', alpha=0.5)
ax.set_xlim(0, 150)
ax.set_ylim(0, 150)
ax.set_xlabel('team point home')
ax.set_ylabel('team point away')
plt.show()
さらに不透明度を5%に設定すると次のようになります.左下から右上への対角線上のデータが存在しなさそう,つまり,同点の試合がなさそうなことが読み取れる(実際に存在しないことは元のデータからチェックできる).
不透明度を5%に変更
fig, ax = plt.subplots(1, 1, figsize=(6, 6))
ax.scatter(df['team_point_home'], df['team_point_away'], marker='o', alpha=0.05)
ax.set_xlim(0, 150)
ax.set_ylim(0, 150)
ax.set_xlabel('team point home')
ax.set_ylabel('team point away')
plt.show()