如何在Pandas中计算DevTool各分类的整体平均值
Pandas计算DevTool分类的系统平均计数
原始数据
# 初始化数据 data = [['A','Excel','1'], ['A','Word_soft','0'],['B','Excel','1'],['B','Word','1'],['C','Word','1'],['C','Word_soft','0'],['D','Java2','1'],['D','Java','1'],['E','PPT','0'], ['E','Word_soft','0']] # 创建DataFrame df = pd.DataFrame(data, columns=['System','App','DevTool'])
当前已执行的分组代码
df.groupby(['System','DevTool'])['DevTool'].count()
需求说明
需要针对DevTool的两类值(1和0)分别计算平均计数:
- DevTool=1的平均值:所有包含1类DevTool的系统中,该类计数的总和 ÷ 拥有1类DevTool的系统数量,计算结果为1.5
- DevTool=0的平均值:所有包含0类DevTool的系统中,该类计数的总和 ÷ 拥有0类DevTool的系统数量,计算结果约为1.33
解决方案
可以通过两次分组实现需求:
分步实现
- 先按
System和DevTool分组,计算每个系统对应分类的App数量,重置索引得到结构化DataFrame:
count_df = df.groupby(['System', 'DevTool'])['DevTool'].count().reset_index(name='Count')
- 再按
DevTool分组,对Count列取平均值:
result = count_df.groupby('DevTool')['Count'].mean() print(result)
合并成一行代码
result = df.groupby(['System', 'DevTool'])['DevTool'].count().groupby('DevTool').mean()
输出结果
DevTool 0 1.333333 1 1.500000 Name: Count, dtype: float64
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

