0

所以我有几个要导入的 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。

4

2 回答 2

2

在 pandas 中,.to_csv()默认情况下处于写入模式,但可以选择更改它。在您的示例中,您在编写时遍历文件名to_csv(),因此在当前编写时,您将使用代码的结果覆盖当前文件。如果您想将这些数据帧写入一个新文件,每个 df 附加到底部:

forecast.to_csv('final_data.csv', mode='a')
于 2018-12-26T20:14:17.060 回答
1

您可以使用带有 mode="a" 的 .to_csv() 来完成您的任务,或者您可以以附加模式打开文件并使用 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)
于 2018-12-26T23:54:53.157 回答