基于groupby和不同列的多个直方图

时间:2018-02-22 09:13:43

标签: python pandas

我是熊猫新手。我有以下数据框架。

import pandas as pd
import numpy as np

Group = ['A','B','A','B','B','A','A','B','A','B']

Weight = np.random.uniform(0.1, 2, size=10)

Parameter_1 = np.random.uniform(0, 100, size=10)

Parameter_2 = np.random.randint(low =1, high = 5, size=10)

Parameter_3 = np.random.randint(low =1, high = 5, size=10)


data = pd.DataFrame({'Group':Group, 
   'Weight':Weight,'Parameter_1':Parameter_1,'Parameter_2':Parameter_2, 
   'Parameter_3':Parameter_3})

我正在尝试为包含基于Parameter_1Parameter_2Parameter_3及其Weight的直方图的每个组创建单独的PDF。

不太确定攻击问题:(

由于 米克

2 个答案:

答案 0 :(得分:0)

也许这就是你想要的:

import matplotlib.pyplot as plt

for i in data['Group'].unique():
    data.loc[data['Group']==i].hist()
    plt.savefig('path/to/file{}.pdf'.format(i))

答案 1 :(得分:0)

这会将文件保存为Group_name.pdf在您的工作目录中。您可以根据需要更改路径。

# Columns to get histograms
names = list(data.columns)
names.remove('Group')
print(names)

['Parameter_1', 'Parameter_2', 'Parameter_3', 'Weight']

# plotting
for i in (data['Group'].unique()):
    fig, ax = plt.subplots(len(names),1)
    group_data = data.loc[data['Group']==i]
    for number, col_name in enumerate(names):
        ax[number].hist(data[col_name]);
        ax[number].set_title("Histogram for " + col_name)
    plt.tight_layout()
    plt.savefig(i+'.pdf') # provide a valid path