maxframe.dataframe.DataFrame.rolling#

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

提供滚动窗口计算。

参数:
  • window (int, or offset) -- 移动窗口的大小。这是用于计算统计量的观测值数量。每个窗口将是一个固定大小。如果它是一个偏移量,那么这将是每个窗口的时间段。每个窗口将根据时间段内包含的观测值进行可变大小调整。这仅对类似日期时间的索引有效。这是在0.19.0中新增的功能。

  • min_periods (int, default None) -- 窗口中需要具有值的最小观测值数量(否则结果为NA)。对于由偏移量指定的窗口,min_periods 默认为1。否则,min_periods 默认为窗口的大小。

  • center (bool, default False) -- 将标签设置在窗口的中心。

  • win_type (str, default None) -- 提供窗口类型。如果为 None,则所有点的权重相等。有关更多信息,请参见下面的说明。

  • on (str, optional) -- 对于一个 DataFrame,指定一个类似日期时间的列来计算滚动窗口,而不是使用 DataFrame 的索引。提供的整数列将被忽略并从结果中排除,因为整数索引不用于计算滚动窗口。

  • axis (int or str, default 0)

  • closed (str, default None) -- 使区间在 'right'、'left'、'both' 或 'neither' 端点闭合。对于基于偏移量的窗口,默认为 'right'。对于固定窗口,默认为 'both'。其余情况未在固定窗口中实现。

返回类型:

a Window or Rolling sub-classed for the particular operation

参见

expanding

提供扩展变换。

ewm

提供指数加权函数。

备注

默认情况下,结果设置为窗口的右边缘。可以通过设置 center=True 将其更改为窗口的中心。要了解更多关于偏移量和频率字符串的信息,请参见 此链接

认可的 win_types 有:* boxcar * triang * blackman * hamming * bartlett * parzen * bohman * blackmanharris * nuttall * barthann * kaiser (需要 beta) * gaussian (需要 std) * general_gaussian (需要 power, width) * slepian (需要 width) * exponential (需要 tau),center 被设置为 None。

如果 win_type=None 则所有点的权重相等。要了解更多关于不同窗口类型的信息,请参见 scipy.signal 窗口函数

示例

>>> import numpy as np
>>> import maxframe.dataframe as md
>>> df = md.DataFrame({'B': [0, 1, 2, np.nan, 4]})
>>> df.execute()
     B
0  0.0
1  1.0
2  2.0
3  NaN
4  4.0

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

>>> df.rolling(2, win_type='triang').sum().execute()
     B
0  NaN
1  0.5
2  1.5
3  NaN
4  NaN

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

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

与上述相同,但显式设置了 min_periods

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

一个不规则的(即非固定频率)、时间索引的 DataFrame

>>> df = md.DataFrame({'B': [0, 1, 2, np.nan, 4]},
>>>                   index = [md.Timestamp('20130101 09:00:00'),
>>>                            md.Timestamp('20130101 09:00:02'),
>>>                            md.Timestamp('20130101 09:00:03'),
>>>                            md.Timestamp('20130101 09:00:05'),
>>>                            md.Timestamp('20130101 09:00:06')])
>>> df.execute()
                       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().execute()
                       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