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

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 np

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

你可能感兴趣的:(python库整理,pandas,笔记)