AttributeError: 'RangeIndex' object has no attribute 'inferred_freq'

AttributeError: 'RangeIndex' object has no attribute 'inferred_freq'

我正尝试在 python 3.x 中进行预测。所以我写了下面的代码

from statsmodels.tsa.seasonal import seasonal_decompose
decomposition = seasonal_decompose(ts_log)

trend = decomposition.trend
seasonal = decomposition.seasonal
residual = decomposition.resid

但我收到错误消息

AttributeError: 'RangeIndex' object has no attribute 'inferred_freq'

你能帮我解决这个问题吗

您需要确保您的熊猫系列对象 ts_log 具有推断频率的 DateTime 索引。

例如:

ts_log.index
>>> DatetimeIndex(['2014-01-01', ... '2017-12-31'],
              dtype='datetime64[ns]', name='Date', length=1461, freq='D')

注意到有一个属性 freq='D',这意味着 Pandas 推断 Pandas 系列是每日索引的(D=每日)。

现在要实现这一点,我假设您的系列有一个列调用 'Date'。这是执行此操作的代码:

# Convert your daily column from just string to DateTime (skip if already done)
ts_log['Date'] = pd.to_datetime(ts_log['Date'])
# Set the column 'Date' as index (skip if already done)
ts_log = ts_log.set_index('Date')
# Specify datetime frequency
ts_log = ts_log.asfreq('D')

除每日以外的频率,请参考此处:https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html#offset-aliases

对于 statsmodel==0.10.1 并且 ts_log 不是数据框或没有日期时间索引的数据框,请使用以下内容

decomposition = seasonal_decompose(ts_log, freq=1)