首页 > 解决方案 > 计算熊猫数据帧中每组的行数

问题描述

我有一个像这样的数据框:

   canopy  speed
0       1    3.3
1       2    3.3
2       2    3.1
3       2    3.1
4       2    3.1
5       2    3.0
6       2    3.0
7       2    3.5
8       2    3.5

我想计算 and 的每个组合的行数(观察)canopyspeed绘制它。我希望在情节中看到类似的东西:

canopy = 2:

3.3   1
3.1   3
3.0   2
3.5   3

标签: pythonpandaspandas-groupby

解决方案


你可以这样做:

df.groupby('canopy')['speed'].value_counts().unstack('canopy').plot.bar()

这为您提供了一些选项,例如在每个组内进行规范化(获取频率而不是计数):

(df
 .groupby('canopy')['speed']
 .value_counts(normalize=True)
 .unstack('canopy').plot.bar()
)

而且,当然,您可以控制speed值的四舍五入(正如@QuangHoang 正确提到的那样:对浮点数进行分组不是一个好主意——我要补充一点:没有一些四舍五入):

(df
 .assign(speed=df['speed'].round(0))
 .groupby('canopy')['speed']
 .value_counts()
 .unstack('canopy').plot.bar()
)

推荐阅读