当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python pandas.DataFrame.rolling用法及代码示例


用法:

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

提供滚动窗口计算。

参数

windowint、offset 或 BaseIndexer 子类

移动窗口的大小。

如果是整数,则为每个窗口使用的固定数量的观察值。

如果是偏移量,则为每个窗口的时间段。每个窗口的大小都将根据time-period 中包含的观察结果进行调整。这仅对 datetimelike 索引有效。要了解有关偏移和频率字符串的更多信息,请参阅此链接。

如果是 BaseIndexer 子类,则窗口边界基于定义的get_window_bounds 方法。其他滚动关键字参数,即 min_periodscenterclosed 将传递给 get_window_bounds

min_periods整数,默认无

具有值所需的窗口中的最小观察数;否则,结果为 np.nan

对于由偏移量指定的窗口,min_periods 将默认为 1。

对于由整数指定的窗口,min_periods 将默认为窗口的大小。

center布尔值,默认为 False

如果为 False,则将窗口标签设置为窗口索引的右边。

如果为 True,则将窗口标签设置为窗口索引的中心。

win_typestr,默认无

如果 None ,则所有点的权重均等。

如果是字符串,它必须是有效的 scipy.signal 窗口函数。

某些 Scipy 窗口类型需要在聚合函数中传递额外的参数。附加参数必须与 Scipy 窗口类型方法签名中指定的关键字匹配。

onstr,可选

对于 DataFrame,计算滚动窗口的列标签或索引级别,而不是 DataFrame 的索引。

提供的整数列被忽略并从结果中排除,因为整数索引不用于计算滚动窗口。

axisint 或 str,默认为 0

如果 0'index' ,滚动行。

如果 1'columns' ,滚动列。

closedstr,默认无

如果 'right' ,则从计算中排除窗口中的第一个点。

如果 'left' ,则从计算中排除窗口中的最后一个点。

如果 'both' ,则从计算中排除窗口中的任何点。

如果 'neither' ,则从计算中排除窗口中的第一个和最后一个点。

默认 None ( 'right' )。

methodstr {‘single’, ‘table’},默认 ‘single’

对单个列或行 ('single') 或整个对象 ('table') 执行滚动操作。

此参数仅在方法调用中指定engine='numba' 时实现。

返回

Window 子类,如果通过了 win_type
Rolling 子类,如果 win_type 未通过

注意

有关更多使用细节和示例,请参阅窗口操作。

例子

>>> 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

窗户

窗口长度为 2 个观测值的滚动总和。

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

窗口跨度为 2 秒的滚动总和。

>>> df_time = 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_time
                       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
>>> df_time.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

具有 2 个观察值的前瞻性窗口的滚动总和。

>>> indexer = pd.api.indexers.FixedForwardWindowIndexer(window_size=2)
>>> df.rolling(window=indexer, min_periods=1).sum()
     B
0  1.0
1  3.0
2  2.0
3  4.0
4  4.0

min_periods

窗口长度为 2 个观察值的滚动总和,但只需要至少 1 个观察值即可计算一个值。

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

中央

将结果分配给窗口索引中心的滚动总和。

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

win_type

使用 Scipy 'gaussian' 窗口类型,窗口长度为 2 的滚动和。聚合函数中需要std

>>> df.rolling(2, win_type='gaussian').sum(std=3)
          B
0       NaN
1  0.986207
2  2.958621
3       NaN
4       NaN

相关用法


注:本文由纯净天空筛选整理自pandas.pydata.org大神的英文原创作品 pandas.DataFrame.rolling。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。