python使用groupby panda数据帧计算直方图值

时间:2017-05-19 15:27:25

标签: python pandas numpy dataframe

我想使用数据框对数据框中的数据进行分组,我想计算分组数据的直方图: 这是我的数据框:

    indicator
key        
14        1
14        2
14        3
15        1
16        2
16        5
16        6
17        1
18        3

我希望使用groupby获得此结果:

       indicator
key        
14        1,2,3
15        1
16        2,5,6
17        1
18        3

然后计算每个键的直方图

1 个答案:

答案 0 :(得分:1)

numpy.histogram无法处理数组中的数组。您需要像这样格式化数据。

import numpy as np
import pandas as pd 
dataf = pd.DataFrame()
dataf['key'] = range(14,25)
dataf['indicator'] = [1,1,2,1,3,4,7,15,23,43,67]
dataf.loc[11] = [14,2]
dataf.loc[12] = [14,3]
dataf.loc[13] = [16,5]
dataf.loc[14] = [16,6]

由于没有提供原始数据,我只能假设数据可以像这样重新格式化。

In [30]: dataf
Out[30]: 
    key  indicator
0    14          1
1    15          1
2    16          2
3    17          1
4    18          3
5    19          4
6    20          7
7    21         15
8    22         23
9    23         43
10   24         67
11   14          2
12   14          3
13   16          5
14   16          6

numpy.histogram已处理groupby概念,因此您无需在groupby中执行DataFrame功能。 您只需要执行np.histogram(dff['indicator'])

仅供参考,如果您想绘制直方图,您也可以使用DataFrame.hist()

dataf.indicator.hist()
import matplotlib.pyplot as plt
plt.savefig('test.png')