pd.get_dummies()是Pandas中进行编码的函数(对原数据集中的某个类别做出判断,True or False),常常对类别特征进行独热编码(One_Hot Encoding)
类比: 给你一张全是判断题的试卷(输入的DataFrame),做完判断题上交的试卷(输出的DataFrame)
独热编码(One-Hot Encoding)简介:
它能够将分类特征转换为布尔值(True、False),每个类别对应一个列,如果记录属于该类别,则该列值为True,否则为False
函数参数:
data
:要进行独热编码的数据
prefix
:是否在每个列前面加一个前缀
columns
:要进行独热编码的列的列表。如果不指定,则对所有对象列进行独热编码。
drop_first
:布尔值,如果为 True,则每个经过独热编码的特征中的第一个列将被丢弃
dtype
:输出数据的类型,默认为 np.uint8
示例:
import pandas as pd
data = pd.DataFrame({
'Color': ['Green', 'Red', 'Green', 'Blue'],
'Age': [25, 30, 22, 40]
})
dummies = pd.get_dummies(data['Color'], prefix='Color')
print(dummies)
输出:
dummies会按照data中'Color'分类,并且给了一个前缀,那么原始的Color中有3个颜色就会有3列,与元素个数(4)无关。'Green', 'Red', 'Green', 'Blue'分别对应0-3,因此在’Color_Green‘列中第’0‘ 、’2‘行是True,其余为False,以此类推。
在很多情况下需要把布尔值(bool)转换为二进制(0、1):
dummies = dummies.astype(int)
或者
dummies = dummies * 1
输出:
输入参数如果有dummy_na:
dummy_na: 是一个布尔值
如果为True,那就会缺失值(NaN)生成一个额外的列,因为缺失值会错位的解释为一个有效类别,创建一个缺失值的单独指标可以避免混淆,允许模型区分实际的类别和缺失值
例如:有一个DataFrame,里面有缺失值A、B、C、NaN,当dummy_na = True时,他们会生成单独的列
Feature1 Feature2
0 A 20.0
1 B NaN
2 C 30.0
输出如下,其中Feature1_A、B、C
列是为原始 Feature1
中的 'A、B、C' 类别创建的,Feature2_NA
列是为 Feature2
中的缺失值 NaN
创建的。
Feature1_A Feature1_B Feature1_C Feature2 Feature2_NA
0 1 0 0 20.0 0
1 0 1 0 NaN 1
2 0 0 1 30.0 0