千家信息网

Pandas进行数据编码的方式有哪些

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍"Pandas进行数据编码的方式有哪些"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Pandas进行数据编码的方式有哪些"文章能帮助大家解决问
千家信息网最后更新 2026年10月31日Pandas进行数据编码的方式有哪些

这篇文章主要介绍"Pandas进行数据编码的方式有哪些"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Pandas进行数据编码的方式有哪些"文章能帮助大家解决问题。

最近在知乎上看到这样一个问题

为了方便理解,下面创建示例DataFrame

数值型数据

让我们先来讨论连续型数据的转换,也就是根据Score列的值,来新增一列标签,即如果分数大于90,则标记为A,分数在80-90标记为B,以此类推。

自定义函数 + 循环遍历

首先当然是最简单,最笨的方法,自己写一个函数,并用循环遍历,那肯定就是一个def加一个for

df1 = df.copy()def myfun(x):    if x>90:        return 'A'    elif x>=80 and x<90:        return 'B'    elif x>=70 and x<80:        return 'C'    elif x>=60 and x<70:        return 'D'    else:        return 'E'    df1['Score_Label'] = Nonefor i in range(len(df1)):    df1.iloc[i,3] = myfun(df1.iloc[i,2])

这段代码,相信所有人都能看懂,简单好想但比较麻

有没有更简单的办法呢?pandas当然提供了很多高效的操作的函数,继续往下看。

自定义函数 + map

现在,可以使用map来干掉循环(虽然本质上也是循环)

df2 = df.copy()def mapfun(x):    if x>90:        return 'A'    elif x>=80 and x<90:        return 'B'    elif x>=70 and x<80:        return 'C'    elif x>=60 and x<70:        return 'D'    else:        return 'E'df2['Score_Label'] = df2['Score'].map(mapfun)

结果是同样的

自定义函数 + apply

如果还想简洁代码,可以使用自定义函数 + apply来干掉自定义函数

df3 = df.copy()df3['Score_Label'] = df3['Score'].apply(lambda x: 'A' if x > 90 else (    'B' if 90 > x >= 80 else ('C' if 80 > x >= 70 else ('D' if 70 > x >= 60 else 'E'))))

结果和上面是一致的,只不过这么写容易被打。

使用 pd.cut

现在,让我们继续了解更高级的pandas函数,依旧是对 Score 进行编码,使用pd.cut,并指定划分的区间后,可以直接帮你分好组

df4 = df.copy()bins = [0, 59, 70, 80, 100]df4['Score_Label'] = pd.cut(df4['Score'], bins)

也可以直接使用labels参数来修改对应组的名称,是不是方便多了

df4['Score_Label_new'] = pd.cut(df4['Score'], bins, labels=[                                'low', 'middle', 'good', 'perfect'])

使用 sklearn 二值化

既然是和机器学习相关,sklearn肯定跑不掉,如果需要新增一列并判定成绩是否及格,就可以使用Binarizer函数,代码也是简洁好懂

df5 = df.copy()binerize = Binarizer(threshold = 60)trans = binerize.fit_transform(np.array(df1['Score']).reshape(-1,1))df5['Score_Label'] = trans

文本型数据

下面介绍更常见的,对文本数据进行转换打标签。例如新增一列,将性别男、女分别标记为0、1

使用 replace

首先介绍replace,但要注意的是,上面说过的自定义函数相关方法依旧是可行的

df6 = df.copy()df6['Sex_Label'] = df6['Sex'].replace(['Male','Female'],[0,1])

上面是对性别操作,因为只有男女,所以可以手动指定0、1,但要是类别很多,也可以使用pd.value_counts()来自动指定标签,例如对Course Name列分组

df6 = df.copy()value = df6['Course Name'].value_counts()value_map = dict((v, i) for i,v in enumerate(value.index))df6['Course Name_Label'] = df6.replace({'Course Name':value_map})['Course Name']

使用map

额外强调的是,新增一列,一定要能够想到map

df7 = df.copy()Map = {elem:index for index,elem in enumerate(set(df["Course Name"]))}df7['Course Name_Label'] = df7['Course Name'].map(Map)

使用astype

这个方法应该很多人不知道,这就属于上面提到的知乎问题,能实现的方法太多了

df8 = df.copy()value = df8['Course Name'].astype('category')df8['Course Name_Label'] = value.cat.codes

使用 sklearn

同数值型一样,这种机器学习中的经典操作,sklearn一定有办法,使用LabelEncoder可以对分类数据进行编码

from sklearn.preprocessing import LabelEncoderdf9 = df.copy()le = LabelEncoder()le.fit(df9['Sex'])df9['Sex_Label'] = le.transform(df9['Sex'])le.fit(df9['Course Name'])df9['Course Name_Label'] = le.transform(df9['Course Name'])

一次性转换两列也是可以的

df9 = df.copy()le = OrdinalEncoder()le.fit(df9[['Sex','Course Name']])df9[['Sex_Label','Course Name_Label']] = le.transform(df9[['Sex','Course Name']])

使用factorize

最后,再介绍一个小众但好用的pandas方法,我们需要注意到,在上面的方法中,自动生成的Course Name_Label列,虽然一个数据对应一个语言,因为避免写自定义函数或者字典,这样可以自动生成,所以大多是无序的。

如果我们希望它是有序的,也就是 Python 对应 0,Java对应1,除了自己指定,还有什么优雅的办法?这时可以使用factorize,它会根据出现顺序进行编码

df10 = df.copy()df10['Course Name_Label'] = pd.factorize(df10['Course Name'])[0]

结合匿名函数,我们可以做到对多列进行有序编码转换

df10 = df.copy()cat_columns = df10.select_dtypes(['object']).columnsdf10[['Sex_Label', 'Course Name_Label']] = df10[cat_columns].apply(    lambda x: pd.factorize(x)[0])

关于"Pandas进行数据编码的方式有哪些"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

函数 数据 编码 方法 循环 方式 代码 办法 标签 标记 知识 问题 有序 简洁 也就是 分数 性别 数值 文本 机器 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 湖北九亚互联网络科技有限公司 美国互联网科技巨头监管 朗涯互联网科技 科技创新互联网企业 大白互联网科技 互联网科技公司介绍 成都狮子座互联网科技 一五八零互联网科技 深圳卡尔迅互联网科技有限公司怎么样 互联网科技公司需要的职位 深圳前海聚择互联网科技有限公司 团飞科技与伯堂互联网服务平台 宁夏众和广鑫互联网科技有限公司 湖北码尼互联网科技有限公司电话 南博望互联网科技有限公司 科技赋能视角下互联网保险发展 合肥互联网科技公司公章图片 互联网科技平台产品运营 好易买互联网科技 网互联网络科技 互联网科技金融 中国 科技 互联网 互联网科技公司电话 天速互联网络科技有限公司 互联网科技有哪些公司 互联网科技和信息 黑云互联网科技有限公司 互联网科技数字货币 宁波跨境商互联网科技有限公司 重庆科技产业互联网有哪些
0