一、理论介绍

虚拟变量(dummy variable)也叫哑变量,是一种将多分类变量转换为二分变量的一种形式。

如果多分类变量有k个类别,则可以转化为k-1个二分变量。

需要有一个参照的类别。

在非线性关系的模型中,特别重要。

在模型分析时,虚拟变量都是同进同出,要么都在模型中,要么都不在模型中,不能只保留一个。

二、函数介绍

pandas 中可以利用 get_dummies() 函数进行哑变量编码。

使用语法:

pd.get_dummies(data,  # 输入的数据框
prefix=None, # 列名的前缀
prefix_sep='_', # 分割符
dummy_na=False, # 增加一列空缺值
columns=None, # 指定要实现转换的列名
sparse=False,
drop_first=False, # 删除第一个类别值
dtype=None)

三、实操

1.Series转换

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

2.dummy_na 空缺值

s1 = ['a','b',np.nan]
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.prefix

prefix='' 参数设置编码后的变量名,默认为:原始列名_取值。

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

4.drop_first

drop_first 参数删除第一个类别,避免多重共线性。

pd.get_dummies(pd.Series(list('abcaa')))
pd.get_dummies(pd.Series(list('abcaa')), drop_first=True) # 删掉第一个

5.dtype

# 设置类型
pd.get_dummies(pd.Series(list('abc')), dtype=float) # 浮点数 1.0 0.0

6.其他

# 合并至原始数据
df = df.join(pd.get_dummies(df.A)) pd.get_dummies(df, columns=['A'])

参考链接:什么是哑变量(虚拟变量),应用中应注意什么问题?

参考链接:pandas.get_dummies

参考链接:pandas.get_dummies 的用法

参考链接:Python对离散变量处理:哑变量编码和one-hot编码

Python学习笔记:利用pd.get_dummies实现哑变量编码的更多相关文章

  1. Python学习笔记(三)——类型与变量

    一.输入与输出 print("string"); print("string1","string2","string3" ...

  2. 我的Python学习笔记(三):私有变量

    一.私有变量的定义 在Python中,有以下几种方式来定义变量: xx:公有变量 _xx:单前置下划线,私有化属性或方法,类对象和子类可以访问,from somemodule import *禁止导入 ...

  3. python学习笔记(3)--函数、参数、变量、递归

    1.函数基本语法和特性 背景摘要 现在老板让你写一个监控程序,监控服务器的系统状况,当cpu\memory\disk等指标的使用量超过阀值时即发邮件报警,你掏出了所有的知识量吗,写出了以下代码 whi ...

  4. 【Python学习笔记之二】浅谈Python的yield用法

    在上篇[Python学习笔记之一]Python关键字及其总结中我提到了yield,本篇文章我将会重点说明yield的用法 在介绍yield前有必要先说明下Python中的迭代器(iterator)和生 ...

  5. Python学习笔记九

    Python学习笔记之九 为什么要有操作系统 管理硬件,提供接口. 管理调度进程,并且将多个进程对硬件的竞争变得有序. 操作系统发展史 第一代计算机:真空管和穿孔卡片 没有操作系统,所有的程序设计直接 ...

  6. Deep learning with Python 学习笔记(11)

    总结 机器学习(machine learning)是人工智能的一个特殊子领域,其目标是仅靠观察训练数据来自动开发程序[即模型(model)].将数据转换为程序的这个过程叫作学习(learning) 深 ...

  7. Deep learning with Python 学习笔记(10)

    生成式深度学习 机器学习模型能够对图像.音乐和故事的统计潜在空间(latent space)进行学习,然后从这个空间中采样(sample),创造出与模型在训练数据中所见到的艺术作品具有相似特征的新作品 ...

  8. Deep learning with Python 学习笔记(8)

    Keras 函数式编程 利用 Keras 函数式 API,你可以构建类图(graph-like)模型.在不同的输入之间共享某一层,并且还可以像使用 Python 函数一样使用 Keras 模型.Ker ...

  9. Deep learning with Python 学习笔记(7)

    介绍一维卷积神经网络 卷积神经网络能够进行卷积运算,从局部输入图块中提取特征,并能够将表示模块化,同时可以高效地利用数据.这些性质让卷积神经网络在计算机视觉领域表现优异,同样也让它对序列处理特别有效. ...

随机推荐

  1. 利用extern共享全局变量

    方法: 在xxx.h中利用extern关键字声明全局变量 extern int a; 在xxx.cpp中#include<xxx.h> 再定义 int a; 赋不赋初值无所谓,之后该全局变 ...

  2. mysql index 8.0

    创建表 use vodb; drop table if exists test1; create table test1(id int NOT NULL AUTO_INCREMENT primary ...

  3. oracle to_char处理日期

    select to_char(sysdate,'d') from dual;--本周第几天 select to_char(sysdate,'dd') from dual;--本月第几天 select ...

  4. 实现nfs持久挂载+autofs自动挂载

    实验环境: 两台主机 node4:192.168.37.44 NFS服务器 node2:192.168.37.22 客户端 在nfs服务器,先安装nfs和rpcbind [root@node4 fen ...

  5. 找出1小时内占用cpu最多的10个进程的shell脚本

    cpu时间是一项重要的资源,有时,我们需要跟踪某个时间内占用cpu周期最多的进程.在普通的桌面系统或膝上系统中,cpu处于高负荷状态也许不会引发什么问题.但对于需要处理大量请求的服务器来讲,cpu是极 ...

  6. shell脚本采集系统cpu、内存、磁盘、网络信息

    有不少朋友不知道如何用shell脚本采集linux系统相关信息,包括cpu.内存.磁盘.网络等信息,这里脚本小编做下讲解,大家一起来看看吧. 一.cpu信息采集 1),采集cpu使用率采集算法:通过/ ...

  7. Oracle 表结构管理

    表其实是数据的'容器'.oracle有几种类型的表: 普通表(ordinary table)又叫堆组织表. 聚簇表(clustered table) 分区表(partition table) 外部表( ...

  8. Selenium和PhantomJS

    Selenium Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动操作,不同是Selenium 可以直接运行在浏览器上, ...

  9. 千兆车载以太网TSN网络测试?TSN Box为您焕新

    TSN概述 在汽车领域内,近几年车内网络通讯方式的变革诉求,期望能够有更高的数据传输速率,以及保证实时性的通讯方式引入.例如对于自动驾驶而言,传统的CAN总线已经远远不能满足其对通讯的要求,而基于以太 ...

  10. 大规模服务网格性能优化 | Aeraki xDS 按需加载

    作者 钟华,腾讯云专家工程师,Istio project member.contributor,专注于容器和服务网格,在容器化和服务网格生产落地方面具有丰富经验,目前负责 Tencent Cloud ...