pandas.Series.rolling

Series.rolling(window, min_periods=None, freq=None, center=False, win_type=None, on=None, axis=0)[source]

提供滚动窗口计算。

版本0.18.0中的新功能。

参数:

窗口:int或offset

移动窗口的大小。这是用于计算统计量的观察的数量。每个窗口将是固定大小。

如果其偏移,则这将是每个窗口的时间段。每个窗口将是基于包括在时间段中的观察值的可变大小。这仅适用于datetimelike索引。这是0.19.0的新功能

min_periods:int,default无

窗口中要求具有值的最小观察值(否则结果为NA)。对于由偏移量指定的窗口,这将默认为1。

freq:string或DateOffset对象,可选(默认为None)(DEPRECATED)

计算统计量之前符合数据的频率。指定为频率字符串或DateOffset对象。

center:boolean,default False

在窗口的中心设置标签。

win_type:string,默认值无

提供一个窗口类型。见下面的注释。

on:string,可选

对于DataFrame,在其上计算滚动窗口的列,而不是索引

版本0.19.0中的新功能。

axis:int或string,默认为0

返回:

针对特定操作的子类的窗口或滚动

笔记

默认情况下,结果设置为窗口的右边缘。可以通过设置center=True将其更改为窗口中心。

freq关键字用于通过重新采样数据使时间序列数据符合指定频率。这是使用默认参数resample()(即使用平均值)。

要了解有关偏移量和频次字符串的详情,请参阅此链接

识别的win_types是:

  • boxcar
  • triang
  • blackman
  • hamming
  • bartlett
  • parzen
  • bohman
  • blackmanharris
  • nuttall
  • barthann
  • kaiser(需要测试版)
  • gaussian(needs std)
  • general_gaussian(需要功率,宽度)
  • slepian(需要宽度)。

例子

>>> df = pd.DataFrame({'B': [0, 1, 2, np.nan, 4]})
>>> df
     B
0  0.0
1  1.0
2  2.0
3  NaN
4  4.0

使用“triang”窗口类型,窗口长度为2的滚动和。

>>> df.rolling(2, win_type='triang').sum()
     B
0  NaN
1  1.0
2  2.5
3  NaN
4  NaN

滚动和窗口长度为2,min_periods默认为窗口长度。

>>> df.rolling(2).sum()
     B
0  NaN
1  1.0
2  3.0
3  NaN
4  NaN

同上,但明确设置min_periods

>>> df.rolling(2, min_periods=1).sum()
     B
0  0.0
1  1.0
2  3.0
3  2.0
4  4.0

一个参差不齐(意味着不规则的频率),时间索引的DataFrame

>>> df = pd.DataFrame({'B': [0, 1, 2, np.nan, 4]},
....:                 index = [pd.Timestamp('20130101 09:00:00'),
....:                          pd.Timestamp('20130101 09:00:02'),
....:                          pd.Timestamp('20130101 09:00:03'),
....:                          pd.Timestamp('20130101 09:00:05'),
....:                          pd.Timestamp('20130101 09:00:06')])
>>> df
                       B
2013-01-01 09:00:00  0.0
2013-01-01 09:00:02  1.0
2013-01-01 09:00:03  2.0
2013-01-01 09:00:05  NaN
2013-01-01 09:00:06  4.0

与整数滚动窗口对比,这将滚动对应于时间段的可变长度窗口。min_periods的默认值为1。

>>> df.rolling('2s').sum()
                       B
2013-01-01 09:00:00  0.0
2013-01-01 09:00:02  1.0
2013-01-01 09:00:03  3.0
2013-01-01 09:00:05  NaN
2013-01-01 09:00:06  4.0
Scroll To Top