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

如何为pandas DataFrame计算Exponential moving average并生成新列

pandas计算指数移动平均(EMA)实现方案

pandas内置了ewm()(指数加权移动)方法,可以直接用来计算指数移动平均,无需引入额外第三方库。

核心实现逻辑

ewm()方法适配金融EMA计算场景的核心参数设置如下:

  • 用span参数指定EMA的计算周期,和你之前SMA的window参数逻辑一致
  • 金融场景通用的EMA计算规则需要设置adjust=False,此时平滑系数α=2/(span+1),符合绝大多数行情软件的EMA计算标准
  • min_periods参数和rolling()中的同名参数作用一致,设置为1时,即使序列长度不足窗口长度也会从第一个有效值开始计算

完整修改后的代码

import pandas as pd
import datetime as dt
import yfinance as yf

# 获取初始参数
start = dt.date(2020,1,1)
end = dt.date.today()
ticker = 'SPY'

# 下载行情数据
df = yf.download(ticker,start,end,progress=False)

# 计算75周期简单移动平均
df['SMA'] = df['Adj Close'].rolling(window=75,min_periods=1).mean()

# 计算75周期指数移动平均,和SMA窗口长度保持一致
df['EMA'] = df['Adj Close'].ewm(span=75, adjust=False, min_periods=1).mean()

# 如需计算其他常用周期EMA,比如12、26周期(MACD指标常用参数),可直接新增对应列
df['EMA12'] = df['Adj Close'].ewm(span=12, adjust=False, min_periods=1).mean()
df['EMA26'] = df['Adj Close'].ewm(span=26, adjust=False, min_periods=1).mean()

补充说明

如果需要自定义平滑系数,可以直接替换span参数为alpha参数手动指定数值,比如alpha=0.05,即可按照自定义的平滑系数计算EMA。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:48:03