r语言 - 写入.xlsx运行速度很慢,我可以加快速度吗?



我一直在使用 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的两倍。

相关内容

最新更新