数据准备过程中如何创建虚拟变量[通俗易懂]

数据准备过程中如何创建虚拟变量[通俗易懂]在本文中,我们将学习如何使用Pandas的get_dummies()方法创建虚拟变量,这是数据准备中经常要执行的操作。虚拟变量(注: dummy variable,也有人翻译为:哑变量、伪变量)通常用于统计分析以及更简单的描述性统计。 有一种统计分析需要在回归分析中创建虚拟变量…

原文地址:www.marsja.se/how-to-use-…

作者:Erik Marsja

翻译:老齐


在本文中,我们将学习如何使用Pandas的get_dummies()方法创建虚拟变量,这是数据准备中经常要执行的操作。虚拟变量(注: dummy variable,也有人翻译为:哑变量、伪变量)通常用于统计分析以及更简单的描述性统计。

读者关注微信公众号:老齐教室,并回复信息:姓名+手机号+‘案例’,即可加入在线实验平台,获得本文的代码和数据。

用于回归分析的虚拟编码

有一种统计分析需要在回归分析中创建虚拟变量。事实上,回归分析需要数值型变量,这意味着无论是做研究还是分析数据,当我们希望在回归模型中包含一个分类型变量时,都需要一些补充步骤来使结果具有可解释性。

数据准备过程中如何创建虚拟变量[通俗易懂]

上面的表格中,分类型特征被重新编码为一组单独的虚拟变量,这个过程称之为“虚拟编码”,它涉及一个对比矩阵的表。某些软件可以自动实现虚拟编码。

什么是分类特征?

在统计学中,分类型特征接受一个有限的、通常是固定数量的可能值。此外,这些特征通常给每个样本或观察分配一个特定的类别,例如,性别是一个分类变量。

