zoukankan      html  css  js  c++  java
  • 4-Pandas数据预处理之数据转换(哑变量编码pd.get_dummies())

    说明:本片博文接上篇博文【 Pandas数据预处理之数据转换(df.map()、df.replace())

    二、哑变量编码

     1、什么叫做哑变量?

      将类别型特征转化“哑变量矩阵”或是“指标矩阵”,让类别特征转换成数值特征的过程。相当与标签化和OneHOt编码,具体可参考另一篇博文数据预处理理论5.2.2特征变换

    2、哑变量将派生出那些特征?

      哑变量将会从一个含有k个不同值的特征派生出k-1个二元特征。因为在建模过程中,有k类的分类变量只需要k-1个变量将其描述,若使用k个变量将出现完全共线性的问题。

    3、如何实现哑变量编码?

      使用get_dummies()函数,指定prefix参数的值来设置前缀;

    例:(1)使用get_dummies()对salary进行转换。

    由于原始数据中有一条salary的值为‘nme’的数据,先将该条数据进行删除,在对salsry进行哑变量编码:

    >>> data  = pd.read_csv('C:/Users/xhl/Desktop/HR.csv',encoding = 'gbk')
    >>> data = data[['number_project','left','salary']]
    >>> data.head(5)
       number_project  left  salary
    0               2     1     low
    1               5     1  medium
    2               7     1  medium
    3               5     1     low
    4               2     1     low
    
    #删掉salary为‘nme’那条记录
    >>> data = data[~data['salary'].isin(['nme'])]
    >>> data.tail()
           number_project  left salary
    14996               2     1    low
    14997               6     1    low
    14998               2     1    low
    14999               2     1    low
    15000               2     1    low
    >>> pd.get_dummies(data['salary'])[:5]
           high  low  medium
    0         0    1       0
    1         0    0       1
    2         0    0       1
    3         0    1       0
    4         0    1       0
    
    #通过prefix设置前缀
    >>> dummies=pd.get_dummies(data['salary'],prefix = 'sala
    >>> dummies[:5]
       salary_high  salary_low  salary_medium
    0            0           1              0
    1            0           0              1
    2            0           0              1
    3            0           1              0
    4            0           1              0

     (2)使用df.join()pd.concat()将新的哑变量编码数据与原本未编码的数据进行合并 

    #展示全部的列
    >>> pd.set_option('display.max_columns',None)
    
    #合并数据---df.join()
    >>> newdata = data[['number_project','left']].join(dummies)
    >>> newdata.head()
       number_project  left  salary_high  salary_low  salary_medium
    0               2     1            0           1              0
    1               5     1            0           0              1
    2               7     1            0           0              1
    3               5     1            0           1              0
    4               2     1            0           1              0
    #合并数据---pd.concat()
    >>> newdata1 = pd.concat([data[['number_project','left']],dummies],axis=1)
    >>> newdata1[:5]
       number_project  left  salary_high  salary_low  salary_medium
    0               2     1            0           1              0
    1               5     1            0           0              1
    2               7     1            0           0              1
    3               5     1            0           1              0
    4               2     1            0           1              0
    

     (3)若需要对DataFrame中所有的元素均进行哑变量变化,则

        >>>pd.get_dummies(data)

     (4)若仅需要对某几个特征进行编码,可以用columns进行指定要编码的特征

        >>> pd.get_dummies(data,columns=['salary'])

     (5)通过drop_first = True将第一个编码特征丢掉

    >>> pd.get_dummies(data,columns=['salary'],drop_first = True)[:5]
       number_project  left  salary_low  salary_medium
    0               2     1           1              0
    1               5     1           0              1
    2               7     1           0              1
    3               5     1           1              0
    4               2     1           1              0
    

      

      

  • 相关阅读:
    Codeforces Round 546 (Div. 2)
    Codeforces Round 545 (Div. 2)
    Codeforces Round 544(Div. 3)
    牛客小白月赛12
    Codeforces Round 261(Div. 2)
    Codeforces Round 260(Div. 2)
    Codeforces Round 259(Div. 2)
    Codeforces Round 258(Div. 2)
    Codeforces Round 257 (Div. 2)
    《A First Course in Probability》-chaper5-连续型随机变量-随机变量函数的分布
  • 原文地址:https://www.cnblogs.com/Cheryol/p/13416008.html
Copyright © 2011-2022 走看看