Pandas window functions

261 阅读2分钟

在 Pandas 中,窗口函数(window functions)是用于对数据进行滚动、扩展或指数加权计算的工具。它们通过提供滑动窗口或累积视角,帮助分析数据中的局部趋势或历史累积效果。以下是关于 rollingexpandingewm 的简单介绍及常用场景:


1. 滚动窗口(Rolling)

pandas.DataFrame.rolling()pandas.Series.rolling() 用于创建一个滚动窗口对象,对窗口内的数据执行统计计算。

功能:

  • 在一段连续的窗口数据上应用函数(例如求和、均值等)。
  • 窗口的大小是固定的,随着数据滑动。

常用场景:

  • 时间序列分析:计算移动平均线(Moving Average),例如股票价格的5天移动平均。
  • 平滑数据:消除数据中的短期波动,突出长期趋势。
  • 计算局部统计量:例如窗口内的最大值、最小值、标准差等。

示例:

import pandas as pd
data = pd.Series([1, 2, 3, 4, 5, 6])
rolling = data.rolling(window=3)
print(rolling.mean())  # 计算3个元素的滚动平均

2. 扩展窗口(Expanding)

pandas.DataFrame.expanding()pandas.Series.expanding() 用于创建扩展窗口对象,对从数据开始到当前点的累积数据应用函数。

功能:

  • 对所有已观察的数据(从开始到当前位置)进行计算。
  • 窗口大小动态增长,始终包括所有历史数据。

常用场景:

  • 累积指标计算:例如累积和、累积均值。
  • 累计贡献分析:跟踪从开始到当前点某些指标的贡献率。

示例:

expanding = data.expanding()
print(expanding.mean())  # 累积计算均值

3. 指数加权窗口(Exponential Moving Window,EWM)

pandas.DataFrame.ewm()pandas.Series.ewm() 用于创建指数加权窗口,对数据赋予不同的权重(较近的点权重更高)。

功能:

  • 指数加权移动平均线(EMA),与简单移动平均(SMA)相比,更重视最近的数据。
  • 支持调整 span(跨度)、halflife(半衰期)等参数,灵活调整加权的模式。

常用场景:

  • 金融分析:用于计算股票价格的指数加权移动均线(EMA)。
  • 平滑时间序列:在噪声较大的数据中,使用指数加权方法可以更快地反应趋势变化。
  • 预测建模:对历史数据赋予权重,用于加权预测。

示例:

ewm = data.ewm(span=3)
print(ewm.mean())  # 计算指数加权均值

对比总结

方法窗口特性适用场景示例函数
Rolling固定窗口局部趋势分析、平滑短期波动.mean(), .sum()
Expanding动态扩展窗口累积指标、历史数据贡献分析.mean(), .sum()
EWM权重递减窗口强调最近数据、平滑时间序列.mean()

这些窗口函数可以搭配自定义函数或内置函数(如 summeanmax)使用,非常适合时间序列分析和数据平滑处理。