Python 时间序列分析:基于 ARIMA 模型预测商品销量
使用 Python 的 ARIMA 模型预测商品销量
本文将介绍如何使用 Python 的 ARIMA 模型对商品销量进行预测,并提供代码示例,帮助你实现基于天为单位的未来七天销量预测。
示例代码:
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.seasonal import seasonal_decompose
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
from statsmodels.tsa.arima_model import ARIMA
# 读取数据
sales_data = pd.read_excel('总表 (1).xlsx')
print(sales_data)
data=pd.DataFrame(sales_data)
data
sales_data.set_index('销售日期',drop=False,append=False,inplace=True,verify_integrity=False)
# 将数据按天进行重采样
daily_data = sales_data.resample('D').sum()
# 循环预测每个品类的销售总量
for category in sales_data['分类名称'].unique():
category_sales = sales_data[sales_data['分类名称'] == category]
monthly_data = category_sales.resample('S').sum()
# 绘制时间序列图
plt.plot(monthly_data.index, monthly_data['销量(千克)'])
plt.xlabel('销售日期')
plt.ylabel('销量(千克)')
plt.title(f'{category}时间序列图')
plt.xticks(rotation=15)
plt.show()
decomposition = seasonal_decompose(monthly_data['销量(千克)'], model='additive')
trend = decomposition.trend
seasonal = decomposition.seasonal
residual = decomposition.resid
plot_acf(monthly_data['销量(千克)'])
plot_pacf(monthly_data['销量(千克)'])
plt.show()
model = ARIMA(monthly_data['销量(千克)'], order=(7,1,0))
model_fit = model.fit()
forecast = model_fit.forecast(steps=7)[0]
print(f'{category}预测销售总量:{forecast}')
代码解释:
- 读取数据并重采样: 使用
pd.read_excel()读取 Excel 文件,并使用resample('D')将数据按照天为单位进行重采样,以便进行每天的销售总量预测。 - 循环预测每个品类: 使用
for循环遍历每个品类,并对每个品类进行以下操作:- 获取该品类的销售数据
category_sales - 使用
resample('S')将该品类的销售数据按照秒为单位进行重采样,并对每个品类的销量数据进行时间序列分解,并绘制时间序列图。 - 使用
plot_acf()和plot_pacf()绘制自相关函数 (ACF) 和偏自相关函数 (PACF) 图,帮助确定模型参数。 - 使用
ARIMA()创建 ARIMA 模型,并将模型参数设置为(7, 1, 0)。 - 使用
model.fit()拟合模型,并使用model_fit.forecast()预测未来 7 天的销量。
- 获取该品类的销售数据
- 输出预测结果: 循环遍历每个品类的预测结果,并输出预测结果。
结论:
本示例代码展示了如何使用 Python 的 ARIMA 模型进行商品销量预测。你可以根据自己的实际情况修改模型参数、预测时间等,以获得更准确的预测结果。
注意:
- 本示例代码仅供参考,实际应用中需要根据数据的具体情况进行调整。
- ARIMA 模型假设时间序列数据具有平稳性,在实际应用中,可能需要对数据进行预处理,例如差分等。
- 预测结果仅供参考,实际销量可能会受到多种因素的影响。
原文地址: https://www.cveoy.top/t/topic/nRvl 著作权归作者所有。请勿转载和采集!