在python中使用Prophet预测每个类别的值

在python中使用Prophet预测每个类别的值,python,for-loop,time-series,facebook-prophet,Python,For Loop,Time Series,Facebook Prophet,我对用Python和Prophet编写时间序列非常陌生。我有一个带有变量的数据集,包括文章代码、日期和销售数量。我试图用python中的Prophet预测每月每篇文章的销售量 我尝试使用for循环为每篇文章执行预测,但我不确定如何在输出(预测)数据中显示文章类型,以及如何直接从“for循环”将其写入文件 我希望输出如下所示,并希望将其直接从“for循环”写入输出文件 提前感谢。通过articletype分隔数据帧,然后尝试将所有预测值存储在字典中 def get_prediction(df):

我对用Python和Prophet编写时间序列非常陌生。我有一个带有变量的数据集,包括文章代码、日期和销售数量。我试图用python中的Prophet预测每月每篇文章的销售量

我尝试使用for循环为每篇文章执行预测,但我不确定如何在输出(预测)数据中显示文章类型,以及如何直接从“for循环”将其写入文件

我希望输出如下所示,并希望将其直接从“for循环”写入输出文件


提前感谢。

通过
articletype
分隔数据帧,然后尝试将所有预测值存储在字典中

def get_prediction(df):
    prediction = {}
    df = df.rename(columns={'Date of the document': 'ds','Quantity sold': 'y', 'Article bar code': 'article'})
    list_articles = df2.article.unique()

    for article in list_articles:
        article_df = df2.loc[df2['article'] == article]
        # set the uncertainty interval to 95% (the Prophet default is 80%)
        my_model = Prophet(weekly_seasonality= True, daily_seasonality=True,seasonality_prior_scale=1.0)
        my_model.fit(article_df)
        future_dates = my_model.make_future_dataframe(periods=6, freq='MS')
        forecast = my_model.predict(future_dates)
        prediction[article] = forecast
    return prediction

现在,预测将对每种类型的文章进行预测。

我知道这很旧,但我遇到了一个类似的问题,这对我很有效:

df = pd.read_csv('file.csv')
df = pd.DataFrame(df)
df = df.rename(columns={'Date of the document': 'ds', 'Quantity sold': 'y', 'Article bar code': 'Article'})
#I filter first Articles bar codes with less than 3 records to avoid errors as prophet only works for 2+ records by group
df = df.groupby('Article').filter(lambda x: len(x) > 2)

df.Article = df.Article.astype(str)

final = pd.DataFrame(columns=['Article','ds','yhat'])

grouped = df.groupby('client_id')
for g in grouped.groups:
    group = grouped.get_group(g)
    m = Prophet()
    m.fit(group)
    future = m.make_future_dataframe(periods=365)
    forecast = m.predict(future)
    #I add a column with Article bar code
    forecast['Article'] = g
    #I concad all results in one dataframe
    final = pd.concat([final, forecast], ignore_index=True)

final.head(10)

我现在已经执行了这个解决方案,但是由于文章条形码中的总级别约为2500,记录数超过300万条,这需要很长时间。将检查并更新答案。谢谢@Vj-@Vj第3行有一个打字错误
df=df.rename(列={'document'Date':'ds','Quantity salled':'y','Article bar code':'Article'})
应该是:
df2=df.rename(列={'document'Date':'ds','Quantity salled':'y','Article bar code':'Article'})
否?
df = pd.read_csv('file.csv')
df = pd.DataFrame(df)
df = df.rename(columns={'Date of the document': 'ds', 'Quantity sold': 'y', 'Article bar code': 'Article'})
#I filter first Articles bar codes with less than 3 records to avoid errors as prophet only works for 2+ records by group
df = df.groupby('Article').filter(lambda x: len(x) > 2)

df.Article = df.Article.astype(str)

final = pd.DataFrame(columns=['Article','ds','yhat'])

grouped = df.groupby('client_id')
for g in grouped.groups:
    group = grouped.get_group(g)
    m = Prophet()
    m.fit(group)
    future = m.make_future_dataframe(periods=365)
    forecast = m.predict(future)
    #I add a column with Article bar code
    forecast['Article'] = g
    #I concad all results in one dataframe
    final = pd.concat([final, forecast], ignore_index=True)

final.head(10)