我想创建一个模型来预测每个步骤在多个星期内每个产品的未来需求(预测明年每个产品的每周需求)
我有一些小尺寸的csv(大约100-200条记录)。
此处有关CSV列的信息:- 第一列 makeId 代表产品的ID。 第二列 areaId 代表产品销售地点的内部ID。 第三列日期表示日期,以mm / dd / yyyy格式表示。 第四列金额表示在给定区域内给定一周内对给定产品的需求。
样本文件1-
示例文件2-
样本文件3-
我曾考虑使用Arima模型,但是对于如何将数据转换成每周格式并使用它来预测每个make id感到有些困惑。
任何建议都会有所帮助,因为我是时间序列问题的新手
答案 0 :(得分:2)
注意:快速浏览您的示例,似乎您已经有每周数据。如果不是这样,或者您只是想设置数据框以使用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
列已正确设置为datetime对象。
下一步是对数据进行重新采样,以便获得一个新值来捕获数据中的每周活动。这需要选择一种方法来合并Amount
字段中的数据,因为您要显示的值可能会合并多天的值。在这里,我将选择mean()
,以使新值是该周内当日数据的平均值。
df['Amount_weekly'] = df['Amount'].resample('W', how='mean')
由于您正在汇总数据,因此该函数将返回一个新系列,因此在这里,我将该新系列放入df
中的新列中,即df['Amount_weekly']
。
因此,您将获得一个按时间序列编制索引的数据框,其中的一列显示每周重新采样的数据。这是在statsmodels.