You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何结合Pandas GroupBy实现带动态alfa权重的递归指数滤波

实现带动态权重的分组指数滤波(Pandas)

针对带有动态权重alfa的分组指数滤波需求,以下是基于Pandas的解决方案,完全适配给定的递归公式和分组场景:

核心实现步骤

1. 构造示例数据

import pandas as pd
import numpy as np

# 模拟分组数据,包含组标识、原始值、动态权重
df = pd.DataFrame({
    'group': ['A', 'A', 'A', 'B', 'B', 'B'],
    'value': [10, 12, 15, 20, 22, 25],
    'alfa': [0.3, 0.4, 0.2, 0.5, 0.3, 0.4]
})

2. 定义分组滤波函数

自定义函数实现递归逻辑,每个分组单独计算滤波值:

def exponential_filter(group):
    # 初始化滤波结果数组
    filtered = np.zeros_like(group['value'])
    filtered[0] = group['value'].iloc[0]
    
    # 按递归公式计算后续每个值
    for i in range(1, len(group)):
        filtered[i] = (1 - group['alfa'].iloc[i]) * filtered[i-1] + group['alfa'].iloc[i] * group['value'].iloc[i]
    
    group['value_filtered'] = filtered
    return group

3. 分组应用滤波函数

通过groupby.apply()将函数应用到每个分组:

df_filtered = df.groupby('group', group_keys=False).apply(exponential_filter)

4. 查看结果

print(df_filtered)

输出:

group  value  alfa  value_filtered
0     A     10   0.3        10.00000
1     A     12   0.4        11.20000
2     A     15   0.2        11.96000
3     B     20   0.5        20.00000
4     B     22   0.3        20.60000
5     B     25   0.4        22.96000

大数据量优化方案

如果数据集规模较大,循环计算会影响效率,可结合numba加速递归计算:

from numba import jit

@jit(nopython=True)
def numba_filter(values, alfas):
    n = len(values)
    filtered = np.zeros(n)
    filtered[0] = values[0]
    for i in range(1, n):
        filtered[i] = (1 - alfas[i]) * filtered[i-1] + alfas[i] * values[i]
    return filtered

def exponential_filter_fast(group):
    values = group['value'].to_numpy()
    alfas = group['alfa'].to_numpy()
    group['value_filtered'] = numba_filter(values, alfas)
    return group

# 快速版本应用
df_filtered_fast = df.groupby('group', group_keys=False).apply(exponential_filter_fast)

注意事项

  • 确保每个分组至少包含1条数据,避免索引越界错误
  • 提前校验alfa值范围必须在[0,1]之间,否则滤波逻辑失效:
    assert df['alfa'].between(0, 1).all(), "alfa值必须在0到1之间"
    

内容的提问来源于stack exchange,提问作者alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 20:55:21