我有一个 40MB 的数据帧“dfScore”,我正在写入 .xlsx?
代码如下,
writer = pandas.ExcelWriter('test.xlsx', engine='xlsxwriter')
dfScore.to_excel(writer,sheet_name='Sheet1')
writer.save()
Run Code Online (Sandbox Code Playgroud)
代码dfScore.to_excel
需要将近一个小时,再the code writer.save()
需要一个小时。这是正常的吗?有什么好方法可以花不到 10 分钟的时间吗?
我已经在 stackoverflow 中搜索过,但似乎有些建议无法解决我的问题。
小智 7
为什么不将其另存为 .csv?我在我的个人笔记本电脑上使用过较重的 DataFrame,并且在写入 xlsx 时遇到了同样的问题。
your_dataframe.to_csv('my_file.csv',encoding='utf-8',columns=list_of_dataframe_columns)
Run Code Online (Sandbox Code Playgroud)
然后您可以简单地使用 MS Excel 或在线转换器将其转换为 .xlsx。
代码 dfScore.to_excel 花了将近一个小时,代码 writer.save() 又花了一个小时。这是正常的吗?
这听起来有点太高了。我运行了 XlsxWriter 测试,写入 1,000,000 行 x 5 列,花费了大约 100 秒。时间会根据测试机器的 CPU 和内存而有所不同,但 1 小时慢了 36 倍,这似乎不太正确。
请注意,Excel 以及 XlsxWriter 只支持每个工作表 1,048,576 行,因此您实际上会丢弃 3/4 的数据并浪费时间。
有没有什么好的方法可以让时间少于10分钟?
对于纯 XlsxWriter 程序,pypy提供了很好的加速效果。例如,使用 pypy 重新运行我的 1,000,000 行 x 5 列测试用例,时间从 99.15 秒变为 16.49 秒。我不知道 Pandas 是否可以与 pypy 一起使用。
归档时间: |
|
查看次数: |
9577 次 |
最近记录: |