Python 如何求级数中的加权平均数?
我使用group by实现了以下系列:Python 如何求级数中的加权平均数?,python,pandas,dataframe,series,Python,Pandas,Dataframe,Series,我使用group by实现了以下系列: Job Salary Teacher 15 3 23 4 28 5 Doctor 10 3 35 2 40 1 如何计算教师或医生的平均工资 教师的平均工资计算公式是:(15*3)+(23*4)+(28*5)/(3+4+5)为了简单起见,我认为
Job Salary
Teacher 15 3
23 4
28 5
Doctor 10 3
35 2
40 1
如何计算教师或医生的平均工资
教师的平均工资计算公式是:(15*3)+(23*4)+(28*5)/(3+4+5)为了简单起见,我认为在第一步创建数据框,乘法列,聚合
sum
和最后除以列,如:
df1 = df.reset_index(name='count')
df1['new'] = df1['Salary'].mul(df1['count'])
df1 = df1.groupby('Job').sum()
df2 = df1['new'].div(df1['count']).reset_index(name='out')
print (df2)
Job out
0 Doctor 23.333333
1 Teacher 23.083333
如@Mark Wang所述,可使用np.平均值如:
df2 = df.reset_index(name='count').groupby('Job').apply(lambda x: np.average(x['Salary'], weights=x['count'])).reset_index(name='out')
print(df2)
Job out
0 Doctor 23.333333
1 Teacher 23.083333
这里有一个np.average
,它不同于np.mean
,因为它需要权重。这就是scikit learn实现其示例权重的方式。我认为您提供的算术表达式不正确。你是说加权平均数(15*3+23*4+28*5)/(3+4+5)
?是的,对不起,我将更新我投票的问题以结束这个问题,因为…这只是一个普通的数学问题。