Pandas DataFrame内存优化技巧:让数据处理更高效
创作时间:
作者:
@小白创作中心
Pandas DataFrame内存优化技巧:让数据处理更高效
引用
CSDN
1.
https://blog.csdn.net/Gefangenes/article/details/137612079
在大数据时代,数据规模的快速增长对内存管理提出了更高的要求。Pandas作为数据分析领域的常用工具,其内存使用效率直接影响到数据处理的性能。本文将通过一个具体案例,展示如何通过优化数据类型来显著降低Pandas DataFrame的内存占用。
准备数据
首先,我们创建一个包含一百万条记录的测试数据集。数据集包含以下字段:
- age:整数类型数值
- grade:有限个数的字符串
- qualified:是否合格
- ability:能力评估,浮点类型数值
import pandas as pd
import numpy as np
def fake_data(size):
df = pd.DataFrame()
df["age"] = np.random.randint(1, 30, size)
df["grade"] = np.random.choice(
["一年级", "二年级", "三年级", "四年级", "五年级", "六年级"],
size,
)
df["qualified"] = np.random.choice(["合格", "不合格"], size)
df["ability"] = np.random.uniform(0, 1, size)
return df
df = fake_data(1_000_000)
df.head()
检测内存占用
查看优化前的内存占用情况:
df.info()
初始内存占用约为26.7MB。
优化内存
接下来,我们将逐步优化DataFrame的内存占用,并测试每一步优化后的效果。
3.1. 优化整型数据
首先优化整型数据(age)的内存占用。从df.info()
的结果可以看出,age的类型是int32。对于年龄来说,int8(数值范围:-128~127)就足够了。
df["age"] = df["age"].astype("int8")
df.info()
优化后,内存占用从26.7MB降至23.8MB。
3.2. 优化浮点型数据
接下来优化浮点型数据(ability)。测试数据中ability的值是6位小数,类型是float64。转换成float16可能会改变值,所以这里转换成float32。
df["ability"] = df["ability"].astype("float32")
df.info()
优化后,内存占用进一步从23.8MB降至20.0MB。
3.3. 优化布尔型数据
接下来优化布尔型数据(qualified)。这个值虽然是字符串类型,但是它的值只有两种(合格和不合格),所以可以转换成布尔类型。
df["qualified"] = df["qualified"].map({"合格": True, "不合格": False})
df.info()
优化后,内存占用进一步从20.0MB降至13.4MB。
3.4. 使用category类型
最后,优化字符串类型的grade字段。这个字段的值只有6个,可以转换为pandas中的category类型。
df["grade"] = df["grade"].astype("category")
df.info()
优化后,内存占用进一步从13.4MB降至6.7MB。
总结
通过上述优化步骤,内存占用从最初的26.7MB降至6.7MB,优化效果显著。这表明,在数据分析过程中,合理选择数据类型对提高内存使用效率至关重要。建议在构造DataFrame时,根据数值的范围和特点,选择合适的类型,避免盲目使用默认类型。
热门推荐
耳朵突然疼得厉害怎么回事
朱元璋开创明朝后如何厚待亲人
小白入门!网络安全基础知识详解(附知识问答)
装修行业标准及规范包括哪些内容?
交通法律咨询是什么?一文读懂交通事故处理、违章处罚等法律问题
车辆备案需要什么材料?一文详解备案所需全部文件
暴雨来袭,电动汽车能涉水吗?一次说清楚!
春分诗词教与学
科学技术哲学主要包括什么?从起源到未来发展的全面解析
超捷股份接受多家机构调研,商业航天与汽车业务备受关注
孩子的财商教育,10个资源送给你
《八方旅人》隐藏结局攻略:运命之人与最终BOSS战
存储芯片概念股走高,涨价信号引发市场关注
程序流程图是什么?程序流程图的作用与步骤详解,程序流程图的应用场景有哪些?
程序从诞生到现在的发展历史是怎样的呢?
2025西安赏花季暨春游周至好风光系列活动盛大启幕
西安这6个地方花开成海,接下来的西安简直美翻了
Excel获取股票实时数据的多种方法
被动物抓伤要不要打狂犬疫苗?专家提醒→
毕业论文如何添加脚注
整治“饭圈”乱象|饭圈是什么?粉丝文化的定义与特征
大盘指数涨跌的市场情绪分析:研究市场情绪对大盘指数涨跌的影响和预测方法
华为路由器光猫连接步骤详解
秦始皇在位期间,在政治与军事方面有哪些作为与成就?
Excel表格怎么画多而大的表格
特斯拉向车主致歉:已成立处理小组 不妥协方案出现反转
比特币今年表现跑输黄金,黄金的逆袭与比特币的困境
如何处理面部松弛和太阳穴凹陷
从PPT设计新手到大师之路:全程指导
慢性胃炎治不治得好