收藏文章 楼主

技术干货 如何通过Pandas降低内存使用量

版块:IT/互联网   类型:普通   作者:小羊羔links   查看:552   回复:0   获赞:0   时间:2022-01-23 23:42:25

当使用Pandas操作小型数据集(低于100MB 时,性能一般不是问题,我们也基本不用考虑内存问题。而当面对大型数据集(100MB以上到GB 时,性能问题可能会导致运行时间变慢,甚至有可能因为内存问题导致运行失败 系统瘫痪。这也是为什么在数据预处理前要查看内存使用情况的原因。


例如,以短租数据集为例,该数据集总体内存使用情况为14.3MB,如图1所示,其中浮点型数据内存使用情况为889.2KB。虽然短租数据集占用的内存并不大,但是为了让大家认识到对于大型数据集来说,查看内存使用情况与降低内存使用量的重要性,下面例将演示如何让它变得更小,经过处理后浮点型数据内存使用情况从889.2KB降到了444.7KB,如图2所示,几乎降了一半,这对于大型数据集来说将会很大程度上提升数据处理速度。

图1  

图2


查看内存使用量主要通过以下两种方法实现

(1 Pandas的DataFrame对象的info()函数

该方法用于显示有关DataFrame数据的信息,包括它的大小、非空值、索引、数据类型的信息和内存使用量。

默认情况下,Pandas给出一个大概的内存使用量以节省时间。如果要求得到更精准的内存使用量,可以设置memory_usage参数值为deep。

(2 DataFrame对象的memory_usage()函数

该函数用于返回每列的内存使用量(以字节为单位 。内存使用量可以选择包括索引和数据类型。下面介绍几个主要参数

? index 布尔值,默认值为True,指定是否在返回的Series对象中包括DataFrame索引的内存使用量。

? deep 布尔值,默认值为False,如果为True,则内存使用量包括数据类型,深入了解数据的系统级内存消耗。

? 返回值 返回一个Series对象,其索引是原始列名,其值是每列的内存使用量(以字节为单位 。


了解了内存使用量,下面应该考虑的问题就是如何降低内存使用量。降低内存使用量主要通过改变数据类型实现,首先了解一下Pandas的数据类型


Pandas的许多数据类型中都有多个子类型,这些子类型可以使用更少的字节来表示每个值。例如,float类型就包含float16、float32和float64子类型。数据类型名称后的数字代表该数据类型表示的位数(bit 。下面介绍Pandas中常用的数据类型以及子类型和内存使用量(以字节为单位 ,如表1所示。


表1  Pandas中常用的数据类型以及子类型和内存使用量


由表1得知 float类型的值使用1个字节,而float64则使用8个字节,那么在不影响数据的情况下,将float64类型转换为float类型,势必会降低很多内存使用量。


数据类型转换的主要设计思路如下


更多关于Pandas的文章请参考《Python数据分析从入门到实践》

全书采用全彩印刷,相对于黑白印刷的图书,更能提高阅读兴趣缓解阅读疲劳。通过通俗易懂的语言、流行有趣的实例,进行学练结合的方式,带领初学者逐步入门,同时还有海量资源附赠哦 遇到问题,更有技术老师,统一时间集中答疑

小羊羔锚文本外链网站长https://seo-links.cn 
回复列表
默认   热门   正序   倒序

回复:技术干货 如何通过Pandas降低内存使用量

Powered by 小羊羔外链网 8.3.12

©2015 - 2024 小羊羔外链网

免费发软文外链 鄂ICP备16014738号-6

您的IP:3.145.186.173,2024-04-25 19:13:51,Processed in 0.04582 second(s).

支持原创软件,抵制盗版,共创美好明天!
头像

用户名:

粉丝数:

签名:

资料 关注 好友 消息