【記述統計】Pandasのgroupbyメソッドを利用して層別散布図を作る

グラフ実装

この記事は
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()  # メモリリークを防ぐためにプロットをクローズする

タイトルとURLをコピーしました