zoukankan      html  css  js  c++  java
  • Python学习笔记:利用pd.get_dummies实现哑变量编码

    一、理论介绍

    虚拟变量(dummy variable)也叫哑变量,是一种将多分类变量转换为二分变量的一种形式。

    如果多分类变量有k个类别,则可以转化为k-1个二分变量。

    需要有一个参照的类别。

    在非线性关系的模型中,特别重要。

    在模型分析时,虚拟变量都是同进同出,要么都在模型中,要么都不在模型中,不能只保留一个。

    二、函数介绍

    pandas 中可以利用 get_dummies() 函数进行哑变量编码。

    使用语法:

    pd.get_dummies(data,  # 输入的数据框
                  prefix=None, # 列名的前缀
                  prefix_sep='_', # 分割符 
                  dummy_na=False, # 增加一列空缺值
                  columns=None, # 指定要实现转换的列名
                  sparse=False,
                  drop_first=False, # 删除第一个类别值
                  dtype=None)
    

    三、实操

    1.Series转换

    import pandas as pd
    import numpy as np
    s = pd.Series(list('abca'))
    pd.get_dummies(s)
    '''
       a  b  c
    0  1  0  0
    1  0  1  0
    2  0  0  1
    3  1  0  0
    '''
    

    2.dummy_na 空缺值

    s1 = ['a','b',np.nan]
    pd.get_dummies(s1)
    '''
       a  b
    0  1  0
    1  0  1
    2  0  0
    '''
    pd.get_dummies(s1, dummy_na=True)
    '''
       a  b  NaN
    0  1  0    0
    1  0  1    0
    2  0  0    1
    '''
    

    3.prefix

    prefix='' 参数设置编码后的变量名,默认为:原始列名_取值。

    df = pd.DataFrame({'A': ['a', 'b', 'a'], 'B': ['b', 'a', 'c'],
                       'C': [1, 2, 3]})
    pd.get_dummies(df)
    '''
       C  A_a  A_b  B_a  B_b  B_c
    0  1    1    0    0    1    0
    1  2    0    1    1    0    0
    2  3    1    0    0    0    1
    '''
    pd.get_dummies(df, prefix=['col1', 'col2'])
    '''
       C  col1_a  col1_b  col2_a  col2_b  col2_c
    0  1       1       0       0       1       0
    1  2       0       1       1       0       0
    2  3       1       0       0       0       1
    '''
    

    4.drop_first

    drop_first 参数删除第一个类别,避免多重共线性。

    pd.get_dummies(pd.Series(list('abcaa')))
    pd.get_dummies(pd.Series(list('abcaa')), drop_first=True) # 删掉第一个
    

    5.dtype

    # 设置类型
    pd.get_dummies(pd.Series(list('abc')), dtype=float) # 浮点数 1.0 0.0
    

    6.其他

    # 合并至原始数据
    df = df.join(pd.get_dummies(df.A))
    
    pd.get_dummies(df, columns=['A'])
    

    参考链接:什么是哑变量(虚拟变量),应用中应注意什么问题?

    参考链接:pandas.get_dummies

    参考链接:pandas.get_dummies 的用法

    参考链接:Python对离散变量处理:哑变量编码和one-hot编码

  • 相关阅读:
    61组第二次团队作业
    饮水机电路图工作原理及电路图分析
    七种基础模拟电路的用法
    C语言判断一个数是奇数还是偶数
    F28335 UART串口配置及数据发送
    F28335 SPI配置及收发数据
    电容的九大功能
    查询接口---flask+python+mysql
    python参数传递
    java基础
  • 原文地址:https://www.cnblogs.com/hider/p/15762433.html
Copyright © 2011-2022 走看看