Skip to content

预处理

functime 支持使用 Polars 进行并行时间序列预处理。所有 functime 预处理器将面板 DataFrame 作为输入,并逐个时间序列地转换每个时间序列(即作为并行化的 group_by 操作)。

时间序列变换通常用于稳定时间序列(例如,boxcox 用于方差稳定)或通过一阶差分或去趋势使时间序列平稳。一些变换也是可逆的,例如diffdetrend,这对于将变换后的时间序列的预测转换回原始尺度是很有用的。

查看API参考以获取详细信息。

快速示例

差分

应用k阶差分。这个变换是可逆的。

from functime.preprocessing import diff

transformer = diff(order=1)
X_new = X.pipe(transformer).collect()
X_original = transformer.invert(X_new)

季节性差分

应用k阶差分,偏移sp个周期。此变换是可逆的。

from functime.preprocessing import diff

# Assume X is a monthly dataset with seasonal period = 12
transformer = diff(order=1, sp=12)
X_new = X.pipe(transformer).collect()
X_original = transformer.invert(X_new)

去趋势(线性)

去除每个时间序列的线性趋势。此变换是可逆的。

from functime.preprocessing import detrend

transformer = detrend(method="linear")
X_new = X.pipe(transformer).collect()
X_original = transformer.invert(X_new)

去趋势(均值)

去除每个时间序列的平均趋势。这个变换是可逆的。

from functime.preprocessing import detrend

transformer = detrend(method="mean")
X_new = X.pipe(transformer).collect()
X_original = transformer.invert(X_new)

博克斯-考克斯变换

对每个时间序列应用优化的 Box-Cox 变换。这个变换是可逆的。

from functime.preprocessing import boxcox

transformer = boxcox(method="mle")
X_new = X.pipe(transformer).collect()
X_original = transformer.invert(X_new)

Yeo-Johnson

对每个时间序列应用优化的Yeo-Johnson变换。该变换是可逆的。

from functime.preprocessing import yeojohnson
transformer = yeojohnson()
X_new = X.pipe(transformer).collect()
X_original = transformer.invert(X_new)

局部缩放

通过减去均值并除以标准差来标准化每个时间序列。该转换是可逆的。

from functime.preprocessing import scale

transformer = scale(use_mean=True, use_std=True)
X_new = X.pipe(transformer).collect()
X_original = transformer.invert(X_new)

滚动统计

给定一系列窗口大小,对每个时间序列在每列上应用滚动统计。这种变换是不可逆的。当前支持以下统计:meanminmaxmlm(最大值减去最小值),sumstdcv(变异系数)。

from functime.preprocessing import roll

# The following code generates moving averages (MA10, MA30 and MA60)
# and moving sums for a panel dataset of daily time-series.

transformer = roll(
    window_sizes=[10, 30, 60],
    stats=["mean", "sum"],
    freq="1d"
)
X_new = X.pipe(transformer).collect()