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


Python cudf.DataFrame.rolling用法及代碼示例


用法:

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

滾動窗口計算。

參數

windowint、offset 或 BaseIndexer 子類

窗口的大小,即用於計算統計量的觀察數。對於日期時間索引,可以提供偏移量而不是 int.。偏移量必須可轉換為時間增量。與固定窗口大小相反,每個窗口的大小都將適應偏移量指定的時間段內的觀察結果。如果傳遞了 BaseIndexer 子類,則根據定義的 get_window_bounds 方法計算窗口邊界。

min_periods整數,可選

窗口中要求為非空的最小觀測數,以使結果為非空。如果未提供或None , min_periods 等於窗口大小。

center布爾型,可選

如果 True ,則將結果設置在窗口的中心。如果False(默認),結果設置在窗口的右邊。

返回

Rolling 對象。

例子

>>> import cudf
>>> a = cudf.Series([1, 2, 3, None, 4])

窗口大小為 2 的滾動總和。

>>> print(a.rolling(2).sum())
0
1    3
2    5
3
4
dtype: int64

窗口大小為 2 和 min_periods 1 的滾動和。

>>> print(a.rolling(2, min_periods=1).sum())
0    1
1    3
2    5
3    3
4    4
dtype: int64

窗口大小為 3 的滾動計數。

>>> print(a.rolling(3).count())
0    1
1    2
2    3
3    2
4    2
dtype: int64

窗口大小為 3 的滾動計數,但結果集位於窗口的中心。

>>> print(a.rolling(3, center=True).count())
0    2
1    3
2    2
3    2
4    1 dtype: int64

由偏移量指定的可變窗口大小的滾動最大值;僅對日期時間索引有效。

>>> a = cudf.Series(
...     [1, 9, 5, 4, np.nan, 1],
...     index=[
...         pd.Timestamp('20190101 09:00:00'),
...         pd.Timestamp('20190101 09:00:01'),
...         pd.Timestamp('20190101 09:00:02'),
...         pd.Timestamp('20190101 09:00:04'),
...         pd.Timestamp('20190101 09:00:07'),
...         pd.Timestamp('20190101 09:00:08')
...     ]
... )
>>> print(a.rolling('2s').max())
2019-01-01T09:00:00.000    1
2019-01-01T09:00:01.000    9
2019-01-01T09:00:02.000    9
2019-01-01T09:00:04.000    4
2019-01-01T09:00:07.000
2019-01-01T09:00:08.000    1
dtype: int64

使用 apply 方法在窗口上應用自定義函數

>>> import numpy as np
>>> import math
>>> b = cudf.Series([16, 25, 36, 49, 64, 81], dtype=np.float64)
>>> def some_func(A):
...     b = 0
...     for a in A:
...         b = b + math.sqrt(a)
...     return b
...
>>> print(b.rolling(3, min_periods=1).apply(some_func))
0     4.0
1     9.0
2    15.0
3    18.0
4    21.0
5    24.0
dtype: float64

這也適用於通過偏移設置的窗口滾動

>>> import pandas as pd
>>> c = cudf.Series(
...     [16, 25, 36, 49, 64, 81],
...     index=[
...          pd.Timestamp('20190101 09:00:00'),
...          pd.Timestamp('20190101 09:00:01'),
...          pd.Timestamp('20190101 09:00:02'),
...          pd.Timestamp('20190101 09:00:04'),
...          pd.Timestamp('20190101 09:00:07'),
...          pd.Timestamp('20190101 09:00:08')
...      ],
...     dtype=np.float64
... )
>>> print(c.rolling('2s').apply(some_func))
2019-01-01T09:00:00.000     4.0
2019-01-01T09:00:01.000     9.0
2019-01-01T09:00:02.000    11.0
2019-01-01T09:00:04.000     7.0
2019-01-01T09:00:07.000     8.0
2019-01-01T09:00:08.000    17.0
dtype: float64

相關用法


注:本文由純淨天空篩選整理自rapids.ai大神的英文原創作品 cudf.DataFrame.rolling。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。