• pandas 笔记:get_dummies分类变量one-hot化


    1 函数介绍

    • pandas.get_dummies 是 pandas 库中的一个函数,它用于将分类变量转换为哑变量/指示变量。
    • 所谓的哑变量,就是将分类变量的每一个不同的值转换为一个新的0/1变量。
    • 在输出的DataFrame中,每一列都以该值的名称命名
    1. pandas.get_dummies(
    2. data,
    3. prefix=None,
    4. prefix_sep='_',
    5. dummy_na=False,
    6. columns=None,
    7. sparse=False,
    8. drop_first=False,
    9. dtype=None)

    2 参数介绍

    data你想要转换为哑变量的数据
    prefix

    用于在DataFrame列名前添加的字符串

    当对DataFrame调用 get_dummies 时,传递一个长度等于列数的列表

    dummy_na布尔值,默认为 False。是否添加一列来指示 NaN 值,如果为 False 则忽略 NaN 值
    columns

    类列表,默认为 None。

    在 DataFrame 中要编码的列名。

    如果 columns 为 None,则所有具有 object、string 或 category 数据类型的列都将被转换

    sparse

    布尔值,默认为 False。

    哑变量编码的列是否应该由 SparseArray(True)支持,还是由常规的 NumPy 数组(False)支持

    drop_first布尔值,默认为 False。是否通过移除第一个级别,从 k 个分类级别中获取 k-1 个哑变量

    3 举例

    3.1 最基本的get_dummies

    1. import pandas as pd
    2. import numpy as np
    3. s=pd.Series(list('abca'))
    4. s
    5. '''
    6. 0 a
    7. 1 b
    8. 2 c
    9. 3 a
    10. dtype: object
    11. '''
    12. pd.get_dummies(s)
    13. '''
    14. a b c
    15. 0 1 0 0
    16. 1 0 1 0
    17. 2 0 0 1
    18. 3 1 0 0
    19. '''

    3.2 drop_first

    此时第一个类就是 全0 向量对应的情况

    1. pd.get_dummies(s,drop_first=True)
    2. '''
    3. b c
    4. 0 0 0
    5. 1 1 0
    6. 2 0 1
    7. 3 0 0
    8. '''

    3.3 dummy_na

    是否为NaN单列一列

    1. s1 = pd.Series(['a', 'b', np.nan])
    2. s1
    3. '''
    4. 0 a
    5. 1 b
    6. 2 NaN
    7. dtype: object
    8. '''
    9. pd.get_dummies(s1)
    10. '''
    11. a b
    12. 0 1 0
    13. 1 0 1
    14. 2 0 0
    15. '''
    16. pd.get_dummies(s1,dummy_na=True)
    17. '''
    18. a b NaN
    19. 0 1 0 0
    20. 1 0 1 0
    21. 2 0 0 1
    22. '''

    3.4 DataFrame 多列dummies

    1. df = pd.DataFrame({'A': ['a', 'b', 'a'],
    2. 'B': ['b', 'a', 'c'],
    3. 'C': [1, 2, 3]})
    4. df
    5. '''
    6. A B C
    7. 0 a b 1
    8. 1 b a 2
    9. 2 a c 3
    10. '''
    11. pd.get_dummies(df)
    12. '''
    13. C A_a A_b B_a B_b B_c
    14. 0 1 1 0 0 1 0
    15. 1 2 0 1 1 0 0
    16. 2 3 1 0 0 0 1
    17. '''

    3.5 prefix

    1. df = pd.DataFrame({'A': ['a', 'b', 'a'],
    2. 'B': ['b', 'a', 'c'],
    3. 'C': [1, 2, 3]})
    4. df
    5. '''
    6. A B C
    7. 0 a b 1
    8. 1 b a 2
    9. 2 a c 3
    10. '''
    11. pd.get_dummies(df,prefix=['col1','col2'])
    12. '''
    13. C col1_a col1_b col2_a col2_b col2_c
    14. 0 1 1 0 0 1 0
    15. 1 2 0 1 1 0 0
    16. 2 3 1 0 0 0 1
    17. '''

  • 相关阅读:
    左益豪:用代码创造一个新世界|OneFlow U
    【web渗透】SSRF漏洞超详细讲解
    7-137 整数四则运算
    Node_exporter主机探针部署
    ​LeetCode解法汇总2490. 回环句
    Stm32_标准库_9_TIM
    到底有几个鸿蒙OS? 谈谈我眼里的鸿蒙操作系统
    WEB前端网页设计 HTML CSS 网页设计参数 - 【浮动与定位】
    嵌入式Linux驱动开发---GPIO子系统和Pinctrl子系统
    当你离开现在的公司,你的百万业务量还能保持吗?
  • 原文地址:https://blog.csdn.net/qq_40206371/article/details/134255960