我知道还有一些其他的线程解释如何处理大文件和熊猫,但事实上,我没有内存问题,我只想每次打开很多Excel文件来获取一堆行(有时甚至只有一行),有时我甚至不需要所有的列
我在其他线程中看到有人建议使用usecols
和nrows
,但pandas似乎仍然加载整个工作表,然后只保留选定的行和列。可以肯定的是,我写了以下内容:
start = time.time()
couples2015 = pd.read_excel(fileInput)
total = time.time() - start
#Reloading file, with only some lines and cols
start = time.time()
couples2015 = pd.read_excel(fileInput, header=4, usecols=0, nrows=10)
total = time.time() - start
在这两种情况下,加载都需要大约55秒
这只适用于50个月的文件,但我必须加载&;提取大量文件,从50个月到500个月(有时甚至高达1 Gb)
有没有一种方法可以在不加载整个文件的情况下提取一些行和列? 如果不是,使用我的excel文件创建数据库以使用read\u sql\u table()会更快吗
谢谢
[编辑:此外,每个文件都有几个工作表,但我通常只需要一到两张。即使在我使用sheet_name=0时,它似乎仍然打开并加载每个工作表,因为时间几乎相同…]
如果使用Excel用于Windows,请考虑通过与安装的Excel驱动程序的ODBC连接直接使用Jet/ACE SQL Engine(Windows .dll文件)查询工作簿。这样,每个工作表都充当一个数据库表,典型的SQL语义(} 读取
JOIN
,UNION
,WHERE
,GROUP BY
)是可用的,可以用^{使用实际列、工作表和范围调整下面的SQL语句
<>对于没有标题的数据,请考虑一个内联Excel查询,它指定在指定范围的第一行上没有标题和数据。
顺便说一下,如果最后一行未知,只需给它一个非常大的数字。查询引擎仅选择已使用的行
相关问题 更多 >
编程相关推荐