【Pandas】pandas.get_dummies详解与实战应用:类别数据的独热编码神器,用于将类别变量转换为独热编码(one-hot encoding),即将每个类别值转换为一个新的列

在数据分析和处理过程中,尤其是机器学习模型构建时,常常需要将类别特征转换为数值特征。pandas.get_dummies 是 Pandas 提供的一个函数,用于将类别变量转换为独热编码(one-hot encoding),即将每个类别值转换为一个新的列。本文将详细介绍 pandas.get_dummies 的用途和用法,包括其参数详解、示例代码以及进阶使用技巧。


🧑 博主简介:现任阿里巴巴嵌入式技术专家,15年工作经验,深耕嵌入式+人工智能领域,精通嵌入式领域开发、技术管理、简历招聘面试。CSDN优质创作者,提供产品测评、学习辅导、简历面试辅导、毕设辅导、项目开发、C/C++/Java/Python/Linux/AI等方面的服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:gylzbk

💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。

在这里插入图片描述

在这里插入图片描述

1.简介 📘

在数据分析和处理过程中,尤其是机器学习模型构建时,常常需要将类别特征转换为数值特征。pandas.get_dummies 是 Pandas 提供的一个函数,用于将类别变量转换为独热编码(one-hot encoding),即将每个类别值转换为一个新的列。本文将详细介绍 pandas.get_dummies 的用途和用法,包括其参数详解、示例代码以及进阶使用技巧。

2.什么是pandas.get_dummies 🧩

pandas.get_dummies 是 Pandas 提供的一个函数,用于将类别变量(categorical variables)转换为独热编码的格式。独热编码将每个类别值转换为一个新的布尔列(或者数值列),通过 0 和 1 表示该类别值是否出现。

3.为什么使用pandas.get_dummies 🤔

使用 pandas.get_dummies 有以下几个优点:

  1. 类别数据编码:将类别特征转换为数值特征,以便模型能够处理。
  2. 简洁性:语法简洁,能够快速完成独热编码操作。
  3. 灵活性:支持多种参数选项,满足不同的数据编码需求。

4.pandas.get_dummies方法详解 🔍

4.1 函数签名 🖊️

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

4.2 参数解释 📝

  • data: 类型:array-like, Series, or DataFrame。说明:待编码的类别数据。
  • prefix: 类型:str, list of str, or dict of str, default None。说明:用于生成新列名称的前缀。
  • prefix_sep: 类型:str, default ‘_’。说明:前缀与类别值之间的分隔符。
  • dummy_na: 类型:bool, default False。说明:是否包括表示缺失值的列。
  • columns: 类型:list-like, default None。说明:待编码的具体列名,仅适用于 DataFrame。
  • sparse: 类型:bool, default False。说明:是否返回稀疏矩阵。
  • drop_first: 类型:bool, default False。说明:是否删除第一个类别值的列,避免多重共线性。
  • dtype: 类型:dtype, default np.uint8。说明:新列的数据类型。

4.3 返回值 📤

返回一个包含独热编码结果的 DataFrame。

4.4 示例代码 👨‍💻

4.4.1 基本用法 💾

首先,我们来看看一个基本的用法,将类别数据转换为独热编码。

import pandas as pd

# 创建一个示例 DataFrame
df = pd.DataFrame({
    'ID': [1, 2, 3],
    'Category': ['A', 'B', 'A']
})

# 使用 pandas.get_dummies 进行独热编码
encoded_df = pd.get_dummies(df, columns=['Category'])

print(encoded_df)

以上代码将 Category 列进行独热编码。输出结果如下:

   ID  Category_A  Category_B
0   1           1           0
1   2           0           1
2   3           1           0

4.4.2 添加前缀和分隔符 ⏩

接下来,我们看看如何添加前缀和分隔符来生成新的列名称。

# 使用 pandas.get_dummies 添加前缀和分隔符进行独热编码
encoded_df_with_prefix = pd.get_dummies(df, columns=['Category'], prefix='Cat', prefix_sep='-')

print(encoded_df_with_prefix)

添加前缀和分隔符的输出结果如下:

   ID  Cat-A  Cat-B
0   1      1      0
1   2      0      1
2   3      1      0

4.5 进阶使用 🚀

4.5.1 包含缺失值编码 💨

在某些情况下,可能需要包含缺失值的独热编码,可以通过 dummy_na 参数来实现。

# 创建包含缺失值的示例 DataFrame
df_with_na = pd.DataFrame({
    'ID': [1, 2, 3],
    'Category': ['A', None, 'B']
})

# 使用 pandas.get_dummies 包含缺失值进行独热编码
encoded_df_with_na = pd.get_dummies(df_with_na, columns=['Category'], dummy_na=True)

print(encoded_df_with_na)

包含缺失值的独热编码输出结果如下:

   ID  Category_A  Category_B  Category_nan
0   1           1           0             0
1   2           0           0             1
2   3           0           1             0

4.5.2 删除第一个类别值的列 📜

为了避免多重共线性问题,可以通过 drop_first 参数删除第一个类别值的列。

# 使用 pandas.get_dummies 删除第一个类别值的列进行独热编码
encoded_df_drop_first = pd.get_dummies(df, columns=['Category'], drop_first=True)

print(encoded_df_drop_first)

删除第一个类别值的列后的独热编码输出结果如下:

   ID  Category_B
0   1           0
1   2           1
2   3           0

4.5.3 处理多列独热编码 📜

可以同时对多个列进行独热编码。

# 创建包含多个类别列的示例 DataFrame
df_multi = pd.DataFrame({
    'ID': [1, 2, 3],
    'Category1': ['A', 'B', 'A'],
    'Category2': ['X', 'Y', 'X']
})

# 使用 pandas.get_dummies 对多个列进行独热编码
encoded_df_multi = pd.get_dummies(df_multi, columns=['Category1', 'Category2'])

print(encoded_df_multi)

处理多个列独热编码的输出结果如下:

   ID  Category1_A  Category1_B  Category2_X  Category2_Y
0   1            1            0            1            0
1   2            0            1            0            1
2   3            1            0            1            0

5.注意事项 ⚠️

  1. 选择正确的列:确保选定的列为类别变量(categorical variables),避免对非类别数据进行独热编码。
  2. 多重共线性:在一些模型中,独热编码可能会引发多重共线性问题,可以通过 drop_first 参数删除第一个类别值的列。
  3. 缺失值处理:根据需求决定是否需要包含表示缺失值的独热点。

6.参考资料 📚

7.结论 🏁

Pandas 的 pandas.get_dummies 函数提供了一种高效且灵活的方式,将类别变量转换为独热编码。通过本文详细的讲解和示例,相信你已经掌握了 pandas.get_dummies 的基础使用方法和进阶技巧,有助于更好地进行数据编码和分析处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

I'mAlex

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值