python - 在多周内预测产品的未来需求
问题描述
我想创建一个模型,在每个步骤中预测每个产品在数周内的未来需求(预测每个产品明年的每周需求)
我有一些小尺寸(大约 100-200 条记录)csv。
这里有关 CSV 列的信息:- 第一列makeId代表产品的 id。第二列areaId表示产品销售位置的内部 id。第三列日期以 mm/dd/yyyy 格式表示日期。第四列数量表示给定区域在给定一周内对给定产品的需求。
样本文件 1-
示例文件 2-
示例文件 3-
我想过使用 Arima 模型,但我对如何将数据转换为每周格式并使用它来预测每个 make id 有点困惑。
任何建议都会有所帮助,因为我是时间序列问题的新手
解决方案
注意:快速浏览一下您的示例,您似乎已经有了每周数据。如果这不是真的,或者您只是希望将数据框设置为能够使用 ARIMA 模型,则以下答案将有所帮助。
对您的问题的快速回答是:使用pandas
包将数据读入/操作到dataframe
对象中,然后使用.resample()
每周频率的方法,例如:.resample('W')
.
更多细节:
对于时间序列分析,大多数应用程序将受益于将数据索引设置为时间变量。在您的情况下,您可以使用以下方法在读取数据时执行此操作pandas
:
import pandas as pd
df = pd.read_csv('/path/to/your_data.csv', parse_dates=['date'], index_col='date')
如果您无法读取它,并且需要更改数据框,您可以执行以下操作:
df = df.set_index('date')
这假定该date
列已正确设置为日期时间对象。
下一步是对数据进行重新采样,以便您获得一个新值来捕获数据中的每周活动。这需要选择一种方法来组合您的Amount
字段中的数据,因为您希望显示一个可以组合多天的值的值。在这里,我将选择mean()
,以便新值是该周中存在的那些天的数据的平均值。
df['Amount_weekly'] = df['Amount'].resample('W', how='mean')
由于您正在聚合数据,因此该函数返回一个新系列,所以在这里我将该新系列放入您的新列中df
,即df['Amount_weekly']
.
因此,您将拥有一个时间序列索引数据框,其中有一列显示每周重新采样的数据。这将是在 ARIMA 模型中使用的适当格式,例如statsmodels.
推荐阅读
- python - 给定字符串中最长和最常见的单词
- kubernetes - 具有规范类型 ClusterIP 和规范类型 Nodeport 的 Kubernetes 服务
- mpi - MPI 在哪里定位新进程?
- .net - 部分类中的数据自动化,数据库优先方法
- project - 我正在将 RNN 与 mediapipe 一起用于我的项目工作
- ios - 如何编码 NSMutableData
- tensorflow - 当我们在tensorflow服务配置文件中添加模型并重新加载配置文件时,如何将model_version_policy添加到“all”
- c# - 转到xamarin中的页面页面时如何在最后触发方法?
- reactjs - 将获取的数据传递给反应组件
- html - 如何制作破碎/波浪状的网格