【Python】数据预处理之将类别数据转换为数值的方法(含Python代码分析)

这篇具有很好参考价值的文章主要介绍了【Python】数据预处理之将类别数据转换为数值的方法(含Python代码分析)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在进行Python数据分析的时候,首先要进行数据预处理。但是有时候不得不处理一些非数值类别的数据,遇到这类问题时该怎么解决呢?

目前为止,总结了三种方法,这里分享给大家。

一、通过mapping方式,将类别映射为数值

这种方法是属于映射字典将类标转换为整数,不过这种方法适用范围有限。

我们首先创建一个数据集:

import pandas as pd
df = pd.DataFrame([['green', 'M', 10.1, 'class1'],
          ['red', 'L', 13.5, 'class2'],
          ['blue', 'XL', 15.3, 'class1']])
df.columns =['color', 'size', 'price', 'classlabel']

我们展示一下数据集:

   color size  price classlabel
0  green    M   10.1     class1
1    red    L   13.5     class2
2   blue   XL   15.3     class1

我们想把size列的类别转换成数值,可以这样操作:

size_mapping = {'XL':3, 'L':2, 'M':1}
df['size'] = df['size'].map(size_mapping)

我们看一下结果:

   color  size  price classlabel
0  green     1   10.1     class1
1    red     2   13.5     class2
2   blue     3   15.3     class1

我们继续将classlabel列转换成数值型,代码如下:

class_mapping = {label: idx for idx, label in enumerate(np.unique(df['classlabel']))}
df['classlabel'] = df['classlabel'].map(class_mapping)
print('2,',df)

结果展示如下:

2,    color  size  price  classlabel
0  green     1   10.1           0
1    red     2   13.5           1
2   blue     3   15.3           0

二、通过LabelEncoder来进行快速的转换

继续用上面的例子来展示:

   color size  price classlabel
0  green    M   10.1     class1
1    red    L   13.5     class2
2   blue   XL   15.3     class1

我们对classlabel进行转换:

class_encoder = LabelEncoder()
df['classlabel'] = class_encoder.fit_transform(df['classlabel'].values)
print(df)

结果展示如下:

   color size  price  classlabel
0  green    M   10.1           0
1    red    L   13.5           1
2   blue   XL   15.3           0

可以看到,classlabel列自动实现了编码,class1对应的类别为1,class2对应的类别为2。

这种转换比较快速方便,但是编码的可识别性也较低,比如我们在同样的基础上继续对size和color进行转换。

class_encoder = LabelEncoder()
color_encoder=LabelEncoder()
size_encoder=LabelEncoder()
df['classlabel'] = class_encoder.fit_transform(df['classlabel'].values)
df['size']=size_encoder.fit_transform(df['size'].values)
df['color']=color_encoder.fit_transform(df['color'].values)
print(df)

结果展示为:

   color  size  price  classlabel
0      1     1   10.1           0
1      2     0   13.5           1
2      0     2   15.3           0

可以看到,转换的类型几乎是一致的,当变量较多时,会出现表意不明的错误。

三、通过pd.get_dummies方法来转换

pd.get_dummies相当于onehot编码,常用与把离散的类别信息转化为onehot编码形式。

官方文档:

def get_dummies(data, 
                prefix=None, 
                prefix_sep='_', 
                dummy_na=False,
                columns=None,
                sparse=False,
                drop_first=False,
                dtype=None)

对于上面的例子,我们转换为:

df2=pd.get_dummies(df)
print(df2)

结果展示为:

   price  color_blue  color_green  color_red  size_L  size_M  size_XL  classlabel_class1  classlabel_class2       
0   10.1           0            1          0       0       1        0                  1                  0       
1   13.5           0            0          1       1       0        0                  0                  1       
2   15.3           1            0          0       0       0        1                  1                  0       

如果我们转换其中一列呢?

color_encoder=pd.get_dummies(df[['color']])
df2=pd.concat([color_encoder,df],axis=1)
print(df2)

结果展示为:文章来源地址https://www.toymoban.com/news/detail-484030.html

   color_blue  color_green  color_red  color size  price classlabel
0           0            1          0  green    M   10.1     class1
1           0            0          1    red    L   13.5     class2
2           1            0          0   blue   XL   15.3     class1

