用法:
DataFrame.rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=None, method='single')
提供滚动窗口计算。
- window:int、offset 或 BaseIndexer 子类
移动窗口的大小。
如果是整数,则为每个窗口使用的固定数量的观察值。
如果是偏移量,则为每个窗口的时间段。每个窗口的大小都将根据time-period 中包含的观察结果进行调整。这仅对 datetimelike 索引有效。要了解有关偏移和频率字符串的更多信息,请参阅此链接。
如果是 BaseIndexer 子类,则窗口边界基于定义的
get_window_bounds
方法。其他滚动关键字参数,即min_periods
、center
和closed
将传递给get_window_bounds
。- min_periods:整数,默认无
具有值所需的窗口中的最小观察数;否则,结果为
np.nan
。对于由偏移量指定的窗口,
min_periods
将默认为 1。对于由整数指定的窗口,
min_periods
将默认为窗口的大小。- center:布尔值,默认为 False
如果为 False,则将窗口标签设置为窗口索引的右边。
如果为 True,则将窗口标签设置为窗口索引的中心。
- win_type:str,默认无
如果
None
,则所有点的权重均等。如果是字符串,它必须是有效的 scipy.signal 窗口函数。
某些 Scipy 窗口类型需要在聚合函数中传递额外的参数。附加参数必须与 Scipy 窗口类型方法签名中指定的关键字匹配。
- on:str,可选
对于 DataFrame,计算滚动窗口的列标签或索引级别,而不是 DataFrame 的索引。
提供的整数列被忽略并从结果中排除,因为整数索引不用于计算滚动窗口。
- axis:int 或 str,默认为 0
如果
0
或'index'
,滚动行。如果
1
或'columns'
,滚动列。- closed:str,默认无
如果
'right'
,则从计算中排除窗口中的第一个点。如果
'left'
,则从计算中排除窗口中的最后一个点。如果
'both'
,则从计算中排除窗口中的任何点。如果
'neither'
,则从计算中排除窗口中的第一个和最后一个点。默认
None
('right'
)。- method:str {‘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
相关用法
- Python pandas.DataFrame.round用法及代码示例
- Python pandas.DataFrame.rename用法及代码示例
- Python pandas.DataFrame.radd用法及代码示例
- Python pandas.DataFrame.rename_axis用法及代码示例
- Python pandas.DataFrame.rank用法及代码示例
- Python pandas.DataFrame.reset_index用法及代码示例
- Python pandas.DataFrame.reorder_levels用法及代码示例
- Python pandas.DataFrame.replace用法及代码示例
- Python pandas.DataFrame.rdiv用法及代码示例
- Python pandas.DataFrame.rtruediv用法及代码示例
- Python pandas.DataFrame.rmod用法及代码示例
- Python pandas.DataFrame.resample用法及代码示例
- Python pandas.DataFrame.rsub用法及代码示例
- Python pandas.DataFrame.rpow用法及代码示例
- Python pandas.DataFrame.reindex用法及代码示例
- Python pandas.DataFrame.rfloordiv用法及代码示例
- Python pandas.DataFrame.rmul用法及代码示例
- Python pandas.DataFrame.reindex_like用法及代码示例
- Python pandas.DataFrame.ewm用法及代码示例
- Python pandas.DataFrame.dot用法及代码示例
注:本文由纯净天空筛选整理自pandas.pydata.org大神的英文原创作品 pandas.DataFrame.rolling。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。