dataframe通过销售天数和销售量预测未来销量的代码
时间: 2024-02-26 22:55:56 浏览: 53
好的,以下是一个使用ARIMA模型对时间序列进行预测的Python代码示例:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.tsa.arima.model import ARIMA
# 读取数据
df = pd.read_csv('sales_data.csv')
df = df[['date', 'sales']]
df['date'] = pd.to_datetime(df['date'])
df = df.set_index('date')
# 绘制时间序列图
plt.plot(df)
plt.show()
# 平稳性检验
from statsmodels.tsa.stattools import adfuller
adf_result = adfuller(df['sales'])
print(f'ADF Statistic: {adf_result[0]}')
print(f'p-value: {adf_result[1]}')
# 差分处理
diff = df.diff().dropna()
# 绘制差分后的时间序列图
plt.plot(diff)
plt.show()
# 再次进行平稳性检验
adf_result_diff = adfuller(diff['sales'])
print(f'ADF Statistic: {adf_result_diff[0]}')
print(f'p-value: {adf_result_diff[1]}')
# 拆分训练集和测试集
train_data = diff['sales'][:-7]
test_data = diff['sales'][-7:]
# ARIMA模型建模
model = ARIMA(train_data, order=(1, 1, 1))
model_fit = model.fit()
# 模型预测未来7天的销量
forecast = model_fit.forecast(steps=7)
# 将预测结果进行反差分处理
forecast = np.append([train_data.iloc[-1]], forecast)
forecast = np.cumsum(forecast)
forecast = pd.Series(forecast, index=test_data.index)
# 绘制预测结果
plt.plot(train_data, label='train')
plt.plot(test_data, label='test')
plt.plot(forecast, label='forecast')
plt.legend()
plt.show()
```
其中,`sales_data.csv`为包含销售天数和销售量的数据文件,需替换为实际的数据文件名。代码中使用了ARIMA模型对差分后的时间序列进行建模,并预测未来7天的销量。最后,将预测结果进行反差分处理,并绘制预测结果图。需要注意的是,代码中的ARIMA模型参数为(1, 1, 1),需要根据实际情况进行调整。
阅读全文