Создание прогнозов с циклом по SKU и экспорт в CSV с помощью Facebook Prophet - PullRequest
1 голос
/ 04 февраля 2020

Я новичок в Python, поэтому, пожалуйста, потерпите меня.

Я пытаюсь преобразовать то, что я думаю, может быть вложенным словарем в CSV, который я могу экспортировать. Ниже мой код:

import pandas as pd
import os 
from fbprophet import Prophet

# Read in File
df1 = pd.read_csv('File_Path.csv')

#Create Loop to Forecast Multiple SKUs
def get_prediction(df):
prediction = {}
df1 = df.rename(columns={'Date': 'ds','qty_ordered': 'y', 'item_no': 'item'})
list_items = df1.item.unique()

for item in list_items:
    item_df = df1.loc[df1['item'] == item]
    # set the uncertainty interval to 95% (the Prophet default is 80%)
    my_model = Prophet(yearly_seasonality= True, seasonality_prior_scale=1.0)
    my_model.fit(item_df)
    future_dates = my_model.make_future_dataframe(periods=12, freq='M')
    forecast = my_model.predict(future_dates)
    prediction[item] = forecast
return prediction

# Save predictions to dictionary
df2 = get_prediction(df1)

# Convert dictionary
df3 = pd.DataFrame.from_dict(df3, index='columns)

Итак, последняя часть кода - это то, где я борюсь. Мне нужно преобразовать словарь df2 в фрейм данных (df3), чтобы я мог экспортировать его в csv. Но выглядит ли это как вложенный словарь? Не уверен, нужно ли мне обновить мою функцию.

Вот как выглядит фрагмент словаря enter image description here

Мне нужно экспортировать его, чтобы оно будет выглядеть так:

enter image description here

Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

2 голосов
/ 04 февраля 2020

Следующий код должен помочь сгладить df2 (словарь данных, если я правильно понимаю).

def flatten(dict_of_df):
    # insert column 'item'
    for key, value in dict_of_df.items():
        value['item'] = key

    # return vertically concatenated dataframe with all the items
    return pd.concat(dict_of_df.values())
0 голосов
/ 26 февраля 2020

@ TIM @Drew, можно ли увидеть полный код после изменений? Я борюсь с подобной проблемой.

Даниэль

...