如何从具有权重的数据开始创建直方图

时间:2019-07-12 13:57:16

标签: python pandas

我正在尝试从一些先前进行分组和加权的数据开始构建频率直方图。 参见此DataFrame作为示例:

d = {'category': ['red', 'green', 'blue', 'red', 'green'], 'count': [1, 2, 3, 1, 3], 'average': [3.2, 5.3, 8.1, 4.3, 9.0]}
df = pd.DataFrame(data=d)

我需要考虑那些权重(计数列),例如计数> 1的行,应该在频率直方图中多次考虑。因此简单

df.hist('average')

还不够,因为它会使计数数据变平。

一种可能的解决方案是按照计数列重复行,如下所示:Duplicate row based on value in different column

但是我发现此解决方案效率不高。

还有其他(更容易的)方法来实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

我们有repeat

df.loc[df.index.repeat(df['count'])] # df.reindex[df.index.repeat(df['count'])]
Out[424]: 
  category  count  average
0      red      1      3.2
1    green      2      5.3
1    green      2      5.3
2     blue      3      8.1
2     blue      3      8.1
2     blue      3      8.1
3      red      1      4.3
4    green      3      9.0
4    green      3      9.0
4    green      3      9.0