在数据分析和处理过程中,尤其是机器学习模型构建时,常常需要将类别特征转换为数值特征。pandas.get_dummies
是 Pandas 提供的一个函数,用于将类别变量转换为独热编码(one-hot encoding),即将每个类别值转换为一个新的列。本文将详细介绍 pandas.get_dummies
的用途和用法,包括其参数详解、示例代码以及进阶使用技巧。
🧑 博主简介:现任阿里巴巴嵌入式技术专家,15年工作经验,深耕嵌入式+人工智能领域,精通嵌入式领域开发、技术管理、简历招聘面试。CSDN优质创作者,提供产品测评、学习辅导、简历面试辅导、毕设辅导、项目开发、C/C++/Java/Python/Linux/AI等方面的服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:
gylzbk
)
💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。
【Pandas】pandas.get_dummies详解与实战应用:类别数据的独热编码神器,用于将类别变量转换为独热编码(one-hot encoding),即将每个类别值转换为一个新的列
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
有以下几个优点:
- 类别数据编码:将类别特征转换为数值特征,以便模型能够处理。
- 简洁性:语法简洁,能够快速完成独热编码操作。
- 灵活性:支持多种参数选项,满足不同的数据编码需求。
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.注意事项 ⚠️
- 选择正确的列:确保选定的列为类别变量(categorical variables),避免对非类别数据进行独热编码。
- 多重共线性:在一些模型中,独热编码可能会引发多重共线性问题,可以通过
drop_first
参数删除第一个类别值的列。 - 缺失值处理:根据需求决定是否需要包含表示缺失值的独热点。
6.参考资料 📚
7.结论 🏁
Pandas 的 pandas.get_dummies
函数提供了一种高效且灵活的方式,将类别变量转换为独热编码。通过本文详细的讲解和示例,相信你已经掌握了 pandas.get_dummies
的基础使用方法和进阶技巧,有助于更好地进行数据编码和分析处理。