You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将Pandas脚本迁移至Polars时,如何高效实现statsmodels季节分解?

Polars中实现statsmodels季节分解的最优方案

最高效实现方式

目前Polars没有内置的季节分解函数,最直接高效的方式是将Polars的时间序列数据转换为Pandas对象,调用statsmodels的seasonal_decompose后再转回Polars。因为seasonal_decompose是为Pandas生态设计的,直接转换的开销远低于用UDF处理。

示例代码:

import polars as pl
from statsmodels.tsa.seasonal import seasonal_decompose
import numpy as np

# 示例Polars时间序列DataFrame
df_pl = pl.DataFrame({
    'date': pl.date_range(start='2020-01-01', end='2020-12-31', interval='1d'),
    'value': np.random.randn(366)
})

# 将Polars序列转为Pandas Series
ts_pd = df_pl['value'].to_pandas()

# 执行季节分解
decompose_result = seasonal_decompose(ts_pd, model="additive")

# 将分解结果转回Polars DataFrame
decompose_df_pl = pl.DataFrame({
    'trend': decompose_result.trend.dropna(),
    'seasonal': decompose_result.seasonal,
    'resid': decompose_result.resid.dropna(),
    'observed': decompose_result.observed
})

是否需要转换为Pandas?

是的。seasonal_decompose目前仅支持Pandas的Series/DataFrame作为输入,Polars没有提供对应的原生实现,所以转换是必要的。这种转换的性能开销极小,相对于UDF的额外开销可以忽略。

能否通过UDF实现?

理论上可以用Polars的map_elements或map_groups封装seasonal_decompose,但完全不推荐:

  • UDF属于Python层面的循环处理,性能远低于直接转换后调用原生兼容函数。
  • 分解后的结果需要手动处理格式,反而增加代码复杂度。

如果是分组时间序列场景,更高效的方式是按分组拆分Polars数据为多个Pandas对象,分别处理后再合并回Polars,而非使用UDF。

内容的提问来源于stack exchange,提问作者Lautaro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 04:52:07