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


Python cudf.DataFrame.resample用法及代码示例


用法:

DataFrame.resample(rule, axis=0, closed=None, label=None, convention='start', kind=None, loffset=None, base=None, on=None, level=None, origin='start_day', offset=None)

转换(“resample”)给定时间序列数据的频率。

参数

rule: str

表示要使用的频率的偏移量字符串。请注意,尚不支持 DateOffset 对象。

closed: {“right”, “left”}, default None

bin 区间的哪一侧是闭合的。除“M” 和“W” 的默认值为“right” 之外,所有频率偏移的默认值为“left”。

label: {“right”, “left”}, default None

使用哪个 bin 边标签来标记存储桶。除“M” 和“W” 的默认值为“right” 之外,所有频率偏移的默认值为“left”。

on: str, optional

对于 DataFrame,使用列而不是重新采样的索引。列必须是datetime-like。

level: str or int, optional

对于 MultiIndex,使用级别而不是用于重采样的索引。级别必须是datetime-like。

返回

重采样器对象

注意

请注意,结果中索引的 dtype(或 ‘on’ 列,如果使用'on=')将是最接近重采样频率的频率。例如,如果从纳秒重新采样到毫秒,则索引将是 dtype 'datetime64[ms]'。

例子

首先,我们创建一个间隔为 1 分钟的时间序列:

>>> index = cudf.date_range(start="2001-01-01", periods=10, freq="1T")
>>> sr = cudf.Series(range(10), index=index)
>>> sr
2001-01-01 00:00:00    0
2001-01-01 00:01:00    1
2001-01-01 00:02:00    2
2001-01-01 00:03:00    3
2001-01-01 00:04:00    4
2001-01-01 00:05:00    5
2001-01-01 00:06:00    6
2001-01-01 00:07:00    7
2001-01-01 00:08:00    8
2001-01-01 00:09:00    9
dtype: int64

下采样到 3 分钟间隔,然后是 “sum” 聚合:

>>> sr.resample("3T").sum()
2001-01-01 00:00:00     3
2001-01-01 00:03:00    12
2001-01-01 00:06:00    21
2001-01-01 00:09:00     9
dtype: int64

使用每个间隔的右侧标记箱:

>>> sr.resample("3T", label="right").sum()
2001-01-01 00:03:00     3
2001-01-01 00:06:00    12
2001-01-01 00:09:00    21
2001-01-01 00:12:00     9
dtype: int64

关闭区间的右侧而不是左侧:

>>> sr.resample("3T", closed="right").sum()
2000-12-31 23:57:00     0
2001-01-01 00:00:00     6
2001-01-01 00:03:00    15
2001-01-01 00:06:00    24
dtype: int64

上采样到 30 秒间隔:

>>> sr.resample("30s").asfreq()[:5]  # show the first 5 rows
2001-01-01 00:00:00       0
2001-01-01 00:00:30    <NA>
2001-01-01 00:01:00       1
2001-01-01 00:01:30    <NA>
2001-01-01 00:02:00       2
dtype: int64

使用 “bfill” 方法对空值进行上采样和填充:

>>> sr.resample("30s").bfill()[:5]
2001-01-01 00:00:00    0
2001-01-01 00:00:30    1
2001-01-01 00:01:00    1
2001-01-01 00:01:30    2
2001-01-01 00:02:00    2
dtype: int64

按 Dataframe 的指定列重采样:

>>> df = cudf.DataFrame({
...     "price": [10, 11, 9, 13, 14, 18, 17, 19],
...     "volume": [50, 60, 40, 100, 50, 100, 40, 50],
...     "week_starting": cudf.date_range(
...         "2018-01-01", periods=8, freq="7D"
...     )
... })
>>> df
price  volume week_starting
0     10      50    2018-01-01
1     11      60    2018-01-08
2      9      40    2018-01-15
3     13     100    2018-01-22
4     14      50    2018-01-29
5     18     100    2018-02-05
6     17      40    2018-02-12
7     19      50    2018-02-19
>>> df.resample("M", on="week_starting").mean()
               price     volume
week_starting
2018-01-31      11.4  60.000000
2018-02-28      18.0  63.333333

相关用法


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