numpy读取csv_pandas读取大文件特别慢?用一下这招吧

本文针对使用pandas和numpy处理大CSV文件时遇到的效率和内存问题,提供了节省内存和提升读取效率的解决方案。通过优化数据类型、使用HDF5和feather格式,实现了内存占用的显著降低和读取速度的提升。
摘要由CSDN通过智能技术生成

当用pandas处理GB级以上的大文件时,会出现两个问题,一个是读取数据很慢,动辄要好几分钟,另外就是出现内存不足导致程序运行失败。笔者这段时间查了一些解决此问题的方法,在这里分享给大家。

首先我们要知道的是,处理数据的效率跟机器的内存大小有直接关系,所以面对比较大的数据时,先考量下单机内存吃不吃得消,如果可以,再去考虑性能优化的问题,否则我建议还是别用pandas处理了,改用云服务器或者spark等适合处理大数据的工具吧。

这里我用一份数据来做讲解和测试,这份数据有1.65个G,3700万行/5列,算的上大文件了。

5ab73f47314347637df11974a71a344a.png

先用pandas的read_csv直接读取该文件:

start = time.time()df = pd.read_csv(file_path+'jdata_action.csv')end = time.time()print('pandas read_csv cost:{}'.format(end-start))

67c32055aaad54b8bef2513aceecda28.png

可以看到直接读取需要将近一分钟,现在我们设置Dataframe.info()里的memory_usage参数来准确获得内存使用量。

df.info(memory_usage='deep')

f5ebb0666c5f68bd040c21089b5e3c59.png

虽然文件是1.6个G,但实际使用内存却达到了3.7G,这是由于pandas的内存占用机制造成的,所以用pandas处理数据真的比较吃内存。

下面我从“提升读取效率”和“节省内存”两个方面讲一下解决办法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值