如何计算 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

其他资源

如何比较 Pandas 中的两列
如何计算 Pandas 中的列总和
如何计算 Pandas 中列的平均值

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注