python学习——pandas使用get_dummies,对无大小区分分类字段进行one-hot热编码

本文介绍如何使用 Pandas 的 get_dummies 方法进行 one-hot 编码,并通过实例展示了如何处理分类数据,如衣服的颜色和大小等。get_dummies 方法能够将分类变量转换为数值形式,便于后续的数据分析与机器学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考博客:

python中get_dummies实践

pandas使用get_dummies进行one-hot编码

在数据集中,会有一些分类字段,比如衣服的大小(X,XL,M),衣服的颜色(RED,GREEN),在进行训练的时候,我们肯定要让category变为nummerical表达形式。

对于有大小区分的category,直接map就行了。如下:

df = pd.DataFrame([
            ['green', 'M', 10.1, 'class1'], 
            ['red', 'L', 13.5, 'class2'], 
            ['blue', 'XL', 15.3, 'class1']])
 
df.columns = ['color', 'size', 'prize', 'class label']
 
size_mapping = {
           'XL': 3,
           'L': 2,
           'M': 1}
df['size'] = df['size'].map(size_mapping)

对于颜色这种无法区分大小的数据,我们就使用one-hot编码,pandas自带方法帮我们完成编码。

>>> df = pd.DataFrame({'A': ['a', 'b', 'a'], 'B': ['b', 'a', 'c'],
...                    'C': [1, 2, 3]})
>>> pd.get_dummies(df, prefix=['col1', 'col2'])
   C  col1_a  col1_b  col2_a  col2_b  col2_c
0  1       1       0       0       1       0
1  2       0       1       1       0       0
2  3       1       0       0       0       1

从上面的结果可以看到,热编码是将我们一个分类字段变为多个分类字段,1代表是这个分类,0代表不是这个分类。

最后说明一下

get_dummies()不会改变原来的df,这个方法返回的是改变后的df,所以如果你想得到改变后的df,就df = pd.get_dummies()

在数据预处理和机器学习任务中,独热编码One-Hot Encoding)是一种常用的编码方式,特别适用于处理类别型变量。下面是如何对`sex`和`embarked`字段进行独热编码的步骤: 1. **理解独热编码**: 独热编码将类别型变量转换为二进制向量,每个类别对应一个二进制向量中的一个位置。例如,如果`sex`字段有两个类别(男和女),那么独热编码后就会有两个二进制特征。 2. **使用PythonPandas进行独热编码**: 下面是一个使用PythonPandas库进行独热编码的示例代码: ```python import pandas as pd # 假设我们有一个包含sex和embarked字段的DataFrame data = { 'sex': ['male', 'female', 'female', 'male'], 'embarked': ['S', 'C', 'S', 'Q'] } df = pd.DataFrame(data) # 对sex字段进行独热编码 sex_dummies = pd.get_dummies(df['sex'], prefix='sex') # 对embarked字段进行独热编码 embarked_dummies = pd.get_dummies(df['embarked'], prefix='embarked') # 将独热编码后的特征与原DataFrame合并 df = pd.concat([df, sex_dummies, embarked_dummies], axis=1) # 如果不需要原始的sex和embarked列,可以将其删除 df = df.drop(['sex', 'embarked'], axis=1) print(df) ``` 3. **解释代码**: - `pd.get_dummies`函数用于将类别型变量转换为独热编码- `prefix`参数用于为新生成的列添加前缀,以避免列名冲突。 - `pd.concat`函数用于将独热编码后的特征与原DataFrame合并。 - `drop`函数用于删除原始的`sex`和`embarked`列。 4. **输出结果**: 上述代码的输出结果如下: ``` sex_female sex_male embarked_C embarked_Q embarked_S 0 0 1 0 0 1 1 1 0 1 0 0 2 1 0 0 0 1 3 0 1 0 1 0 ``` 通过这种方式,我们可以将类别型变量转换为适合机器学习模型输入的数值型特征。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值