首页 > 编程语言 >Python教程:Pandas数据转换编码的10种方式

Python教程:Pandas数据转换编码的10种方式

时间:2024-07-10 15:41:31浏览次数:7  
标签:10 Course Python label df Score Sex Pandas

1.构建测试数据集

import pandas as pd
import numpy as np

df = pd.DataFrame({
        'Sex': ['M','F','M','M','M','F','M','F','F','F'],
        'Course': ['English','C','Math','Python','Java','PHP','Linux','SQL','Python','C++'],
        'Score': np.random.randint(0,100,10)
        })
'''
  Sex   Course  Score
0   M  English     22
1   F        C     20
2   M     Math     89
3   M   Python     13
4   M     Java     68
5   F      PHP     49
6   M    Linux     97
7   F      SQL      5
8   F   Python     15
9   F      C++     83
'''

2.自定义函数 + 循环遍历

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'
    
df['Score_label'] = None
for i in range(len(df)):
    df.iloc[i, 3] = myFun(df.iloc[i, 2])

3.自定义函数 + map

df['Score_label_2'] = df['Score'].map(myFun)

4.自定义函数 + apply

df['Score_label_3'] = df['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'))))

apply执行速度堪忧,针对大数据量尽量避免。

5.pd.cut

bins = [0, 59, 70, 80, 90, 100]
df['Score_label_4'] = pd.cut(df['Score'], bins)
# labels可以直接设定标签
df['Score_label_4'] = pd.cut(df['Score'], bins, labels=['E','D','C','B','A'])

注意:左右开闭区间的设定。

6.sklearn二值化

from sklearn.preprocessing import Binarizer
binarizer_ = Binarizer(threshold=60)
df['Score_label_5'] = binarizer_.fit_transform(np.array(df['Score']).reshape(-1,1))

7.replace替换

df['Sex_label'] = df['Sex'].replace(['M','F'], [0,1])

8.value_counts()转换dict指定

利用 value_counts() 进行去重统计,转换为标签。

value_map = dict((v, i) for i, v in enumerate(df['Course'].value_counts().index))

df['Course_label'] = df.replace({'Course': value_map})['Course']

9.set + map

Map = {v: i for i, v in enumerate(set(df['Course']))}
'''
{'Math': 0,
 'C': 1,
 'Linux': 2,
 'English': 3,
 'Java': 4,
 'PHP': 5,
 'C++': 6,
 'Python': 7,
 'SQL': 8}
'''

df['Course_label_2'] = df['Course'].map(Map)

10.astype转换类型

value = df['Course'].astype('category')
df['Course_label_3'] = value.cat.codes

转换为:类别类型。

11.sklearn.preprocessing.LabelEncoder

from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
le.fit(df['Sex'])
df['Sex_label_2'] = le.transform(df['Sex'])

le2 = LabelEncoder()
df['Course_label_4'] = le2.fit_transform(df['Course'])

12.sklearn.preprocessing.OrdinalEncoder

一次性转换多个列,OrdinalEncoder 与 LabelEncoder 区别在于前者支持数组的转换,后者仅支持单独一列。

from sklearn.preprocessing import OrdinalEncoder

le3 = OrdinalEncoder()
le3.fit(df[['Sex', 'Course']])
#学习中遇到问题没人解答?小编创建了一个Python学习交流群:725638078

df[['Sex_label_3', 'Course_label_5']] = le3.transform(df[['Sex', 'Course']])

13.factorize

以上几种自动生成字典的编码方式,基本都是无序的,不固定的。

# 根据出现的顺序编码
df['Course_label_6'] = pd.factorize(df['Course'])[0]

利用 factorize 可以实现顺序编码。

结合匿名函数,可以实现对多列进行有序编码。

cat_columns = df.select_dtypes(['object']).columns

df[['Sex_label_4','Course_label_7']] = df[cat_columns].apply(lambda x: pd.factorize(x)[0])

标签:10,Course,Python,label,df,Score,Sex,Pandas
From: https://www.cnblogs.com/djdjdj123/p/18294195

