Pandas_ get_dummies独热编码
pd.get_dummies 是 Pandas 库中的一个函数,用于将分类变量转换为“哑变量”或“独热编码”(One-Hot Encoding),这是处理分类数据的一种常用技术。这种编码方式可以使得模型能够更好地处理非数值变量。
基本用法
- 转换单个列:
将 DataFrame 中的一列转换为哑变量。
import pandas as pddf = pd.DataFrame({'color': ['red', 'green', 'blue']})
dummies = pd.get_dummies(df, columns=['color'])
print(dummies)
输出结果:
color_blue color_green color_red
0 0 0 1
1 0 1 0
2 1 0 0
- 转换多个列:
同时转换 DataFrame 中的多个列。
df = pd.DataFrame({'color': ['red', 'green', 'blue'], 'size': ['S', 'M', 'L']})
dummies = pd.get_dummies(df, columns=['color', 'size'])
print(dummies)
输出结果:
color_blue color_green color_red size_L size_M size_S
0 0 0 1 0 0 1
1 0 1 0 0 1 0
2 1 0 0 1 0 0
参数说明
• columns: 指定需要转换的列名。如果不指定,则转换所有对象类型的列。
• prefix: 为生成的哑变量列添加前缀。可以是列名或一个由列名组成的列表。
• prefix_sep: 前缀和值之间的分隔符,默认为空格。
• dummy_na: 是否为缺失值创建一个哑变量,默认为 False。
• columns: 指定需要转换的列。
• sparse: 返回稀疏矩阵格式的数据,默认为 False。
高级用法
- 添加前缀:
使用 prefix 参数为生成的哑变量列添加前缀。
df = pd.DataFrame({'color': ['red', 'green', 'blue']})
dummies = pd.get_dummies(df, columns=['color'], prefix='color')
print(dummies)
输出结果:
color_blue color_green color_red
0 0 0 1
1 0 1 0
2 1 0 0
- 处理缺失值:
使用 dummy_na=True 为缺失值创建一个哑变量。
df = pd.DataFrame({'color': ['red', 'green', None]})
dummies = pd.get_dummies(df, columns=['color'], dummy_na=True)
print(dummies)
输出结果:
color_green color_red color_nan
0 0 1 0
1 1 0 0
2 0 0 1
- 返回稀疏矩阵:
使用 sparse=True 返回稀疏矩阵格式的数据,节省内存。
df = pd.DataFrame({'color': ['red', 'green', 'blue']})
dummies = pd.get_dummies(df, columns=['color'], sparse=True)
print(dummies)
输出结果:
<class ‘pandas.core.sparse.DataFrame’>
pd.get_dummies 是处理分类数据的强大工具。