pandas中的get_dummies()

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

参数说明:

data : array-like, Series, or DataFrame 输入的数据
prefix : string, list of strings, or dict of strings, default None. get_dummies转换后,列名的前缀
columns : list-like, default None 指定需要实现类别转换的列名
dummy_na : bool, default False 增加一列表示空缺值,如果False就忽略空缺值
drop_first : bool, default False 获得k中的k-1个类别值,去除第一个

 get_dummies是一种onehot编码方式,将拥有不同值的变量转换为0/1数值。比如说我们将yellow,red,blue三种颜色分别用1,2,3表示它们的编号。只是用1,2,3区分,实际上1,2,3是没有什么数值上的意义。

import pandas as pd
xiaoming=pd.DataFrame([1,2,3],index=['yellow','red','blue'],columns=['hat'])
print(xiaoming)
hat_ranks=pd.get_dummies(xiaoming['hat'],prefix='hat')
print(hat_ranks.head())

输出结果: 

        hat
yellow    1
red       2
blue      3
        hat_1  hat_2  hat_3
yellow      1      0      0
red         0      1      0
blue        0      0      1

 再举一个例子,我们没有设定编号,只给定了种类(color和class)。让程序自带的编号作为区分种类,得到的结果如下:

import pandas as pd
df = pd.DataFrame([  
            ['green' , 'A'],   
            ['red'   , 'B'],   
            ['blue'  , 'A']])  

df.columns = ['color',  'class'] 
pd.get_dummies(df) 

 

 还有要注意的是:

离散特征的编码分为两种情况:

1、离散特征的取值之间没有大小的意义,比如color:[red,blue,green],那么就使用one-hot编码

2、离散特征的取值有大小的意义,比如size:[X,XL,XXL],那么就使用数值的映射{X:1,XL:2,XXL:3}

在这里插入图片描述 

猜你喜欢

转载自blog.csdn.net/weixin_40244676/article/details/105964720