相关文章

  • Python教程:sort和sorted实现排序之对比
    总的来说,sort是应用在列表上的方法,修改原始列表。内建函数sorted可对所有可迭代的对象进行排序操作,返回新的对象。list.sort()方法效率会比sorted(iter)稍微高些。一、sort函数sort()函数用于对原列表进行排序,如果指定参数,则依据指定的函数进行排序。列表才可以进行修......
  • GBPC5010-ASEMI逆变箱专用GBPC5010
    编辑:llGBPC5010-ASEMI逆变箱专用GBPC5010型号:GBPC5010品牌:ASEMI封装:GBPC-4批号:2024+现货:50000+最大重复峰值反向电压:1000V最大正向平均整流电流(Vdss):50A功率(Pd):大功率芯片个数:4引脚数量:4类型:整流方桥、整流桥正向浪涌电流:400A正向电压:1.20V封装尺寸:如图工作温度......
  • 要将 Python 脚本制作成可执行程序,您可以使用以下几种方法:
    要将Python脚本制作成可执行程序,您可以使用以下几种方法:1.使用PyInstallerPyInstaller是一个非常流行的工具,可以将Python脚本打包成独立的可执行文件,支持Windows、macOS和Linux。您可以按照以下步骤进行操作:安装PyInstaller:复制代码pipinstallpyinstaller......
  • Python实现爬虫并输出
    1.Python爬虫并输出示例下面是一个使用Python编写的简单网络爬虫示例,该爬虫将抓取某个网页(例如,我们假设为https://example.com,但请注意实际使用时我们需要替换为一个真实且允许抓取的网站)的标题(Title)并打印出来。由于直接访问和抓取真实网站可能涉及版权和法律问题,这里我们仅提......
  • 【AI和大模型】AI到底和大模型有什么区别?机器学习,深度学习,python,NPL
    什么是AI?AI是一个广泛的领域,涵盖了模拟和扩展人类智能的多种理论和技术;而大模型是AI领域中的一种具体技术,特别是在自然语言处理(NLP)方面取得了显著进展的深度学习模型。大模型通常指的是具有大量参数的深度学习模型,它们通过在大规模数据集上进行训练,能够学到丰富的数据表示和模......
  • 初创芯片公司非常疯狂,将CPU性能提高100倍
    初创芯片公司非常疯狂,将CPU性能提高100倍[http://mp.weixin.qq.com/s?__biz=Mzg2NDgzNTQ4MA**&mid=2247741576&idx=5&sn=733a2dffecbfd99e41e97e93e204b2cb&chksm=ce6e327ff919bb691bf4e3ed418f27d816846b1c577477d5d7f063c103e01d9d4cbeca47195b&mpshare=1&scen......
  • 初创芯片公司非常疯狂,将CPU性能提高100倍
    初创芯片公司非常疯狂,将CPU性能提高100倍[http://mp.weixin.qq.com/s?__biz=Mzg2NDgzNTQ4MA**&mid=2247741576&idx=5&sn=733a2dffecbfd99e41e97e93e204b2cb&chksm=ce6e327ff919bb691bf4e3ed418f27d816846b1c577477d5d7f063c103e01d9d4cbeca47195b&mpshare=1&scen......
  • 初创芯片公司非常疯狂,将CPU性能提高100倍
    初创芯片公司非常疯狂,将CPU性能提高100倍[http://mp.weixin.qq.com/s?__biz=Mzg2NDgzNTQ4MA&mid=2247741576&idx=5&sn=733a2dffecbfd99e41e97e93e204b2cb&chksm=ce6e327ff919bb691bf4e3ed418f27d816846b1c577477d5d7f063c103e01d9d4cbeca47195b&mpshare=1&scene=......
  • 初创芯片公司非常疯狂,将CPU性能提高100倍
    初创芯片公司非常疯狂,将CPU性能提高100倍[http://mp.weixin.qq.com/s?__biz=Mzg2NDgzNTQ4MA&mid=2247741576&idx=5&sn=733a2dffecbfd99e41e97e93e204b2cb&chksm=ce6e327ff919bb691bf4e3ed418f27d816846b1c577477d5d7f063c103e01d9d4cbeca47195b&mpshare=1&scene=......
  • python执行shell并获取结果
    在Python中执行Shell命令并获取其结果,通常可以使用subprocess模块。这个模块允许我们启动新的进程,连接到它们的输入/输出/错误管道,并获取它们的返回码。下面是一个详细的示例,展示了如何使用subprocess.run()函数来执行Shell命令并获取其输出。1.示例一:使用subprocess.run()执行l......