pandas EWMA平滑
时间: 2025-01-08 12:09:34 浏览: 1
### 使用 Pandas 实现 EWMA 指数加权移动平均平滑
为了实现指数加权移动平均(EWMA),可以利用 `pandas` 库中的 `ewm()` 方法。此方法允许指定不同的参数来调整权重分配方式,从而更好地适应特定的数据特征。
下面是一个完整的 Python 代码示例,展示如何使用 Pandas 对随机生成的时间序列数据应用 EWMA:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 创建 DataFrame 存储样本数据
data = pd.DataFrame()
data['sample'] = np.random.normal(size=100)
# 计算不同窗口大小下的简单移动平均(Simple Moving Average)
data['SMA5'] = data['sample'].rolling(window=5).mean()
data['SMA10'] = data['sample'].rolling(window=10).mean()
# 计算不同跨度设置下的指数加权移动平均(Exponentially Weighted Moving Average)
data['EWMA5'] = data['sample'].ewm(span=5, adjust=False).mean()
data['EWMA10'] = data['sample'].ewm(span=10, adjust=False).mean()
# 绘制原始数据及其对应的 SMA 和 EWMA 曲线图
data[['sample', 'SMA5', 'SMA10', 'EWMA5', 'EWMA10']].plot(
subplots=False,
figsize=(12, 6),
grid=True
)
plt.title('Comparison of Simple and Exponential Moving Averages')
plt.show()
```
在这个例子中,通过设定 `span` 参数的不同值实现了两种不同长度的 EWMA 平滑效果,并将其与相同周期长度的传统简单移动平均进行了对比[^2]。
值得注意的是,在实际应用场景下,可以根据具体需求调整 `adjust` 参数以及选择合适的 `com`, `alpha`, 或者继续沿用 `span` 来定义衰减因子,进而优化模型的表现性能。
阅读全文