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

如何在Python Pandas DataFrame上计算平滑移动平均线(Smoothed Moving Average)

Pandas 计算平滑移动平均线的实现方法

平滑移动平均线(SMMA,也叫平滑移动均线)没有内置的 pandas 专属方法,但可以通过现有 rolling/ewm 接口快速实现,两种常用方案如下:

  • 方案1:直接调整ewm参数实现(和标准SMMA计算逻辑完全匹配)
    SMMA的递推公式本质是α=1/窗口长度的指数加权平均,只要把ewm的alpha参数设为1/你的窗口长度即可,和你之前用ewm算EMA的用法几乎一致:
# 以窗口长度20为例
df.iloc[:,0].ewm(alpha=1/20, adjust=False).mean()
  • 方案2:严格匹配初始值规则的封装方案
    如果需要严格遵循SMMA的初始值规则(取前N个样本的算术平均作为第一个SMMA值,再往后递推),可以封装一个极简函数调用:
def calc_smma(data_series, window):
    # 计算初始SMMA值:前window个数据的简单平均
    initial_smma = data_series.rolling(window=window).mean().iloc[window-1]
    # 按递推规则计算后续所有SMMA值
    res = data_series.iloc[window:].ewm(alpha=1/window, adjust=False).mean()
    # 拼接初始值
    return res.shift(1, fill_value=initial_smma)

# 调用示例:计算第二列窗口为3的SMMA
calc_smma(df.iloc[:,1], window=3)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:45:00