Pandas.get_dummies 用法简单介绍
pandas.get_dummies(data, prefix=None, prefix_sep=’_’, dummy_na=False, columns=None, sparse=False, drop_first=False, dtype=None)
pandas 中的 get_dummies 方法主要用于对类别型特征做 One-Hot 编码(独热编码)。
1 主要参数介绍:
1.1 data
data : array-like, Series, or DataFrame
传入的 data 为需要进行 One-Hot 编码的数据,包括 array-like, Series, or DataFrame 等类型数据。
对于类别型(category)特征,使用get_dummies(),结果如下:
>>> import pandas as pd
>>> df = pd.DataFrame({'gender':['m','f','m','f','m','f','n']})
>>> df_onehot = pd.get_dummies(df)
>>> df_onehot
Out :
若DataFrame中有数值型特征(columns),数值型column则保留原始值,如下例的 id 列。
>>> import pandas as pd
>>> data_df = pd.DataFrame({'id':[1,2,3,4,5,6,7],'gender':['m','f','m','f','m','f','n']})
>>> df_onehot = pd.get_dummies(data_df)
>>> df_onehot
Out :
上面两个简单的例子不难发现,经过 get_dummies() 编码后新生成的列,列名为 “原列名_类别”,例如 " gender_f "。当然,新列的命名方式也是可以自定义的。如下,设置 prefix 即可。
1.2 prefix
prefix: string, list of strings, or dict of strings, default None
用于附加DataFrame列名的字符串。在DataFrame上调用get_dummies时,传递长度等于列数的列表。或者,前缀可以是将列名映射到前缀的字典。
>>> import pandas as pd
>>> data_df = pd.DataFrame({'id':[1,2,3,4,5,6,7],'gender':['m','f','m','f','m','f','n']})
>>> df_onehot = pd.get_dummies(data_df, prefix ='gen')
>>> df_onehot
Out :
当然,不只是前缀可以做更改,分隔符也可以自己设置,如下,设置 prefix_sep 即可。
1.3 prefix_sep
prefix_sep: string, default ‘_’
如果附加前缀,则使用分隔符/分隔符。或作为前缀传递列表或字典。
>>> import pandas as pd
>>> data_df = pd.DataFrame({'id':[1,2,3,4,5,6,7],'gender':['m','f','m','f','m','f','n']})
>>> df_onehot = pd.get_dummies(data_df, prefix ='gen', prefix_sep = '/')
>>> df_onehot
Out:
2 其他参数(Parameters):
dummy_na: bool, default False
如果忽略False NaNs,则添加一列来指示NaNs。
columns: list-like, default None
要编码的DataFrame中的列名称。 如果列为None,则将转换具有object或category dtype的所有列。
sparse: bool, default False
是否应该使用SparseArray (True)或常规NumPy数组(False)来支持用dummy编码的列。
drop_first: bool, default False
Whether to get k-1 dummies out of k categorical levels by removing the first level.
New in version 0.18.0.
dtype: dtype, default np.uint8
Data type for new columns. Only a single dtype is allowed.
New in version 0.23.0.