因此,我有几个要导入的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。
答案 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)