使用pands.rolling方法实现移动窗口的聚合计算

文章介绍了如何使用Pandas的rolling方法处理序列数据,包括计算平均值、总和,以及自定义聚合函数。还提到了如何处理缺失值,以及如何根据时间窗口进行条件计算。此外,文章展示了如何处理特定时间范围内的数据并排除无效值。

一个问题举例

假设有一个5天的收益数据,需要每3天求出一次平均值来达成某个需求:

date revenue
2023-05-01 10
2023-05-02 20
2023-05-03 30
2023-05-04 40
2023-05-05 50

1号、2号和3号的数据求一次平均值,2号、3号和4号的数据求一次平均值,3号、4号和5号的数据求一次平均值,这样的需求该如何计算?

pandas的Series有一个rolling方法,用来专门解决这种移动窗口聚合运算问题,举个简单的使用例子:

import pandas as pd


series = pd.Series([10, 20, 30, 40, 50])

amount = series.rolling(3).mean()

print(amount)

输出如下

0     NaN
1     NaN
2    20.0
3    30.0
4    40.0
dtype: float64

pd.rolling简单示例
可以看到需求确实如我们所需要的,但是你可能又会说,前两个均值不应该是NaN,少于1天的时候求均值就使用已有天数的数据来计算,别担心,此时只需要指定rolling的参数min_period为1即可:

import pandas as pd


series = pd.Series([10, 20, 30, 40, 50])


amount = series.rolling(3, min_periods=1).mean()	# min_period可以指定窗口计算所需要最少的元素,这个值必须小于等于第一个参数窗口的大小3

print(amount)
0    10.0
1    15.0
2    20.0
3    30.0
4    40.0
dtype: float64

结果完美满足需求

然后欠缺考虑周全的产品可能又会跟你说,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值