当我们的数据中出现的离散的类别信息时,我们通常将其转化为onehot编码形式,以便于对于我们的模型能有更好的效果。
此处主要介绍的是pandas库中的一个函数——get_dummies(),它能直接将我们需要转换的列直接进行转换,下面来具体介绍:
1.参数说明
pandas.get_dummies(data, prefix=None, prefix_sep='_', dummy_na=False, columns=None, sparse=False, drop_first=False)
data:array-like, Series, or DataFrame
用来获得虚拟指标的数据。
prefix:str, list of str, or dict of str, default None
添加DataFrame列名的字符串。在DataFrame上调用get_dummies函数时,传递一个长度等于列数的列表。或者,前缀可以是一个将列名映射到前缀的字典。
prefix_sep:str, default ‘_’
如果附加前缀,分隔符/分隔符使用。或者像前缀一样传递列表或字典。
dummy_na:bool, default False
如果忽略False NaNs,则添加一列来指示 NaNs。
columns:list-like, default None
要编码的DataFrame中的列名。如果columns为None,那么所有具有对象或类别dtype的列将被转换。
sparse:bool, default False
伪编码列是否应该由(True)或常规NumPy数组支持(False)
drop_first:bool, default False
是否通过删除第一个级别将k-1个假人从k个分类级别中移除。
dtype:dtype, default np.uint8
新列的数据类型。只允许一个dtype。
Returns DataFrame
Dummy-coded data.
以上对参数的解释均来自padnas官方文档
2.实例代码说明
数据集如下:
可以看到里面的season、holiday、workingday、weather都为离散的数据,故在此处进行OneHot编码:
# 选取我们所需要的列名
column = ['season','holiday','workingday','weather']
# 一个一个的进行处理,并连接到数据集的后面
for i in column:
x =pd.get_dummies(data[i],prefix= i)
data=pd.concat([data,x],axis=1)
# 显示转换后的数据
data.head()
运行结果:
(此处我并未将转换前的数据进行删除)