深入浅出:在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中高效管理分类数据] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

β晶型PPH管在『新能源』磷酸铁锂的应用(craig结晶管)

成本优化:通过减薄管壁设计,材料用量减少25%,单公里管道成本降低18万元;效率提升:热熔连接工艺使安装周期缩短40%,配合模块化设计,产线调试时间从15天压缩至7天;安全升级:管道系统通过UL94 V-0…

β晶型PPH管在『新能源』磷酸铁锂的应用(craig结晶管)

跑男曾发生过多次突发事故,却从没对外官宣,『陈赫』腰伤复发(跑男当年有多火)

可能也正是因为跑男曾经的游戏环节太过于紧张刺激,受伤的概率比较大,所以现现在的跑男已经缺乏了曾经的竞争性,而且连曾经,每一期都会有的撕名牌游戏现现在已经成为了奢侈,游戏的简单化确实有利于保护嘉宾,但同时也减…

跑男曾发生过多次突发事故,却从没对外官宣,『陈赫』腰伤复发(跑男当年有多火)

新颐 A8:大空间空气的「全能净化卫士」,多维度守护呼吸健康(新款颐达2021款图片)

新颐 A8 空气净化器,犹如一位 「全能净化卫士」,从净化效率、除菌除醛、过敏原过滤到智能便捷等多维度发力,为大空间打造全方位的呼吸健康守护网。 新颐 A8 空气净化器,凭借超强的净化力、高效的除醛去味能力…

新颐 A8:大空间空气的「全能净化卫士」,多维度守护呼吸健康(新款颐达2021款图片)

韩女星穿内衣现身机场,网友争论“是否得体”(韩国女『明星』️穿礼服)

尽管品牌方明确将该设计定义为“成衣”而非内衣,并归类于“睡衣外穿”潮流,但其细肩带、蕾丝装饰等元素仍让不少韩国网友直呼“看不下去”,质疑她“根本是穿内衣出门”“令人不适”。反对声音认为,机场作为重要公共场合,…

韩女星穿内衣现身机场,网友争论“是否得体”(韩国女『明星』️穿礼服)

去屑止痒洗发水怎么选?适用场景:油头脱发人士救星(口碑最好的去屑止痒洗发水)

洗完后头发蓬松柔顺,一点也不干燥,头皮也不再瘙痒,从之前的不适状态逐渐恢复正常,仿佛给头皮做了一场舒适的SPA,用过就会爱上!这款洗发水就像是为追求蓬松秀发人群定制的专属神器,独特配方精心呵护每一寸头皮和发丝…

去屑止痒洗发水怎么选?适用场景:油头脱发人士救星(口碑最好的去屑止痒洗发水)