当前位置:首页 > 编程笔记 > 正文
已解决

pandas 笔记:get_dummies分类变量one-hot化

来自网友在路上 139839提问 提问时间:2023-11-09 07:38:52阅读次数: 39

最佳答案 问答题库398位专家为你答疑解惑

1 函数介绍

  • pandas.get_dummies 是 pandas 库中的一个函数,它用于将分类变量转换为哑变量/指示变量。
  • 所谓的哑变量,就是将分类变量的每一个不同的值转换为一个新的0/1变量。
  • 在输出的DataFrame中,每一列都以该值的名称命名
pandas.get_dummies(data, prefix=None,     prefix_sep='_', dummy_na=False, columns=None, sparse=False, drop_first=False, dtype=None)

2 参数介绍

data你想要转换为哑变量的数据prefix

用于在DataFrame列名前添加的字符串。

当对DataFrame调用 get_dummies 时,传递一个长度等于列数的列表

dummy_na布尔值,默认为 False。是否添加一列来指示 NaN 值,如果为 False 则忽略 NaN 值columns

类列表,默认为 None。

在 DataFrame 中要编码的列名。

如果 columns 为 None,则所有具有 object、string 或 category 数据类型的列都将被转换

sparse

布尔值,默认为 False。

哑变量编码的列是否应该由 SparseArray(True)支持,还是由常规的 NumPy 数组(False)支持

drop_first布尔值,默认为 False。是否通过移除第一个级别,从 k 个分类级别中获取 k-1 个哑变量

3 举例

3.1 最基本的get_dummies

import pandas as pd
import numpy as nps=pd.Series(list('abca'))s
'''
0    a
1    b
2    c
3    a
dtype: object
'''pd.get_dummies(s)
'''a	b	c
0	1	0	0
1	0	1	0
2	0	0	1
3	1	0	0
'''

3.2 drop_first

此时第一个类就是 全0 向量对应的情况

pd.get_dummies(s,drop_first=True)
'''b	c
0	0	0
1	1	0
2	0	1
3	0	0
'''

3.3 dummy_na

是否为NaN单列一列

s1 = pd.Series(['a', 'b', np.nan])
s1
'''
0      a
1      b
2    NaN
dtype: object
'''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.4 DataFrame 多列dummies

df = pd.DataFrame({'A': ['a', 'b', 'a'], 'B': ['b', 'a', 'c'],'C': [1, 2, 3]})
df
'''A	B	C
0	a	b	1
1	b	a	2
2	a	c	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
'''

3.5 prefix

df = pd.DataFrame({'A': ['a', 'b', 'a'], 'B': ['b', 'a', 'c'],'C': [1, 2, 3]})
df
'''A	B	C
0	a	b	1
1	b	a	2
2	a	c	3
'''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
'''

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"pandas 笔记:get_dummies分类变量one-hot化":http://eshow365.cn/6-35989-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!