pandas
虚拟变量
哑变量
看过来
《pandas 教程》 持续更新中,可作为 pandas 入门进阶课程、pandas 中文手册、用法大全,配有案例讲解和速查手册。提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。查看更新日志。作者开办 Python 数据分析培训,详情 Python 数据分析培训。
![]() |
本教程作者所著新书《Python之光:Python编程入门与实战》(ISBN:9787111729891)已由机械工业出版社出版上市,各大电商平台有售,欢迎:查看详情并关注购买。 |
![]() |
本教程作者所著新书《深入浅出Pandas:利用Python进行数据处理与分析》(ISBN:9787111685456)已由机械工业出版社出版上市,各大电商平台有售,欢迎:查看详情并关注购买。 |
虚拟变量(Dummy Variables) ,又称虚设变量、名义变量或哑变量,用以反映质的属性的一个人工变量,是量化了的自变量,通常取值为0或1。经常用在 one-hot 特征提取。
语法结构如下:
pd.get_dummies(data, prefix=None,
prefix_sep='_', dummy_na=False,
columns=None, sparse=False,
drop_first=False, dtype=None)
其中:
简单说,pd.get_dummies()
是将一个或者多个列的去重值做为新表的列,每个列的值由0和1组成,在原来此位为此列名的值为1,不是的为0,这样就形成了一个由 0 和1 组成的特征矩阵。
虚拟变量/哑变量在特征工程、数据建模、机器学习等领域有非常重要的作用。
df = pd.DataFrame({'key': list('bbacab'), 'data1': range(6)})
df
'''
key data1
0 b 0
1 b 1
2 a 2
3 c 3
4 a 4
5 b 5
'''
pd.get_dummies(df['key'])
'''
a b c
0 0 1 0
1 0 1 0
2 1 0 0
3 0 0 1
4 1 0 0
5 0 1 0
'''
用 prefix
给新表列名增加前缀:
pd.get_dummies(df['key'], prefix='key')
'''
key_a key_b key_c
0 0 1 0
1 0 1 0
2 1 0 0
3 0 0 1
4 1 0 0
5 0 1 0
'''
可以直接传入 DataFrame 使用:
df = pd.DataFrame({'A': ['a', 'b', 'a'],
'B': ['c', 'c', 'b'],
'C': [1, 2, 3]})
df
'''
A B C
0 a c 1
1 b c 2
2 a b 3
'''
# 最后一列不会被处理
pd.get_dummies(df)
'''
C A_a A_b B_b B_c
0 1 1 0 0 1
1 2 0 1 0 1
2 3 1 0 1 0
'''
指定列:
pd.get_dummies(df, columns=['A'])
'''
B C A_a A_b
0 c 1 1 0
1 c 2 0 1
2 b 3 1 0
'''