所以我有几个我导入的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。
在pandas中,.to_csv()
默认处于写入模式,但可以选择更改它。在您的示例中,您在编写to_csv()
时正在迭代文件名,因此当前编写时,您将使用代码中的结果覆盖当前文件。如果您想将这些数据帧写入新文件,请将每个df附加到底部:
forecast.to_csv('final_data.csv', mode='a')
您可以使用带有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)