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編碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM