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

使用seasonal_decompose分解两年销售时间序列时,如何计算freq参数?

如何为seasonal_decompose()计算frequency参数?

嘿,我来帮你搞定这个freq参数的问题!你手里有两年的销售数据,要分解季节性、趋势和残差,核心就是确定这个seasonal_decompose()里的freq值——它代表一个完整季节周期包含的观测值数量,得根据你的数据时间粒度来定,咱们一步步梳理:

首先得明确你的销售数据的采集周期:是按天、周、月记录的?不同粒度对应不同的freq值:

  • 如果是月度数据:这是销售数据最常见的情况,一年有12个月份,直接设freq=12就对了,两年的数据刚好能覆盖两个完整的季节性周期。
  • 如果是日度数据:
    • 要是想捕捉年度季节性(比如春节、圣诞这类年度消费高峰),一年按365天算,设freq=365;如果数据包含闰年,也可以用366,但一般365足够。
    • 要是关注周度季节性(比如每周六日销量更高),一个周期是7天,freq=7就可以。
  • 如果是周度数据:一年大概有52周,设freq=52就能对应年度季节性。

要是你不确定自己数据的时间粒度,可以用一行代码自动推断:

print(df.index.inferred_freq)

它会返回类似'D'(日度)、'W'(周度)、'M'(月度)的标识,再对应上面的规则设置freq就行。

最后给你调整后的代码示例(假设是月度数据):

import pandas as pd
import statsmodels.api as sm
df = pd.read_csv('XYZ.csv')
df.date = pd.to_datetime(df.date)
df.set_index('date', inplace=True)
# 月度数据设置freq=12,模型用你选的additive
res = sm.tsa.seasonal_decompose(df.colA.interpolate(), freq=12, model='additive')
resplot = res.plot()
# 提取分解后的各部分
observed = res.observed
seasonality = res.seasonal
trend = res.trend
residual = res.resid

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:48:31