根据预测数据写入excel文件

时间:2018-12-26 20:05:33

标签: python pandas xlsxwriter facebook-prophet

因此,我有几个要导入的csv文件,然后使用FB Prophet对未来几个月的数据进行了预测。我希望所有预测都转到另一个csv或全部在同一csv上。目前,它仅将文件名的最后一个csv写入一个csv,而不进行其他操作。

filenames=['example1.csv','example2.csv','example3.csv']

for f in filenames:
    df=pd.read_csv(f)
    df.columns=['ds','y']
    df['ds']=pd.to_datetime(df['ds'])
    m=Prophet(seasonality_mode='multiplicative')
    m.fit(df)

    future=m.make_future_dataframe(periods=6,freq='M')
    forecast=m.predict(future)
    forecast[['ds','yhat','yhat_lower','yhat_upper']].tail()
    fig1=m.plot(forecast)
    fig2=m.plot_components(forecast)

    forecast.to_csv(f)

我希望所有预测都在一个csv上,或者为循环通过的每个文件名创建一个新的csv。

2 个答案:

答案 0 :(得分:2)

在熊猫中,.to_csv()默认处于写入模式,但是可以更改它。在您的示例中,您在写入to_csv()时要遍历文件名,因此,由于当前已写入文件名,因此您将用代码结果覆盖当前文件。如果您想将这些数据帧写入一个新文件,并将每个df追加到底部:

forecast.to_csv('final_data.csv', mode='a')

答案 1 :(得分:1)

您可以将.to_csv()与mode =“ a”一起使用来完成任务,也可以在附加模式下打开文件并使用to_csv()对其进行写入。

在附加模式下使用.to_csv()

df.to_csv("file_name.csv", mode="a")

以附加模式打开文件,并使用to_csv对其进行写入。

with open("filename.csv", 'a') as file:
    df.to_csv(file, header=False)