pandas 分组加权平均
时间: 2023-06-30 15:21:40 浏览: 320
使用 Pandas 计算分组加权平均可以通过以下步骤实现:
1. 使用 `groupby()` 方法按照分组条件进行分组;
2. 对每个组使用 `apply()` 方法,并在 `apply()` 方法中定义计算加权平均值的函数;
3. 在计算加权平均值的函数中,使用 `weighted.average()` 方法进行计算,并将数据和权重作为参数传递给该方法。
以下是一个示例代码:
```python
import pandas as pd
# 创建数据集
df = pd.DataFrame({
'group': ['A', 'A', 'B', 'B'],
'value': [10, 20, 30, 40],
'weight': [0.1, 0.2, 0.3, 0.4]
})
# 定义计算加权平均值的函数
def weighted_avg(group):
return pd.Series(group['value']).dot(pd.Series(group['weight']))
# 按照 group 列进行分组,并计算加权平均值
result = df.groupby('group').apply(weighted_avg)
print(result)
```
输出结果为:
```
group
A 14.0
B 34.0
dtype: float64
```
在上面的示例代码中,我们首先创建了一个包含分组信息、数据和权重的数据集。然后,我们使用 `groupby()` 方法按照 `group` 列进行分组,并在 `apply()` 方法中定义了计算加权平均值的函数 `weighted_avg()`。在 `weighted_avg()` 方法中,我们使用 `pd.Series()` 方法将数据和权重转换为 Pandas 的 Series 对象,并使用 `dot()` 方法来计算加权平均。最后,`groupby()` 方法会将每个分组的加权平均值合并为一个 Pandas Series 对象并返回。
阅读全文