當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python pandas.Series.rolling用法及代碼示例


用法:

Series.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.Series.rolling。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。