この記事は
Pandasのgroupbyメソッドを利用して
層別散布図を作る
ことを目的としています。
[PR]※本サイトには、プロモーションが含まれています
層別した散布図の作成
1つのグループにつき30個のデータが含まれ
3つのグループに分かれているデータがあります
グループ1,グループ2,グループ3で散布図を層別
したいと思います。
データフレームにデータを読み込ませる
読み込み時index_colを利用して
group列をインデックスにします。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# データの読み込み gruopをインデックスにする
df = pd.read_csv('/content/correlation_sample.csv', index_col='group')
インデックスごとにgroupbyメソッド使用し
データをグループ化していきます。
グループ化する際、インデックスを参照してグループ化していきます。
# インデックスごとに層別された散布図のプロット
fig, ax = plt.subplots()
for group_name, group_data in df.groupby(df.index):
ax.scatter(group_data['x'], group_data['y'], label=group_name)
ax.legend()
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_title('Scatter Plot with Grouped Index')
plt.show()
指定の場所に画像を保存して終了です
# プロットした散布図をpng形式で保存
plt.savefig('scatter_plot.png')
使用したコードを纏めます。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# データの読み込み gruopをインデックスにする
df = pd.read_csv('/content/correlation_sample.csv', index_col='group')
# インデックスごとに層別された散布図のプロット
fig, ax = plt.subplots()
for group_name, group_data in df.groupby(df.index):
ax.scatter(group_data['x'], group_data['y'], label=group_name)
ax.legend()
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_title('Scatter Plot with Grouped Index')
plt.show()
# プロットした散布図をpng形式で保存する
plt.savefig('scatter_plot.png')
層別した散布図を一つずつ出力
層別した散布図を一つずつ作成して保存したい場合は
以下のコードになります。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# データの読み込み groupをインデックスにする
df = pd.read_csv('/content/correlation_sample.csv', index_col='group')
# インデックスごとに層別された散布図のプロット
for group_name, group_data in df.groupby(df.index):
fig, ax = plt.subplots()
ax.scatter(group_data['x'], group_data['y'])
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_title(f'Scatter Plot for Group {group_name}')
plt.savefig(f'scatter_plot_group_{group_name}.png')
plt.close() # メモリリークを防ぐためにプロットをクローズする