【Python学习】 - 解决DataFrame占用内存过大问题

这篇文章原文出自kaggle,文中给出了reduce_mem_usage方法可以用来自动缩减dataframe占用空间

这篇notebook展示了通过使用更合理的数据类型来减少dataframe的内存使用量

方法如下:

迭代每一个column
检查column是否为数字型
检查column是否可以用integer表示
找出column下的最大值和最小值
选择适用于数据范围的最合适的数据类型
通过以上步骤处理后将一份测试数据从1.3GB减少到466MB

 

import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)def reduce_mem_usage(props):start_mem_usg = props.memory_usage().sum() / 1024**2 print("Memory usage of properties dataframe is :",start_mem_usg," MB")NAlist = [] # Keeps track of columns that have missing values filled in. for col in props.columns:if props[col].dtype != object:  # Exclude strings# Print current column typeprint("******************************")print("Column: ",col)print("dtype before: ",props[col].dtype)# make variables for Int, max and minIsInt = Falsemx = props[col].max()mn = props[col].min()# Integer does not support NA, therefore, NA needs to be filledif not np.isfinite(props[col]).all(): NAlist.append(col)props[col].fillna(mn-1,inplace=True)  # test if column can be converted to an integerasint = props[col].fillna(0).astype(np.int64)result = (props[col] - asint)result = result.sum()if result > -0.01 and result < 0.01:IsInt = True# Make Integer/unsigned Integer datatypesif IsInt:if mn >= 0:if mx < 255:props[col] = props[col].astype(np.uint8)elif mx < 65535:props[col] = props[col].astype(np.uint16)elif mx < 4294967295:props[col] = props[col].astype(np.uint32)else:props[col] = props[col].astype(np.uint64)else:if mn > np.iinfo(np.int8).min and mx < np.iinfo(np.int8).max:props[col] = props[col].astype(np.int8)elif mn > np.iinfo(np.int16).min and mx < np.iinfo(np.int16).max:props[col] = props[col].astype(np.int16)elif mn > np.iinfo(np.int32).min and mx < np.iinfo(np.int32).max:props[col] = props[col].astype(np.int32)elif mn > np.iinfo(np.int64).min and mx < np.iinfo(np.int64).max:props[col] = props[col].astype(np.int64)    # Make float datatypes 32 bitelse:props[col] = props[col].astype(np.float32)# Print new column typeprint("dtype after: ",props[col].dtype)print("******************************")# Print final resultprint("___MEMORY USAGE AFTER COMPLETION:___")mem_usg = props.memory_usage().sum() / 1024**2 print("Memory usage is: ",mem_usg," MB")print("This is ",100*mem_usg/start_mem_usg,"% of the initial size")return props, NAlist

原文链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/439509.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】JPA、Hibernate和Mybatis区别和总结

很多人都用过java的数据库连接池C3P0&#xff0c;但官方没有说明名称的由来。 据传闻&#xff1a;连接池作者是《星球大战》迷&#xff0c;C3P0就是其中的一个机器人&#xff0c;并且这个名称中包涵connection 和pool的单词字母。因此叫这个名字&#xff08;根据网友提醒&…

详解3D物体检测模型: Voxel Transformer for 3D Object Detection

本文介绍一个新的的3D物体检测模型&#xff1a;VoTr&#xff0c;论文已收录于ICCV 2021。 这是第一篇使用 voxel-based Transformer 做3D 主干网络&#xff0c;用于点云数据3D物体检测。由于有限的感受野&#xff0c;传统的 3D 卷积网络检测器&#xff08;voxel-based&#xff…

【Python学习】 - Pandas包,对于describe函数和mean函数求平均值的效率问题

经测验&#xff0c;describe函数要快很多&#xff0c;不知道是不是当做一个属性直接存储起来&#xff0c;然后调用函数的时候O1输出&#xff1f; 对于30000*288的数据&#xff0c;describe是秒出结果&#xff0c;但是调用mean函数则需要10秒左右。 对于300000*3左右数据量的数…

一步步编写操作系统 65 标准调用约定stdcall 汇编实战

因为c语言遵循的调用约定是cdecl&#xff0c;咱们也自然要遵守cdecl约定了。不过为了起到对比的作用&#xff0c;除了介绍cdecl外&#xff0c;也会介绍下stdcall。 既然咱们用的是调用约定是cdecl&#xff0c;那对它的介绍最好让它离下一节的内容近一些&#xff0c;所以先说一…

Coursera自动驾驶课程第18讲:The Planning Problem

在第17讲《Coursera自动驾驶课程第17讲&#xff1a;An Autonomous Vehicle State Estimator》 我们学习了如何使用多传感器融合进行自车定位&#xff0c;以及传感器的内外参标定和时间同步&#xff0c;我们还讨论了在实际应用中常遇到的问题。 从本讲开始我们将学习一个新的模…

BI中事实表,维度表和数据集市,数据仓库的理解

维度表&#xff08;dimension&#xff09;存放着一些维度属性&#xff0c;例如时间维度&#xff1a;年月日时&#xff1b;地域维度&#xff1a;省份&#xff0c;城市&#xff1b;年龄维度&#xff1a;老年&#xff0c;中年&#xff0c;青年&#xff1b;职称维度&#xff1a;高&…

【Python学习】 - 如何将Pandas包中的groupby分组类型转换成DataFrame(一步就足够了)

