Pandas 窗口操作
在数据分析中,窗口操作是一种强大的工具,用于对时间序列或顺序数据进行局部计算。Pandas提供了多种窗口操作功能,包括滚动窗口、扩展窗口和指数加权窗口。这些操作可以帮助我们计算移动平均值、累积和、指数平滑等统计量。
什么是窗口操作?
窗口操作是指在数据上定义一个“窗口”,并在该窗口内进行计算。窗口可以是固定大小的(如滚动窗口),也可以是动态变化的(如扩展窗口)。通过窗口操作,我们可以对数据进行局部分析,而不是对整个数据集进行计算。
滚动窗口(Rolling Window)
滚动窗口是指在数据上定义一个固定大小的窗口,并在该窗口内进行计算。窗口会随着数据的移动而滚动,因此每次计算都是基于窗口内的数据。
示例:计算滚动平均值
假设我们有一个包含每日销售额的时间序列数据,我们希望计算过去7天的滚动平均值。
import pandas as pd
# 创建示例数据
data = {'date': pd.date_range(start='2023-01-01', periods=10, freq='D'),
'sales': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]}
df = pd.DataFrame(data)
# 计算7天滚动平均值
df['rolling_avg'] = df['sales'].rolling(window=7).mean()
print(df)
输出:
date sales rolling_avg
0 2023-01-01 10 NaN
1 2023-01-02 20 NaN
2 2023-01-03 30 NaN
3 2023-01-04 40 NaN
4 2023-01-05 50 NaN
5 2023-01-06 60 NaN
6 2023-01-07 70 40.000000
7 2023-01-08 80 50.000000
8 2023-01-09 90 60.000000
9 2023-01-10 100 70.000000
注意:在滚动窗口的前6行中,由于窗口大小不足7天,因此滚动平均值为NaN。
扩展窗口(Expanding Window)
扩展窗口是指在数据上定义一个从起始点到当前点的窗口,并在该窗口内进行计算。窗口会随着数据的增加而扩展,因此每次计算都是基于从起始点到当前点的所有数据。
示例:计算累积和
假设我们有一个包含每日销售额的时间序列数据,我们希望计算从起始点到当前点的累积和。
# 计算累积和
df['cumulative_sum'] = df['sales'].expanding().sum()
print(df)
输出:
date sales cumulative_sum
0 2023-01-01 10 10.0
1 2023-01-02 20 30.0
2 2023-01-03 30 60.0
3 2023-01-04 40 100.0
4 2023-01-05 50 150.0
5 2023-01-06 60 210.0
6 2023-01-07 70 280.0
7 2023-01-08 80 360.0
8 2023-01-09 90 450.0
9 2023-01-10 100 550.0
扩展窗口适用于需要计算累积统计量的场景,如累积和、累积平均值等。
指数加权窗口(Exponentially Weighted Window)
指数加权窗口是指在数据上定义一个窗口,并对窗口内的数据进行指数加权计算。指数加权窗口适用于需要对近期数据赋予更高权重的场景,如指数平滑。
示例:计算指数加权平均值
假设我们有一个包含每日销售额的时间序列数据,我们希望计算指数加权平均值。
# 计算指数加权平均值
df['ewm_avg'] = df['sales'].ewm(span=3, adjust=False).mean()
print(df)
输出:
date sales ewm_avg
0 2023-01-01 10 10.0
1 2023-01-02 20 15.0
2 2023-01-03 30 22.5
3 2023-01-04 40 31.25
4 2023-01-05 50 40.625
5 2023-01-06 60 50.3125
6 2023-01-07 70 60.15625
7 2023-01-08 80 70.078125
8 2023-01-09 90 80.0390625
9 2023-01-10 100 90.01953125
指数加权窗口的参数 span
决定了权重衰减的速度,span
越小,近期数据的权重越高。
实际应用场景
场景1:股票价格分析
在股票价格分析中,滚动窗口常用于计算移动平均线,帮助投资者识别趋势。扩展窗口可以用于计算累积收益率,而指数加权窗口可以用于平滑价格波动,识别短期趋势。
场景2:销售数据分析
在销售数据分析中,滚动窗口可以用于计算最近N天的平均销售额,扩展窗口可以用于计算累积销售额,而指数加权窗口可以用于平滑销售额波动,识别销售趋势。
总结
Pandas窗口操作是数据分析中非常强大的工具,适用于各种时间序列和顺序数据的局部计算。通过滚动窗口、扩展窗口和指数加权窗口,我们可以轻松计算移动平均值、累积和、指数平滑等统计量。掌握这些操作将大大提高你的数据分析能力。
附加资源与练习
- 练习1:使用滚动窗口计算过去5天的销售额标准差。
- 练习2:使用扩展窗口计算销售额的累积平均值。
- 练习3:使用指数加权窗口计算销售额的指数加权标准差。
在练习中,确保理解每个窗口操作的计算原理,并尝试调整参数观察结果的变化。