Bootstrap

pandas get_dummies用法及代码示例

get_dummies 是 pandas 实现one hot encode的方式

​  one-hot的基本思想:将离散型特征的每一种特征取值都看成一种状态,若指定离散特征中有N个

不相同的取值,那么我们就可以将该特征抽象成N种不同的状态,one-hot编码保证了每一个取值只会

使得一种状态处于“激活态”,也就是说这N种状态中只有一个状态位值为1,其他状态位都是0。

1.语法结构

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

参数说明:

data : array-like, Series, or DataFrame
  输入数据
prefix : string, list of strings, or dict of strings, default None
  给输出的列添加前缀,如prefix=“A”,输出的列会显示类似

prefix_sepstr, default ‘_’

​   设置前缀跟分类的分隔符sepration,默认是下划线"_"

dummy_na : bool, default False

​   增加一列表示空缺值,如果False就忽略空缺值

columns : list-like, default None

​   指定需要实现类别转换的列名

sparsebool, default False

  ​ 哑编码列是否应该支持SparseArray (True)或常规NumPy数组(False)。

drop_first : bool, default False

​   获得k中的k-1个类别值,去除第一个

dtypedtype, default np.uint8

​   新列的数据类型,只允许一种类型的dtype

Return

​   DataFrame 返回哑编码后的DataFrame

2.代码示例

2.1 代码示例1

需求:对DataFrame中的所有列进行哑编码

import pandas as pd

students_df = pd.DataFrame({
    'Id': [302, 504, 708, 103, 303],
    'Name': ["Mike", "Christine", "Rob", "Daniel", "Jennifer"],
    'Sex': ['Male', 'Female', 'Male', 'Male', 'Female'],
})

students_df_dummies = pd.get_dummies(students_df)
print(students_df)
print(students_df_dummies)

在这里插入图片描述
在这里插入图片描述

2.2 代码示例2

需求:设置 columns 只为指定的列进行哑编码

import pandas as pd

students_df = pd.DataFrame({
    'Id': [302, 504, 708, 103, 303],
    'Name': ["Mike", "Christine", "Rob", "Daniel", "Jennifer"],
    'Sex': ['Male', 'Female', 'Male', 'Male', 'Female'],
})
students_df_dummies = pd.get_dummies(students_df, columns=["Sex"])

print(students_df)
print(students_df_dummies)

在这里插入图片描述

2.3 代码示例3

需求:设置prefix来修改哑编码后的列

import pandas as pd

students_df = pd.DataFrame({
    'Id': [302, 504, 708, 103, 303],
    'Name': ["Mike", "Christine", "Rob", "Daniel", "Jennifer"],
    'Sex': ['Male', 'Female', 'Male', 'Male', 'Female'],
})

students_df_dummies = pd.get_dummies(students_df, columns=["Sex"], prefix="Column")

print(students_df)
print(students_df_dummies)

在这里插入图片描述

3.总结

OneHotEncoder方式之pd.get_dummies得优缺点:

优点:解决了分类器不好处理分类数据的问题,在一定程度上也起到了扩充特征的作用。它的值只有

0和1,不同的类型存储在垂直的空间。

缺点:当类别的数量很多时,特征空间会变得非常大,容易造成维度灾难,尤其是对ID类型特征的处理。

参考链接:
 1.https://blog.csdn.net/weixin_38664232/article/details/89048263
 2.https://zhuanlan.zhihu.com/p/139144355
 3.https://www.delftstack.com/zh/howto/python-pandas/get-dummies-pandas/

;