Python学习笔记:利用pd.get_dummies实现哑变量编码
一、理论介绍
虚拟变量(dummy variable
)也叫哑变量,是一种将多分类变量转换为二分变量的一种形式。
如果多分类变量有k个类别,则可以转化为k-1个二分变量。
需要有一个参照的类别。
在非线性关系的模型中,特别重要。
在模型分析时,虚拟变量都是同进同出,要么都在模型中,要么都不在模型中,不能只保留一个。
二、函数介绍
pandas
中可以利用 get_dummies()
函数进行哑变量编码。
使用语法:
pd.get_dummies(data, # 输入的数据框
prefix=None, # 列名的前缀
prefix_sep='_', # 分割符
dummy_na=False, # 增加一列空缺值
columns=None, # 指定要实现转换的列名
sparse=False,
drop_first=False, # 删除第一个类别值
dtype=None)
三、实操
1.Series转换
import pandas as pd
import numpy as np
s = pd.Series(list('abca'))
pd.get_dummies(s)
'''
a b c
0 1 0 0
1 0 1 0
2 0 0 1
3 1 0 0
'''
2.dummy_na 空缺值
s1 = ['a','b',np.nan]
pd.get_dummies(s1)
'''
a b
0 1 0
1 0 1
2 0 0
'''
pd.get_dummies(s1, dummy_na=True)
'''
a b NaN
0 1 0 0
1 0 1 0
2 0 0 1
'''
3.prefix
prefix=''
参数设置编码后的变量名,默认为:原始列名_取值。
df = pd.DataFrame({'A': ['a', 'b', 'a'], 'B': ['b', 'a', 'c'],
'C': [1, 2, 3]})
pd.get_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
'''
pd.get_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
'''
4.drop_first
drop_first
参数删除第一个类别,避免多重共线性。
pd.get_dummies(pd.Series(list('abcaa')))
pd.get_dummies(pd.Series(list('abcaa')), drop_first=True) # 删掉第一个
5.dtype
# 设置类型
pd.get_dummies(pd.Series(list('abc')), dtype=float) # 浮点数 1.0 0.0
6.其他
# 合并至原始数据
df = df.join(pd.get_dummies(df.A))
pd.get_dummies(df, columns=['A'])
参考链接:pandas.get_dummies
分类:
Python
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· DeepSeek “源神”启动!「GitHub 热点速览」
· 上周热点回顾(2.17-2.23)