CSV和XLSX文件导入到Pandas数据框架中:速度问题

6

从xlsx文件中读取数据(仅20000个数字)需要很长时间:

import pandas as pd
xlsxfile = pd.ExcelFile("myfile.xlsx")
data = xlsxfile.parse('Sheet1', index_col = None, header = None)

保存文件需要大约9秒钟。

如果我将同一个文件保存为csv格式,则只需要大约25毫秒:

import pandas as pd
csvfile = "myfile.csv"
data = pd.read_csv(csvfile, index_col = None, header = None)

这是 openpyxl 的问题还是我有哪些东西遗漏了?是否有其他替代方法?


1
XLSX 中有很多额外的开销。首先,在解析之前必须将其解压缩。另一个原因是它是 XML,必须进行解析。9 秒对于这个来说似乎相当高,但是它比许多其他操作慢很多,这其中有很好的原因。 - bbayles
是的,我明白,但9秒似乎有点太长了... - sashkello
5
read_csv 是一段高度优化的 C 代码;Excel 则通过纯 Python 库进行读取。 - Jeff
1个回答

3

xlrd支持.xlsx文件,而这个答案表明至少带有.xlsx支持的beta版本的xlrd比openpyxl更快。

Pandas的当前稳定版本(11.0)使用openpyxl处理.xlsx文件,但是这在下一个版本中已经改变了。如果您想尝试一下,可以从GitHub下载开发版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接