食用菌销售时间序列预测:基于ARIMA模型
食用菌销售时间序列预测:基于ARIMA模型
本程序使用Python中的Pandas、Matplotlib和Statsmodels库对食用菌销售数据进行时间序列分析和预测,并使用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')
- 设置索引:
sales_data.set_index('销售日期', inplace=True)
- 提取食用菌销售数据:
category_sales = sales_data[sales_data['分类名称'] == '食用菌']
- 按月汇总数据:
monthly_data = category_sales.resample('M').sum()
- 绘制时间序列图:
# 绘制时间序列图
plt.plot(monthly_data.index, monthly_data['销量(千克)'])
plt.xlabel('Date')
plt.ylabel('Value')
plt.title('Time Series')
plt.xticks(rotation=45)
plt.show()
- 时间序列分解:
decomposition = seasonal_decompose(monthly_data['销量(千克)'], model='additive')
trend = decomposition.trend
seasonal = decomposition.seasonal
residual = decomposition.resid
- 绘制自相关函数 (ACF) 和偏自相关函数 (PACF) 图:
plot_acf(monthly_data['销量(千克)'])
plot_pacf(monthly_data['销量(千克)'])
plt.show()
- 建立ARIMA模型:
model = ARIMA(monthly_data['销量(千克)'], order=(p, d, q))
model_fit = model.fit()
- 预测未来7个月的销量:
forecast = model_fit.forecast(steps=7)[0]
说明:
- '总表(1).xlsx' 是您的销售数据文件,请根据实际情况修改。
- (p, d, q) 是ARIMA模型的阶数,需要根据ACF和PACF图确定。
代码示例:
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')
sales_data.set_index('销售日期', inplace=True)
category_sales = sales_data[sales_data['分类名称'] == '食用菌']
monthly_data = category_sales.resample('M').sum()
# 绘制时间序列图
plt.plot(monthly_data.index, monthly_data['销量(千克)'])
plt.xlabel('Date')
plt.ylabel('Value')
plt.title('Time Series')
plt.xticks(rotation=45)
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()
# 假设ARIMA模型的阶数为 (5, 1, 0)
model = ARIMA(monthly_data['销量(千克)'], order=(5, 1, 0))
model_fit = model.fit()
forecast = model_fit.forecast(steps=7)[0]
print(f'未来7个月的预测销量:{forecast}')
注意:
- 本程序仅供参考,实际应用中需要根据您的具体情况进行调整。
- ARIMA模型的阶数需要根据ACF和PACF图确定,并进行模型评估和选择最佳模型。
- 数据质量会影响模型预测效果,请确保数据准确可靠。
原文地址: https://www.cveoy.top/t/topic/nXNo 著作权归作者所有。请勿转载和采集!