pandas rolling groupby
时间: 2024-12-25 17:23:13 浏览: 9
### 结合使用 `rolling` 和 `groupby`
在 Pandas 中,结合使用 `rolling` 和 `groupby` 可以实现在不同分组上的滚动窗口操作。这允许对每个分组应用滑动窗口分析,从而能够更细致地研究数据的趋势和模式。
对于想要执行基于特定条件或类别变量上的一系列滚动计算而言,这种组合非常有用。例如,在金融数据分析中,可能希望按股票代码或其他分类标准分别计算移动平均线;或者是在销售记录里按照地区划分后查看每周销售额的变化情况等场景下尤为适用[^2]。
具体来说,先通过 `groupby()` 方法依据某些键(如日期、ID 等)创建多个子集,再调用 `.rolling(window)` 来定义这些子集中每一个元素周围要纳入考量范围内的样本数量作为窗口宽度参数 window 的值。最后可继续链式调用来完成诸如求均值、总和之类的统计运算。
下面给出一段简单的 Python 代码示例展示如何利用 pandas 库里的这两个函数一起工作:
```python
import pandas as pd
# 创建一个包含时间序列和其他特征的数据框
data = {
'date': ['2023-01-%d' % i for i in range(1,8)] * 2,
'category': ['A','B'] * 7,
'value': [i*2 for i in range(14)]
}
df = pd.DataFrame(data)
# 将字符串类型的 date 列转换为 datetime 类型以便后续处理
df['date'] = pd.to_datetime(df['date'])
# 设置索引为日期列方便之后的操作
df.set_index('date', inplace=True)
# 使用 groupby 对 category 进行分组,并且在每组内做 rolling 计算
result_df = df.groupby('category')['value'].rolling(window=3).mean()
print(result_df)
```
此段程序会输出如下所示的结果表格,其中每一类别的 value 字段都进行了长度为 3 的滑动窗口取平均数的变换过程[^3]。
阅读全文