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
'''