如何将Holt-Winters指数平滑模型的预测值导出至Excel?
将Holt-Winters预测值导出至Excel
核心思路
statsmodels生成的预测结果是pandas Series格式,直接用pandas的to_excel()方法就能导出到Excel,需要依赖openpyxl库作为xlsx格式的引擎。
步骤与优化后的代码
首先安装所需依赖(如果未安装):
pip install pandas openpyxl
修改你的代码,注意不要重复调用fit()(重复拟合会浪费计算资源,且可能因随机种子导致结果细微差异),复用已拟合好的results_1对象:
import statsmodels as sm import pandas as pd # 初始化模型并拟合(仅拟合一次) model_expo1 = sm.tsa.holtwinters.ExponentialSmoothing( monthly_series, trend='add', seasonal='add', seasonal_periods=12 ) results_1 = model_expo1.fit() # 计算历史数据拟合值 fit1 = results_1.predict(start=0, end=len(monthly_series)-1) # 计算MAE mae1 = abs(monthly_series - fit1).mean() # 生成包含历史拟合+未来12期的完整预测 forecast1 = results_1.predict(start=0, end=len(monthly_series)+11) # 绘制对比图表 monthly_series.plot(label='actual') forecast1.plot(label='forecast') # --- 导出预测值到Excel --- # 整理成DataFrame,方便对比实际值与预测值 export_df = pd.DataFrame({ '实际值': monthly_series, '拟合/预测值': forecast1 }) # 导出到Excel,index=True保留时间索引(若monthly_series带时间索引) export_df.to_excel('holt_winters预测结果.xlsx', engine='openpyxl', index=True)
关键说明
- 若
monthly_series是带时间索引的pandas Series,导出后的Excel会自动保留时间列,便于数据对应。 engine='openpyxl'是导出xlsx格式的必要参数,若需导出xls格式可改用engine='xlwt'(需额外安装xlwt库)。- 可通过
to_excel的参数自定义导出细节:比如sheet_name='预测结果'设置工作表名称,na_rep='-'填充空值等。
内容的提问来源于stack exchange,提问作者Asad Ali
相关产品推荐
相关产品推荐

