我一直在使用 Write.xlsx 将我的结果导出到 Excel 工作簿的每个选项卡中,它的工作方式就像我希望的那样,只是它运行得非常慢。我花了 9 个半小时来运行大约 120 行写.xlsx。这是我使用的代码,以"水果"为例:
forecast_custom <- function(selected_fruit) {
df_sub <- subset(FruitData, Fruit == selected_fruit)
ts_sub <- ts(df_sub$avg)
forecast(auto.arima(ts_sub), h = 12)
}
然后:
ForecastApple <- forecast_custom("Apple")
ForecastBanana <- forecast_custom("Banana")
最后:
write.xlsx2(ForecastApple, file="ForecastModel.xlsx", sheetName="Apple",
row.names=FALSE)
write.xlsx2(ForecastBanana, file="ForecastModel.xlsx", sheetName="Banana",
append=TRUE, row.names=FALSE)
让我们说这些预测和写.xlsx(我从写.xlsx切换到写.xlsx2,它仍然很慢(继续100行。为什么它会运行得这么慢?
谢谢!
我遇到了同样的问题,以及使用write.xlsx()
的一些烦人的错误。 writexl
包中的write_xlsx()
效果很好,而且速度更快!它适用于 tibbles。
有关详细信息,请参阅 https://ropensci.org/technotes/2017/09/08/writexl-release/
试试这个:
filename='ForecastModel.xlsx`
if os.path.exists(filename): # engine=xlsxwriter only support WRITE no matter mode='a' OR mode='w'
with pd.ExcelWriter(filename, mode='a') as writer:
ForecastApple.to_excel(writer, engine='xlsxwriter', sheet_name='Apple', encoding='utf8', index=False)
ForecastBanana.to_excel(writer, engine='xlsxwriter', sheet_name='Banana', encoding='utf8', index=False)
else: # creating "ForecastModel.xlsx" if not.
with pd.ExcelWriter(filename, mode='w+') as writer:
ForecastApple.to_excel(writer, engine='xlsxwriter', sheet_name='Apple', encoding='utf8', index=False)
ForecastBanana.to_excel(writer, engine='xlsxwriter', sheet_name='Banana', encoding='utf8', index=False)
根据jmcnamara在回答为什么将我的数据导出到.xlsx比导出到.xls或.csv慢得多?
Pandas 默认使用 OpenPyXL 编写 xlsx 文件,这可能比用于写入 xls 文件的 xlwt 模块慢。
尝试使用 XlsxWriter 作为 xlsx 输出引擎。
尝试从readr
包中write_csv()
(尽管同样表明您将创建多个csv文件而不是单个工作簿(。它非常快,大约是write.csv
的两倍。