深入浅出:在Pandas中高效管理分类数据

深入浅出:在Pandas中高效管理分类数据

准备工作

在开始之前,我们需要安装Pandas和Numpy两个包。你可以使用以下代码进行安装:

pip install pandasnumpy

安装好这些包后,让我们正式进入本文的主要内容。

在Pandas中管理分类数据

分类数据(Categorical Data)是Pandas中的一种数据类型,用于表示特定(固定)数量的类别或不同的取值。它与Pandas中的字符串(string)或对象(object)数据类型不同,尤其是在数据的存储方式上。

分类数据具有更高的内存利用率,因为分类数据中的取值只会被存储一次。相比之下,对象类型会将每个取值都作为单独的字符串存储,这会消耗更多的内存。

让我们通过一个示例来实践分类数据。下面展示了如何在Pandas中初始化分类数据:

import pandas as pddf = pd.DataFrame({ 'fruits': pd.Categorical(['apple', 'kiwi', 'watermelon', 'kiwi', 'apple', 'kiwi']), 'size': pd.Categorical(['small', 'large', 'large', 'small', 'large', 'small'])})df.info

输出结果:

RangeIndex: 6 entries, 0 to 5Data columns (total 2 columns): # Column Non-Null CountDtype --- ------ -------------- ----- 0 fruits 6 non-null category 1 size 6 non-null categorydtypes: category(2)memory usage: 396.0 bytes

你可以看到,fruits和size两列的数据类型是category,而不是我们通常见到的object类型。

我们可以通过以下代码,对比分类数据类型和对象数据类型的内存占用情况:

import numpy as npn = 100000df_object = pd.DataFrame({ 'fruit': np.random.choice(['apple', 'banana', 'orange'], size=n)})print('对象类型的内存占用:')print(df_object['fruit'].memory_usage(deep=True))df_category = pd.DataFrame({ 'fruit': pd.Categorical(np.random.choice(['apple', 'banana', 'orange'], size=n))})print('分类类型的内存占用:')print(df_category['fruit'].memory_usage(deep=True))

输出结果:

对象类型的内存占用:6267209分类类型的内存占用:100424

可以看到,随着样本数量的增加,对象类型的数据内存消耗远大于分类数据类型。

接下来,我们来看分类数据类型可以使用的独特方法。比如,你可以获取所有类别:

df['fruits'].cat.categories

输出:

Index(['apple', 'kiwi', 'watermelon'], dtype='object')

我们还可以重命名这些类别:

df['fruits'] = df['fruits'].cat.rename_categories(['fruit_apple', 'fruit_banana', 'fruit_orange'])print(df['fruits'].cat.categories)

输出:

Index(['fruit_apple', 'fruit_banana', 'fruit_orange'], dtype='object')

分类数据类型还支持引入有序值(ordinalvalues),并可以对类别进行比较。

df['size'] = pd.Categorical(df['size'], categories=['small', 'medium', 'large'], ordered=True)df['size'] < 'large'

输出:

0 True1 False2 False3 True4 False5 TrueName: size, dtype: bool

掌握分类数据类型,将为你的数据分析带来极大的优势。

特别声明:[深入浅出:在Pandas中高效管理分类数据] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

男方被爆出轨,女方当众黑脸,结果他俩没离婚?(男方出轨被妻子发现他们都会怎么处理)

陈自瑶和王浩信的相识可谓是从“低调”开始的,彼时她还是个“糊咖”,但他们爱的既高调又热烈,2011年结婚,2012年生下了女儿。 自此之后,王浩信和陈自瑶的离婚传闻就频频爆出,而蔡思贝的每个举动也成了焦点,…

男方被爆出轨,女方当众黑脸,结果他俩没离婚?(男方出轨被妻子发现他们都会怎么处理)

赵滨父子:戏里戏外保持距离,俩人关系鲜认知,如今子承父业(电影演员赵滨)

在剧团与小演员们相处的过程中,赵滨终于有了理想,他也想当一名好演员,跟小演员们聊天的时候,会主动发表自己的看法,提出一些修改剧本的建议。 或许是为了弥补遗憾,赵成顺把希望都寄托在儿子赵滨身上,他主动带赵滨去…

赵滨父子:戏里戏外保持距离,俩人关系鲜认知,如今子承父业(电影演员赵滨)

中关村实验室&amp;清华大学&amp;国防科大:2025网络空间测绘技术白皮书(中关村实验室招聘)

《网络空间测绘技术白皮书》由中关村实验室联合清华大学、国防科技大学及远江盛邦等单位撰写,系统梳理了网络空间测绘的理论基础、技术体系、国内外实践及未来趋势。探测技术包括IP与端口探测、服务扫描和资产指纹识别等…

中关村实验室&amp;清华大学&amp;国防科大:2025网络空间测绘技术白皮书(中关村实验室招聘)

水滴智店:游泳馆管理系统儿童池权限:家长陪同与安全提醒的设置(水滴智能科技)

我们近期升级了游泳馆管理系统中关于儿童池的权限设置,希望通过更清晰的规则和提醒,让亲子游泳体验既轻松又安心。我们建议家长在下水前花几分钟和孩子一起阅读池边的图示版安全守则,救生员也会在高峰期进行简短的口头提醒…

水滴智店:游泳馆管理系统儿童池权限:家长陪同与安全提醒的设置(水滴智能科技)

工业用气气换热设备(工业常用换热器)

板式气气换热器通过多层金属波纹板叠加形成流道,高温气体与低温气体在相邻板间逆向流动,波纹结构增加了气体的湍流程度,同时扩大了传热面积,使换热效率可达 80%-90%,适用于中低压、中小流量的气体换热场景,如食…

工业用气气换热设备(工业常用换热器)