使用 Facebook Prophet 创建循环遍历 SKU 的预测并导出为 CSV

Create Forecasts Looping over SKUs and Export to CSV using Facebook Prophet

我是 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。但它看起来好像是一个嵌套字典?不确定我是否需要更新我的功能。

这是字典的一个片段

我需要导出它,所以它看起来像这样

如有任何帮助,我们将不胜感激!

以下代码应该有助于展平 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())

@TIM @Drew,我可以看到更改后的完整代码吗?我正在为类似的问题而苦苦挣扎。

丹尼尔