虚拟变量(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']