1 函数解释
离散特征的编码分为两种情况:
- 离散特征的取值之间没有大小的意义,比如color:[red,blue],那么就使用one-hot编码
- 离散特征的取值有大小的意义,比如size:[M,L,XL],那么就使用数值的映射{M:1,L:2,XL:3}
使用pandas.get_dummies()函数可以很方便的对离散型特征进行one-hot编码
pandas.get_dummies(data, prefix=None, prefix_sep='_', dummy_na=False,
columns=None, sparse=False, drop_first=False)
详细解释见官方文档
重要参数解释
- data:array,Series或者DataFrame
- prefix:类型-字符串,字符串列表或字符串字典,默认值为None。可用来增加一个与列数相等长度的列表作为DataFrame的列名。
- dummy_na:布尔值,默认为False。若为True,增加一个列表示空值;若为False,忽略空值
- column:类似于列表,默认值是None。 若columns是空,所有object或者category类型的列都会进行one-hot编码。
- return:DataFrame
2 实例
import pandas as pd
df=pd.DataFrame([['XL','Green','A'],['L','Red','B'],['M','Blue','C'],['L','Yellow','D']])
df.columns=['Size','Color','Type']
df
Size | Color | Type | |
---|---|---|---|
0 | XL | Green | A |
1 | L | Red | B |
2 | M | Blue | C |
3 | L | Yellow | D |
#将取值具有大小意义的Size列,使用map函数进行数值映射{M:1,L:2,XL:3}
df['Size']=df['Size'].map({'XL':3,'L':2,'M':1}).astype(int)
df
Size | Color | Type | |
---|---|---|---|
0 | 3 | Green | A |
1 | 2 | Red | B |
2 | 1 | Blue | C |
3 | 2 | Yellow | D |
#将取值之间没有大小意义的Color列进行one-hot编码
df=pd.get_dummies(df,columns=['Color'])
df
Size | Type | Color_Blue | Color_Green | Color_Red | Color_Yellow | |
---|---|---|---|---|---|---|
0 | 3 | A | 0 | 1 | 0 | 0 |
1 | 2 | B | 0 | 0 | 1 | 0 |
2 | 1 | C | 1 | 0 | 0 | 0 |
3 | 2 | D | 0 | 0 | 0 | 1 |
#不指定列,对Color列与Type列同时进行one-hot编码
df=pd.get_dummies(df)
df
Size | Color_Blue | Color_Green | Color_Red | Color_Yellow | Type_A | Type_B | Type_C | Type_D | |
---|---|---|---|---|---|---|---|---|---|
0 | 3 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 |
1 | 2 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 |
2 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
3 | 2 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 |