• 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中的所有列进行哑编码

    1. import pandas as pd
    2. students_df = pd.DataFrame({
    3. 'Id': [302, 504, 708, 103, 303],
    4. 'Name': ["Mike", "Christine", "Rob", "Daniel", "Jennifer"],
    5. 'Sex': ['Male', 'Female', 'Male', 'Male', 'Female'],
    6. })
    7. students_df_dummies = pd.get_dummies(students_df)
    8. print(students_df)
    9. print(students_df_dummies)

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

    2.2 代码示例2

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

    1. import pandas as pd
    2. students_df = pd.DataFrame({
    3. 'Id': [302, 504, 708, 103, 303],
    4. 'Name': ["Mike", "Christine", "Rob", "Daniel", "Jennifer"],
    5. 'Sex': ['Male', 'Female', 'Male', 'Male', 'Female'],
    6. })
    7. students_df_dummies = pd.get_dummies(students_df, columns=["Sex"])
    8. print(students_df)
    9. print(students_df_dummies)

    在这里插入图片描述

    2.3 代码示例3

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

    1. import pandas as pd
    2. students_df = pd.DataFrame({
    3. 'Id': [302, 504, 708, 103, 303],
    4. 'Name': ["Mike", "Christine", "Rob", "Daniel", "Jennifer"],
    5. 'Sex': ['Male', 'Female', 'Male', 'Male', 'Female'],
    6. })
    7. students_df_dummies = pd.get_dummies(students_df, columns=["Sex"], prefix="Column")
    8. print(students_df)
    9. print(students_df_dummies)

    在这里插入图片描述

    3.总结

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

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

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

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

  • 相关阅读:
    深信服C++笔试
    使用.NET简单实现一个Redis的高性能克隆版(六)
    java入门8:IDEA
    R包:TreeAndLeaf二分类树构建R包
    odoo context上下文用法总结
    用JIRA、CVS、XPlanner、WIKI来进行项目管理
    Learning an Animatable Detailed 3D Face Model from In-The-Wild Images论文笔记
    最近的养猫总结
    《妃梦千年》第十四章-第十五章:重重困局,风云再起
    Java重修笔记 第三十天 异常
  • 原文地址:https://blog.csdn.net/qq_19734597/article/details/134457759