关于特征(变量)的类型,请参阅《数据准备和特征工程》(电子工业出版社出版》(预计2020年3月发行)

本书计划出版时间:2020年3月

在下面的内容中,我们将使用薪资数据集,其中包含2008-09年美国大学助理教授、副教授和教授九个月的学术薪资。

导入数据

首先读入数据,这是毫无疑问的。(数据已经放到本文指定的实验平台,请关注微信公众号,并按照前文提示中的方式获取

import pandas as pd

data_csv = './csv/carData/Salaries.csv'
df = pd.read_csv(data_url, index_col=0)

df.head()

数据准备过程中如何创建虚拟变量[通俗易懂]

当然,数据可以存储在多个不同的文件类型中,可以将数据存储在.xlsx、SPSS、SAS或STATA文件中。

创建虚拟变量

在本节中,我们将使用pandas的get_dummies创建虚拟变量。首先,我们对分类型特征sex创建虚拟变量,它是有两个类型数据的变量。

其次,我们还将生成带有变量rank的虚拟变量。也就是说,在这个虚拟的编码示例中,我们将使用具有三种类型数据的变量。

get_dummies方法的详细调用方式如下图所示:

数据准备过程中如何创建虚拟变量[通俗易懂]

图中所示的参数prefix_sep,可以更改虚拟变量名中与前缀的分隔符。

第一个示例

如下代码所示,得到两个名为FemaleMale的新特征。

pd.get_dummies(df[‘sex’]).head()

数据准备过程中如何创建虚拟变量[通俗易懂]

在上面的代码中,我们打印了前5行。下面使用参数columns,以一个列表为其值,以便根据列表所含的特征创建虚拟变量。

更多示例

df_dummies = pd.get_dummies(df, columns=['sex'])
df_dummies.head()

数据准备过程中如何创建虚拟变量[通俗易懂]

输出显示,get_dummies自动添加以“sex”作为前缀,下划线_作为前缀分隔符的新变量。但是,如果我们想更改前缀和前缀分隔符,可以如此设置参数:

df_dummies = pd.get_dummies(df, prefix='Gender', prefix_sep='.', columns=['sex'])
df_dummies.head()

数据准备过程中如何创建虚拟变量[通俗易懂]

从虚拟变量名称中移除前缀和分隔符

在下面的代码中,我们将设置参数prefix_sephe prefix的值设置为空字符串,便将特征名中的前缀和分隔符去掉。

 df_dummies = pd.get_dummies(df, prefix='', prefix_sep='', 
                            columns=['sex'])
df_dummies.head()

创建三类型特征的虚拟变量

特征rank具有三种不同类型的数据,对它创建虚拟变量。下面的代码与第一个示例中的相同。

pd.get_dummies(df['rank']).head()

数据准备过程中如何创建虚拟变量[通俗易懂]

也就是说,我们列作为唯一参数,然后只得到一个带有3个列的DataFrame。

当然,我们希望将虚拟变量与原数据放在同一DataFrame中,还是用columns参数,以列表的方式声明特征:

df_dummies = pd.get_dummies(df, columns=['rank'])
df_dummies.head()

数据准备过程中如何创建虚拟变量[通俗易懂]

在上图中,我们可以看到Pandas get_dummies() 添加了“rank”作为前缀,下划线作为前缀分隔符。接下来,我们将把前缀和分隔符改为“Rank”(大写)和“.”(点)。

df_dummies = pd.get_dummies(df, prefix='Rank', prefix_sep='.', 
                            columns=['rank'])
df_dummies.head()

数据准备过程中如何创建虚拟变量[通俗易懂]

如果不需要有前缀或分隔符,只需在prefixprefix_sep参数中添加空字符串:

df_dummies = pd.get_dummies(df, prefix='', prefix_sep='', 
                            columns=['rank'])code>

为多列创建虚拟变量

在最后一个示例中,我们将要对两列进行虚拟编码。具体来说,就是添加一个包含两个分类型特征的列表,实际上,这非常简单,我们可以按照上面的示例代码进行操作:

df_dummies = pd.get_dummies(df, prefix='', prefix_sep='', 
                            columns=['rank', 'sex'])
df_dummies.head()

数据准备过程中如何创建虚拟变量[通俗易懂]

如果想添加更多的列,可以将其添加column参数的列表中,更多示例,参见在线平台的案例(注: 关注微信公众号:老齐教室,并按照下面的格式回复信息:姓名+手机号+‘案例’,即可加入在线实验平台,获得本文的代码和数据《案例:创建虚拟变量》)。

结论

在本文中,我们学习了如何使用Pandas的get_dummies() 方法创建虚拟变量。此外,scikit-learn中也提供了类似的方法,即OneHot编码,具体请参阅《数据准备和特征工程》相关章节的阐述。

关注微信公众号:老齐教室。读深度文章,得精湛技艺,享绚丽人生。

WechatIMG6

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/13757.html

(0)

相关推荐

  • Python os.isdir函数:判断一个路径是否为目录

    Python os.isdir函数:判断一个路径是否为目录在编程中,判断一个路径是否是目录是一个非常常见的需求。Python的os模块中的isdir函数就是用来判断指定路径是否是目录的。

    2023-12-27
    119
  • Python:一门优秀的编程语言

    Python:一门优秀的编程语言Python 是一门高级、解释型、强类型、动态类型的编程语言,由 Guido van Rossum 创造。Python 于 1991 年首次发布,是一门受到 ABC 语言启示而创建的语言。Python 最初设计用于编写自动化脚本(shell),后来逐渐发展成为通用编程语言,广泛应用于 Web 开发、数据分析、人工智能等领域。

    2024-07-18
    46
  • Python中unique函数的使用

    Python中unique函数的使用在Python编程中,我们常常需要对数据进行去重操作。而unique函数就是一种非常实用的去重函数,可以用来对数组、列表等数据类型进行去重操作。本文将从多个方面对Python中的unique函数进行详细阐述,介绍其用法、功能以及实现原理,帮助读者更好地理解和应用unique函数。

    2024-05-30
    68
  • switch case_switchcase函数

    switch case_switchcase函数语言的底层就是算法,所以switch-case的底层也是算法: 数组和二分查找。 switch-case是一个条件语句,也就是说:

    2023-07-24
    141
  • 『中级篇』 Linux网络命名空间(25)[亲测有效]

    『中级篇』 Linux网络命名空间(25)[亲测有效]发现空间之前是独立的,容器内的网络命名空间和容器外不同,容器和容器之前的网络命名空间也是相对独立的。 创建linux的networknamespace。 PS:通过linux做的个实验跟通过docker创建的容器的是类似的,只是用linux的方式模拟了docker容器的方式。其…

    2023-08-09
    134
  • oracle ocp题库_oracle数据库19c

    oracle ocp题库_oracle数据库19cCUUG已经开始了Oracle OCP 19c的题库解析 继11g和12c之后,OCP 19c考试题库解析已于2020年7月17日在腾讯课堂免费直播,此为国内首家19c的题库解析。 、**、 CUU…

    2023-03-24
    145
  • 使用MongoDB创建表格

    使用MongoDB创建表格随着数据量不断增长,如何存储和管理数据成为一个重要的问题。MongoDB是一种非关系型的数据库,被广泛应用于Web开发、数据分析等领域。本文将介绍如何使用MongoDB创建表格,以便更好地存储和管理数据。

    2024-06-27
    56
  • Linux下安装Redis4.0版本(简便方法)

    Linux下安装Redis4.0版本(简便方法)Redis介绍: Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。 Redis 与其他 key – value 缓存产品有以下三个特点: Redis支持数据的持久

    2023-02-19
    135

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注