a2221679 发表于 2020-10-8 17:19:46

想使用pandas.read_excel读取一个1.02G左右的xlsx文件,物理内存满了都打不开

本人新手一枚,学习python主要为了做一些比较大的数据的处理,现在想读取一个1.02G左右大小的Excel文件(xlsx格式的),内有96个sheet,代码如下:

import pandas as pd
t = pd.read_excel('path')
print(t)


电脑有内存8G,        运行代码后内存占用会不断增加,然后维持在5000M左右(内存使用率95%左右),一会减少个几百M,然后又继续增加。等了半个小时左右都读不出来。

用 openpyxl 读也是这样子

import openpyxl
t = openpyxl.load_workbook('path')

在这里向各位大佬请求帮助,先谢谢各位大佬了{:5_111:}

疾风怪盗 发表于 2020-10-8 17:26:15

没见过这么大的文件。。。。。。。你用office能打开么。。。。。。这么多数据怎么不用数据库存储?

可以尝试分页分段读取,,,,,,不要一次全部读

有个参数:
skiprows :类列表
开始时跳过的行(0索引)
skip_footer : 整型, 默认为 0
结束时的行(0-索引)

kogawananari 发表于 2020-10-8 22:45:07

用office能打开 另存为csv {:10_266:}

a2221679 发表于 2020-10-9 02:25:54

疾风怪盗 发表于 2020-10-8 17:26
没见过这么大的文件。。。。。。。你用office能打开么。。。。。。这么多数据怎么不用数据库存储?

可以 ...

是一个软件导出来的,就是这个格式的,木的办法。。。
office的话看电脑配置吧,有时候打得开。
刚才又试了一次,一直等的话倒是可以读取,就是内存用得有点吓人,一直在90-95%这样波动,有种满了又漏了的感觉。但是读取完之后实际上并不占用这么多内存,不知道是不是python读取过程中会多使用一些内存,但是删除得不及时。
还有你说的这个skiprows、skip_footer、nrows的参数我也试了一下,不知道为什么,即是我只让他读取很少的几行,读取的时间也跟读取整个文件差不多(结果print出来确实只有我让他读的几行),有种读完之后再切片给我的感觉。。。{:5_99:}

a2221679 发表于 2020-10-9 02:27:12

kogawananari 发表于 2020-10-8 22:45
用office能打开 另存为csv

就是有些电脑会打不开,所以想用python处理一下变成小点的文件{:10_266:}

HCF 发表于 2020-10-9 13:54:28

excel好像只能查看104万行数据。。。。你这怕是几千万行。可以一列一列的读取处理吧,不用一次性全部读取。
address=pd.read_csv("C:/..../文件名",usecols=)
页: [1]
查看完整版本: 想使用pandas.read_excel读取一个1.02G左右的xlsx文件,物理内存满了都打不开