如何计算 pandas 的加权平均值
您可以使用以下函数来计算 Pandas 的加权平均值:
def w_avg(df, values, weights): d = df[values] w = df[weights] return (d*w). sum () / w. sum ()
以下示例展示了如何在实践中使用此语法。
示例 1:熊猫的加权平均值
以下代码演示了如何使用加权平均函数计算给定数据集的加权平均值,使用“价格”作为值,“金额”作为权重:
import pandas as pd
#createDataFrame
df = pd. DataFrame ({' sales_rep ': ['A', 'A', 'A', 'B', 'B', 'B'],
' price ': [8, 5, 6, 7, 12, 14],
' amount ': [1, 3, 2, 2, 5, 4]})
#view DataFrame
df
sales_rep price amount
0 to 8 1
1 to 5 3
2 to 6 2
3 B 7 2
4 B 12 5
5 B 14 4
#find weighted average of price
w_avg(df, ' price ', ' amount ')
9.705882352941176
“价格”的加权平均值为9,706 。
示例 2:Pandas 的分组和加权平均值
以下代码演示如何使用加权平均函数来计算按销售人员分组的价格的加权平均值:
import pandas as pd
#createDataFrame
df = pd. DataFrame ({' sales_rep ': ['A', 'A', 'A', 'B', 'B', 'B'],
' price ': [8, 5, 6, 7, 12, 14],
' amount ': [1, 3, 2, 2, 5, 4]})
#find weighted average of price, grouped by sales rep
df. groupby (' sales_rep '). apply (w_avg, ' price ', ' amount ')
sales_rep
A 5.833333
B 11.818182
dtype:float64
我们可以看到以下内容:
- 销售人员 A 的“价格”的加权平均值为5,833 。
- “销售代表B价格”的加权平均值为11,818 。