输入&#xff1a;df_Grp&#xff0c;类型是pandas.core.groupby.generic.DataFrameGroupBy 我们先来学习一下如何将分组后的其中一个分组给转换成DataFrame类型&#xff1a; tmp dict(list(df_Grp)) tmpname[] tmpname [i for i,j in df_Grp] #下面这行代码其实就转化成Dat…

详解3D物体检测模型:Focal Sparse Convolutional Networks for 3D Object Detection

用于3D目标检测的焦点稀疏卷积神经网络【CVPR2022】【3D检测】本文介绍一篇新的 3D 物体检测模型&#xff1a;Focals Conv&#xff0c;论文收录于 CVPR2022。在 3D 检测任务中&#xff0c;点云或体素数据不均匀地分布在3维空间中&#xff0c;不同位置的数据对物体检测的贡献是不…

地平线:面向规模化量产的自动驾驶感知研发与实践

导读 4月27日&#xff0c;地平线智能驾驶感知研发部负责人苏治中就 《面向规模化量产的自动驾驶感知研发与实践》 这一主题进行了直播讲解。 本次课程内容分为4个部分&#xff1a; 1、地平线自动驾驶环境感知量产实践 2、软硬协同的自动驾驶感知算法设计 3、实现规模化量产的“…

【Python学习】 - 关于DataFrame中的applymap函数 和 Series中的map函数

在用pandas预处理数据时&#xff0c;难免需要自己构造一些有价值的数据&#xff0c;applymap函数和map函数对于处理此类问题十分方便。 给定一个DataFrame&#xff0c;含有每个学生的第一次考试和第二次考试的成绩&#xff0c;现在让你将分数转化成ABCD和 ‘ 不及格 ’ 等级。…

Power BI与Power Query、Power Pivot 是什么关系?

搞不清楚Power BI与Power Query、Power Pivot是什么关系&#xff1f;看这篇文章就够了。 刚开始学习PowerBI的时候&#xff0c;总是能碰到Power Query和Power Pivot这两个词&#xff08;下文简称为PQ和PP)&#xff0c;现在中文里面学习PowerBI的资源本来就不是很多&#xff0c…

地平线:上帝视角与想象力——自动驾驶感知的新范式

导读 3月28日&#xff0c;在「地平线自动驾驶技术专场」上&#xff0c;地平线自动驾驶系统架构师刘景初博士围绕《上帝视角与想象力——自动驾驶感知的新范式 》这一主题进行了直播讲解。 本次课程主要分为以下4个部分&#xff1a; 1、自动驾驶结构演化提出算法新需求 2、软件2…

详解Class类文件的结构(上)

前言 相信搞Java开发的同学都经常会接触到Class类文件&#xff0c;了解了JVM虚拟机之后也会大量接触到class字节码&#xff0c;那么它到底是什么样的文件&#xff1f;内部由什么构成&#xff1f;虚拟机又是如何去识别它的&#xff1f;这篇文章就来学习一下Class类文件的结构。…

【Python学习】 - sklearn学习 - 交叉验证中的常用函数

首先调入库&#xff1a;from sklearn.model_selection import train_test_split train_test_split是交叉验证中常用的函数&#xff0c;功能是从样本中随机的按比例选取train data和test data。注意输出的参数对应的次序。 语法&#xff1a; X_train,X_test, y_train, y_test…

Coursera自动驾驶课程第19讲:Mapping for Planning

在第18讲 《Coursera自动驾驶课程第18讲&#xff1a;The Planning Problem》 我们对自动驾驶中的规划问题有了一个全面的了解&#xff0c;理解了规划问题中的约束和目标&#xff1b;同时我们还讨论了如何分层如解决规划问题&#xff08;任务规划、行为规划、路径规划和速度曲线…

详解Class类文件的结构(下)

本文继续使用上次的Test.class文件&#xff0c;它是由下面单独的一个类文件编译而成的&#xff0c;没有包。 6. 索引&#xff08;Index&#xff09; 索引又分类索引、父类索引和接口索引集合&#xff0c;类索引&#xff08;this_class&#xff09;和父类索引&#xff08;super…

自动驾驶开源软件和算法库

1. Carla&#xff08;自动驾驶开源仿真软件&#xff09; github&#xff1a;https://github.com/carla-simulator/carladoc&#xff1a;https://carla.readthedocs.io/en/latest/website&#xff1a;http://carla.org/Bounding boxes&#xff1a;https://carla.readthedocs.io/…

Coursera自动驾驶课程第20讲:Mission Planning in Driving Environments

在第19讲《Coursera自动驾驶课程第19讲&#xff1a;Mapping for Planning》 我们学习了自动驾驶中两种环境建图方法&#xff1a;占用网格图&#xff08;occupancy grid map&#xff09; 和 高清地图&#xff08;high-definition road map&#xff09;。 在本讲中&#xff0c;我…

Java实例化对象过程中的内存分配

问题引入 这里先定义一个很不标准的“书”类,这里为了方便演示就不对类的属性进行封装了。 class Book{String name; //书名double price; //价格public void getInfo(){System.out.println("name:"name";price:"price);} } 在这个类中定义了两个属…

【Python学习】 - sklearn学习 - KNN

前言&#xff1a; 针对一个完整的机器学习框架目前还没有总结出来&#xff0c;所以目前只能总结每一个单独的算法。由于现在研究的重点是算法&#xff0c;所以对于数据的处理&#xff0c;数据的分析和可视化呈现&#xff0c;在现阶段并不进行展示&#xff08;这样容易陷入纠结…