300万条Excel数据,读取起来非常慢,我如果开其他的程序,还会保内存不足。。

科技   2024-10-21 09:02   广东  
点击上方“Python爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠Python从入门到进阶共10本电子书

朱雀桥边野草花,乌衣巷口夕阳斜。

大家好,我是Python进阶者。

一、前言

前几天在Python铂金交流群【逆光】问了一个Pandas数据处理的问题,问题如下:

请问一下,我现在有5个excel用pandas数据,这5个excel加起来数据大概有300万条,读取起来非常慢,我如果开其他的程序,还会保内存不足。。是我的数据量大了吗?

二、实现过程

这里【平庸】给了一个指导,具体如下所示:同样的数据,读取xlsx很慢,换成csv读取就快很多。

后来【瑜亮老师】给了一个指导:感觉是你的代码有问题,另外是否尝试使用pandas的calamine引擎?

【逆光】:那我5个excel数据咋拼接啊?

【瑜亮老师】:这个代码不用变,只需使用pandas的calamine引擎读取excel就能节省很多时间

【逆光】:我去试一试

【瑜亮老师】:使用 calamine 引擎,需要提前安装python-calamine 库 安装命令如下:pip install python-calamine

读取的时候是pd.read_excel("demo.xlsx", engine='calamine')

这样对你原代码改动最小

【平庸】:拼接简单,循环每读取一个xlsx表格时,就以追加模式存到csv里,首次写出记得追加表头。这样就合并了。你内存不足才需要这样干,足够就不用了。

【逆光】:我去试一下

不过在安装的时候,还是遇到了一些问题。

【不上班能干啥!】:pandas更新到2.2.0。但是这个并不能解决内存不够用的问题,而是会加剧内存不够用,calamine是一种空间换时间的做法

【逆光】:加内存条有用不

【不上班能干啥!】:这指定 有用,内存不够用基本都是将大批量数据处理改为小批量处理的方式

【逆光】:我读取一个excel要7分钟。。。。

【不上班能干啥!】:先用calamine(可以节省时间)读取单个excel转换其他的格式,方便后续的二次操作。然后二次操作再读取转换后的数据,这个时间消耗相对读取excel来说会有质的飞跃,pandas中无论处理来源哪种格式的数据,内存消耗是一定的

【逆光】:我csv会出错:  ParserError: Error tokenizing data. C error: EOF inside string starting at row 1237 的错误通常表示在 CSV 文件中有格式问题,例如未正确关闭的字符串、换行符等。这种情况可能导致 Pandas 无法正确解析文件。

【不上班能干啥!】:那就可以不转换为csv,pandas中支持的文件格式不仅仅为sql、csv和excel。可以尝试转换为其他文件格式,相对于csv数据格式也能够保留,相对于excel物理内存也比较小。

【逆光】:哈哈,我得去学习一下我不会

【不上班能干啥!】:feather,parquet都是好用的,仅在pandas中用几乎没有学习成本

顺利地解决了自己的问题。

如果你也有类似这种Python相关的小问题,欢迎随时来交流群学习交流哦,有问必答!

三、总结

大家好,我是Python进阶者。这篇文章主要盘点了一个Pandas数据处理使用的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。

最后感谢粉丝【逆光】提出的问题,感谢【平庸】、【论草莓如何成为冻干莓】、【瑜亮老师】给出的思路,感谢【莫生气】等人参与学习交流。

【提问补充】温馨提示,大家在群里提问的时候。可以注意下面几点:如果涉及到大文件数据,可以数据脱敏后,发点demo数据来(小文件的意思),然后贴点代码(可以复制的那种),记得发报错截图(截全)。代码不多的话,直接发代码文字即可,代码超过50行这样的话,发个.py文件就行。

大家在学习过程中如果有遇到问题,欢迎随时联系我解决(我的微信:pdcfighting1),应粉丝要求,我创建了一些高质量的Python付费学习交流群和付费接单群,欢迎大家加入我的Python学习交流群和接单群!

小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。

------------------- End -------------------

往期精彩文章推荐:

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Python学习群请在后台回复【入群

万水千山总是情,点个【在看】行不行

/今日留言主题/

随便说一两句吧~~

Python爬虫与数据挖掘
人生苦短,我用Python。该公众号专注于分享Python网络爬虫、数据挖掘、数据分析、数据处理、数据可视化、自动化测试、运维、大数据、人工智能、云计算、机器学习等工具资源、热点资讯、相关技术文章、学习视频和学习资料等,期待您的加入~~~
 最新文章