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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值