Pandas滑动窗口函数rolling()的使用方法(入门够用)

📝 在时间序列信号处理过程中,经常会用到滑动窗口处理方法:它规定一个特定单位长度的窗口来选区信号信号序列,然后计算该窗口中信号的统计指标rolling()函数支持对SeriesDataFrame的操作。

对于信号的滑动窗口处理方法,Pandas提供了一个封装好的滑动窗口rolling()函数,其使用格式如下所示:

rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=None)

其中,常用的参数及其作用如下表所示:

参数作用
window滑动窗口的大小,取值包括:
(1)int整型数值,即每个窗口是固定大小,包括相同数量的观测值
(2)offset偏移,每个窗口包含的时间段,包含的观测值数量不确定
min_periods窗口最少包含的观测值,其取值包括:
(1)int整型数值,默认为None
(2)offset类型默认为1
center是否将窗口标签设置为居中,默认为False
win_type窗口类型
on对于DataFrame,指定哪些列需要进行滑动窗口操作,值为列名
axis表示进行滑动窗口操作的轴,默认为0表示对列进行操作;设置为1表示对行进行操作
closed表示定义区间的开闭

假如,我们手里有一个销售员十天的销售量sales_volume,这里需要统计一下近三天计的销售总量,代码如下所示:

import pandas as pd

# 下面代码生成一个Series序列,第一天销售量为1、第二天为2、...第十天为10
sales_volume = pd.Series(range(1, 11))
# 通过rolling()函数计算近三天的销售总量,并输出结果
print("三天的销售总量为:\n", salses_volume.rolling(window=3).sum())

代码的执行结果如下图所示:

其实上面代码出现的NaN数值类型,在实际数据处理过程中并不是我们想要的结果。为了避免它给我们处理数据带来麻烦,可以使用rolling()函数的min_periods参数来避免。下面的代码将min_periods参数设置为1,即如果没有前面的销售信息,则只统计当天的销售信息,这样就可以避免NaN数值的出现。

由于第一天并没有前两天的销售信息,则只计算当天的销售信息;同样的,对于第二天没有前天的销售信息,则只统计当天和昨天的销售总量,代码如下所示:

print("三天的销售总量为:\n", salses_volume.rolling(window=3, min_peiriods=1).sum())

代码执行结果如下图所示:

作为入门,看懂上面两条指令即可熟悉rolling()函数的使用方法了,如果想进一步了解该函数的详细用法,可以参考(35条消息) Pandas中的滑动窗口—rolling()函数方法_KJ.JK的博客-CSDN博客_pandas rolling函数

📚参考文献
🔍 详解pandas中的rolling - 古明地盆 - 博客园
🔍 (35条消息) Pandas中的滑动窗口—rolling()函数方法_KJ.JK的博客-CSDN博客_pandas rolling函数

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