TimeSeriesDataFrame.convert_frequency¶
- TimeSeriesDataFrame.convert_frequency(freq: str | DateOffset, agg_numeric: str = 'mean', agg_categorical: str = 'first', num_cpus: int = -1, chunk_size: int = 100, **kwargs) TimeSeriesDataFrame [源]¶
将数据帧中的每个时间序列转换为给定频率。
此方法有两个用途:
将非规则采样的时间序列转换为规则时间索引。
通过下采样聚合时间序列数据(例如,将每日销售额转换为每周销售额)
标准的
df.groupby(...).resample(...)
对于大型数据集可能非常慢,因此我们将此操作并行化到多个 CPU 内核上。- 参数:
freq (Union[str, pd.DateOffset]) – 数据应转换到的频率。支持的值请参见 pandas frequency aliases。
agg_numeric ({"max", "min", "sum", "mean", "median", "first", "last"}, default = "mean") – 应用于数值列的聚合方法。
agg_categorical ({"first", "last"}, default = "first") – 应用于类别列的聚合方法。
num_cpus (int, default = -1) – 并行重采样时使用的 CPU 内核数。设置为 -1 以使用所有内核。
chunk_size (int, default = 100) – 分配给每个并行工作线程的时间序列块大小。
**kwargs – 将传递给
pandas.DataFrameGroupBy.resample
的其他关键字参数。
- 返回:
ts_df – 一个新的时间序列数据帧,其中时间序列已按新频率重新采样。如果原始数据在给定周期内没有信息,输出可能包含用
NaN
表示的缺失值。- 返回类型:
示例
将非规则采样的时间序列数据转换为规则索引
>>> ts_df target item_id timestamp 0 2019-01-01 NaN 2019-01-03 1.0 2019-01-06 2.0 2019-01-07 NaN 1 2019-02-04 3.0 2019-02-07 4.0 >>> ts_df.convert_frequency(freq="D") target item_id timestamp 0 2019-01-01 NaN 2019-01-02 NaN 2019-01-03 1.0 2019-01-04 NaN 2019-01-05 NaN 2019-01-06 2.0 2019-01-07 NaN 1 2019-02-04 3.0 2019-02-05 NaN 2019-02-06 NaN 2019-02-07 4.0
将季度数据下采样到年度频率
>>> ts_df target item_id timestamp 0 2020-03-31 1.0 2020-06-30 2.0 2020-09-30 3.0 2020-12-31 4.0 2021-03-31 5.0 2021-06-30 6.0 2021-09-30 7.0 2021-12-31 8.0 >>> ts_df.convert_frequency("YE") target item_id timestamp 0 2020-12-31 2.5 2021-12-31 6.5 >>> ts_df.convert_frequency("YE", agg_numeric="sum") target item_id timestamp 0 2020-12-31 10.0 2021-12-31 26.0