dataframe 空值替换为0_缓解Pandas中DataFrame占用内存过高

文章探讨了使用Pandas处理数据时内存占用过高的问题,原因是未指定数据类型导致使用了较大的数据容器。提出了两种解决方案:一是手动指定数据类型,如将确定范围的数据列转换为np.uint8;二是通过脚本自动判断并转换数据类型,以减少内存消耗。参考链接提供了更多相关信息。
摘要由CSDN通过智能技术生成

0 背景

在我们使用pandas进行数据处理的时候,有时候发现文件在本地明明不大,但是用pandas以DataFrame形式加载内存中的时候会占用非常高的内存,本文即解决这样的问题。

1 原因

如果是计算机相关专业的同学,你应该知道int8,int16,int64的区别。如果你忘记了,那我们可以举一个例子。内存相当于仓库,数字相当于货物,数字需要装到箱子里才能堆到仓库。现在有小,中,大三种箱子,我们一个个数字用小箱子就可以装好,然后堆到仓库去,而现在pandas的处理逻辑是,如果你不告诉用哪个箱子,我都会用最大的箱子去装,这样仓库很快就满了。OK,这就是有时候DataFrame内存占用过高的原因。

617cedae6a6cc0612312e9658b8ae409.png
常用数据类型范围

其他信息可以通过numpy中的函数来查看范围

import numpy as np
# 查看int16的范围
ii16 = np.iinfo(np.int16)
ii16.min
-32768

# 与iinfo相应,finfo可以查看float类型的范围
fi16 = np.finfo(np.float16)
fin16.min
-3.4028235e+38
<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值