22、python資料處理虛擬變數的轉化
虛擬變數(dummy variables):虛擬變數,也叫啞變數和離散特徵編碼。可用來表示分類變數、費數量因素可能產生的影響
01 離散特徵的取值之間有大小意義
例如:尺寸(L、XL、XXL)
02 離散特徵的取值之間沒有大小的意義
例如:顏色
1 離散特徵的取值之間有大小的意義的處理函式
pamdas.Series.map(dict)
離散特徵的取值之間有大小意義的處理函式。
dict 對映的字典
2 離散特徵的取值之間沒有大小的意義的處理函式
## 函式
pandas.get_dummies(data,prefix=None,prefix_sep='',dummy_na=False,columns=None,drop_first=False)
01 data: 要處理的DataFrame
02 prefix:列名的字首,在多個列有相同的離散項時候使用
03 prefix_sep 字首和離散值得分隔符,預設為下劃線,莫惹即可
04 dummy_na 是否把NA值,作為一個離散值進行處理,預設不處理。
05 columns 要處理的列名,如果不指定該列,那麼預設處理所有的列
06 drop_first 是否從備選項中刪除第一個,建模的時候為避免共線性使用
3 案例:
import pandas
data=pandas.read_csv(
'D:\\DATA\\pycase\\4.18虛擬變數\\data.csv',
engine='python',
sep=',',
encoding='utf8'
)
## 檢視去重之後的學歷分類(有大小區分)
data['Education Level'].drop_duplicates()
"""
博士後 Post-Doc
博士 Doctorate
碩士 Master's Degree
學士 Bachelor's Degree
副學士 Associate's Degree
專業院校 some college
職業學校 Trade School
高中 High School
小學 Grade School
"""
# 對字典進行命名
educationLevelDict={
'Post-Doc':9,
'Doctorate':8,
'Master\'s Degree':7,
'Bachelor\'s Degree':6,
'Associate\'s Degree':5,
'some college':4,
'Trade School':3,
'High School':2,
'Grade School':1
}
# 增加虛擬變數
data['Education Level Map']=data[
'Education Level'
].map(educationLevelDict)
02 性別去重(沒有大小衡量)
data['Gender'].drop_duplicates()
# 無法進行大小比較的指標進行虛擬變數的轉化和新增
dumies=pandas.get_dummies(
data,
columns=['Gender'],
prefix=['Gender'],
prefix_sep="_",
dummy_na=False,
drop_first=False
)
data['Gender2']=dumies['Gender']