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

今日霍州(www.jrhz.info)©️

准备工作

在开始之前,我们需要安装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

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

今日霍州(www.jrhz.info)©️

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

猜你喜欢

洗脸熊·洗脸吧::解锁美业新范式,带来极简护肤新体验(洗脸熊·洗脸吧(帝豪望京店))

在传统美容模式逐渐暴露出诸多弊端时,洗脸熊·洗脸吧以“只洗脸,不推销”为核心定位,凭借独特的品牌特色与丰富的项目体系,迅速在美业市场占据一席之地,成为众多消费者心中的护肤优选。洗脸熊·洗脸吧抓住到当代消费者“…

洗脸熊·洗脸吧::解锁美业新范式,带来极简护肤新体验(洗脸熊·洗脸吧(帝豪望京店))

『乔任梁』去世9年后,乔父不再隐瞒,披露儿子临终状态,果然不简单(『乔任梁』 离世)

这是乔父在过去九年里,依然无法从皮肤记忆中抹去的触感。当他最后一次捧起儿子的骨灰盒,将它紧紧贴在自己的胸膛时,那种透骨的寒意,瞬间冻结了一个父亲的余生。 如果说『乔任梁』的离世是一场令人扼腕的悲剧,那么他…

『乔任梁』去世9年后,乔父不再隐瞒,披露儿子临终状态,果然不简单(『乔任梁』 离世)

开市客代购大成八宝饭680克,适合2026年的年夜饭还是午夜饭?(开市客购买攻略)

开市客大成八宝饭作为速食年夜饭和午夜饭选择,凭借其680克足量分量、经典口味,在繁忙生活节奏中提供便捷解决方案。本文深度解析如何选对年夜饭速食,从口感、成本、适用场景等方面全面对比。

开市客代购大成八宝饭680克,适合2026年的年夜饭还是午夜饭?(开市客购买攻略)

父亲亿万财产,母亲是著名演员,他却跑龙套14年,33岁终成实力派(父亲资产过亿)

2025年,他在《沉默的真相》中饰演检察官江阳,凭借出色的表演让角色的执着与坚守展现得淋漓尽致。白宇为了演好这个复杂的角色,进行了大量的前期准备工作,深入研读剧本,查阅历史资料,用细腻的表演展现角色的成长与转…

父亲亿万财产,母亲是著名演员,他却跑龙套14年,33岁终成实力派(父亲资产过亿)

深色系『穿搭』的提亮技巧,巧用小面积亮色,高级不沉闷超有活力(深色衣服『穿搭』)

一位五十岁的女士穿深咖羊绒套装,戴一副玳瑁框眼镜👓,拎一只墨绿植鞣皮『托特包』,再在左手无名指戴一枚碎钻镶边的薄荷绿珐琅戒指💍——那点绿不是为了装嫩,而是让她的沉静里透出一点玩味,让她的阅历里藏进一丝未冷却的好奇心。…

深色系『穿搭』的提亮技巧,巧用小面积亮色,高级不沉闷超有活力(深色衣服『穿搭』)