到了这里,关于【Python】数据预处理之将类别数据转换为数值的方法(含Python代码分析)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python数据预处理

    输出结果如下: 观察可知,【销量】存在一个缺失值,本例将缺失值所在行进行删除处理 输出结果如下: 输出结果如下: 观察可知,箱线图上下边缘存在异常值,本例通过四分位法对异常值进行处理,即:超出上边缘的异常值让其落在上边缘,低于下边缘的异常值让其落在

    2024年02月13日
    浏览(29)
  • Python中对CSV数据预处理

    CSV(Comma Separated Values)是一种常用的数据格式,它是以逗号作为分隔符的纯文本文件,通常用于存储大量的数据。在数据分析和机器学习领域,CSV数据预处理是一个必不可少的步骤。在本篇博客中,我们将介绍Python中对CSV数据预处理的所有步骤。 在Python中,我们可以使用

    2024年02月10日
    浏览(29)
  • 【Python机器学习】SVM——预处理数据

    为了解决特征特征数量级差异过大,导致的模型过拟合问题,有一种方法就是对每个特征进行缩放,使其大致处于同一范围。核SVM常用的缩放方法是将所有的特征缩放到0和1之间。 “人工”处理方法: 可以看到,最终的结果上训练集和测试集的精度都非常好,但还没有接近

    2024年01月17日
    浏览(28)
  • 【Python实战】数据预处理(数据清理、集成、变换、归约)

    因疫情原因,距上次写博客已过许久 这次回看以前的书籍,发现数据预处理这块在业务中极其重要 业务中,数据的准确率对业务的影响至关重要 好的数据往往百利而无一害,相对的,不好的数据会带来无法预期的损失 管理好数据,就能管理好业务,环环相扣,生生不息 所

    2024年02月08日
    浏览(35)
  • 数据挖掘学习——数据预处理方法代码汇总(python)

    目录 一、归一化处理方法 (1)min-max方法(离散归一化) (2)零-均值规范化方法 (3)小数定标规范化 二、插值法 (1)拉格朗日插值法 三、相关性分析 (1)pearson相关性系数 (2)spearman相关性系数 四、主成分分析(PCA) 归一化常用方法有: (1)min-max方法(离散归一化

    2024年02月08日
    浏览(47)
  • Python数据分析之特征处理笔记三——特征预处理(特征选择)

    书接上文,进行数据清洗过程后,我们得到了没有空值、异常值、错误值的数据,但想要用海量的数据来建立我们所需要的算法模型,仅仅是数据清洗的过程是不够的,因为有的数据类型是数值,有的是字符,怎样将不同类型的数据联系起来?以及在保证最大化信息量的前提

    2024年02月02日
    浏览(35)
  • python数据预处理—数据清洗、数据集成、数据变换、数据归约

    进行数据分析时,需要预先把进入模型算法的数据进行数据预处理。一般我们接收到的数据很多都是“脏数据”,里面可能包含缺失值、异常值、重复值等;同时有效标签或者特征需要进一步筛选,得到有效数据,最终把原始数据处理成符合相关模型算法的输入标准,从而进

    2024年02月02日
    浏览(36)
  • Spark中数据预处理和清洗的方法(python)

    在Spark中进行数据分析,数据预处理和清洗是必不可少的步骤,以下是一些常用的方法: 去除重复行 去除空值 替换空值 更改数据类型 分割列 合并列 过滤行 去除重复行可以使用DataFrame的 dropDuplicates() 方法,例如: 去除空值可以使用DataFrame的 dropna() 方法,例如: 可以通过指

    2024年02月11日
    浏览(44)
  • Python数据挖掘 数据预处理案例(以航空公司数据为例)

    1、数据清洗 2、数据集成 3、数据可视化 根据航空公司系统内的客户基本信息、乘机信息以及积分信息等详细数据,依据末次飞行日期( LAST_FLIGHT_DATE),以2014年3月31日为结束时间,选取宽度为两年的时间段作为分析观测窗口,抽取观测窗口2012年4月1日至2014年3月31日内有乘机记

    2024年02月04日
    浏览(32)
  • Python数据分析与应用 |第4章 使用pandas进行数据预处理 (实训)

    编号 性别 高血压 是否结婚 工作类型 居住类型 体重指数 吸烟史 中风 9046 男 否 是 私人 城市 36.6 以前吸烟 是 51676 女 否 是 私营企业 农村 N/A 从不吸烟 是 31112 男 否 是 私人 农村 32.5 从不吸烟 是 60182 女 否 是 私人 城市 34.4 抽烟 是 1665 女 是 是 私营企业 农村 24 从不吸烟 是

    2024年04月23日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包