虚拟变量,也叫哑变量和离散特征编码,可用来表示分类变量、非数量因素可能产生的影响。
① 离散特征的取值之间有大小的意义 例如:尺寸(L、XL、XXL) 离散特征的取值有大小意义的处理函数map pandas.Series.map(dict) 参数 dict:映射的字典
② 离散特征的取值之间没有大小的意义
pandas.get_dummies
例如:颜色(Red,Blue,Green)
处理函数:
get_dummies(data,prefix=None,prefix_sep="_",dummy_na=False,columns=None,drop_first=False)
① data 要处理的DataFrame ② prefix 列名的前缀,在多个列有相同的离散项时候使用 ③ prefix_sep 前缀和离散值的分隔符,默认为下划线,默认即可 ④ dummy_na 是否把NA值,作为一个离散值进行处理,默认为不处理 ⑤ columns 要处理的列名,如果不指定该列,那么默认处理所有列 ⑥ drop_first 是否从备选项中删除第一个,建模的时候为避免共线性使用
# -*- coding: utf-8 -*-
import pandas
data = pandas.read_csv(
'D:\\PDA\\4.18\\data.csv',
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
)
data['Gender'].drop_duplicates()
dummies = pandas.get_dummies(
data,
columns=['Gender'],
prefix=['Gender'],
prefix_sep="_",
dummy_na=False,
drop_first=False
)
dummies['Gender'] = data['Gender']