Python学习笔记:利用pd.get_dummies实现哑变量编码
时间:2022-01-05 作者:hider
一、理论介绍
虚拟变量(dummy variable
)也叫哑变量,是一种将多分类变量转换为二分变量的一种形式。
如果多分类变量有k个类别,则可以转化为k-1个二分变量。
需要有一个参照的类别。
在非线性关系的模型中,特别重要。
在模型分析时,虚拟变量都是同进同出,要么都在模型中,要么都不在模型中,不能只保留一个。
二、函数介绍
pandas
中可以利用 get_dummies()
函数进行哑变量编码。
使用语法:
域名dummies(data, # 输入的数据框
prefix=None, # 列名的前缀
prefix_sep=\'_\', # 分割符
dummy_na=False, # 增加一列空缺值
columns=None, # 指定要实现转换的列名
sparse=False,
drop_first=False, # 删除第一个类别值
dtype=None)
三、实操
域名es转换
import pandas as pd
import numpy as np
s = 域名es(list(\'abca\'))
域名dummies(s)
\'\'\'
a b c
0 1 0 0
1 0 1 0
2 0 0 1
3 1 0 0
\'\'\'
域名y_na 空缺值
s1 = [\'a\',\'b\',域名]
域名dummies(s1)
\'\'\'
a b
0 1 0
1 0 1
2 0 0
\'\'\'
域名dummies(s1, dummy_na=True)
\'\'\'
a b NaN
0 1 0 0
1 0 1 0
2 0 0 1
\'\'\'
域名ix
prefix=\'\'
参数设置编码后的变量名,默认为:原始列名_取值。
df = 域名Frame({\'A\': [\'a\', \'b\', \'a\'], \'B\': [\'b\', \'a\', \'c\'],
\'C\': [1, 2, 3]})
域名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
\'\'\'
域名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
\'\'\'
域名_first
drop_first
参数删除第一个类别,避免多重共线性。
域名dummies(域名es(list(\'abcaa\')))
域名dummies(域名es(list(\'abcaa\')), drop_first=True) # 删掉第一个
域名e
# 设置类型
域名dummies(域名es(list(\'abc\')), dtype=float) # 浮点数 1.0 0.0
6.其他
# 合并至原始数据
df = 域名(域名dummies(df.A))
域名dummies(df, columns=[\'A\'])
参考链接:什么是哑变量(虚拟变量),应用中应注意什么问题?
参考链接:域名dummies
参考链接:域名dummies 的用法
参考链接:Python对离散变量处理:哑变量编码和one-hot编码