forecasting values for each category using Prophet in python

前端 未结 2 1816
野趣味
野趣味 2021-01-03 08:13

I am very new to doing time series in Python and Prophet. I have a dataset with the variables article code, date and quantity sold. I am trying to forecast the quantity sold

相关标签:
2条回答
  • 2021-01-03 08:51

    I know this is old, but I faced a similar problem and this worked for me:

    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)
    
    0 讨论(0)
  • 2021-01-03 09:03

    Separate your dataframe by articletype and then try storing all your predicted values in a dictionary

    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
    

    now the prediction will have forecasts for each type of article.

    0 讨论(0)
提交回复
热议问题