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


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。