当前位置: 首页 > 知识库问答 >
问题:

在pandas for python中创建虚拟变量

司徒茂实
2023-03-14

我试图在python中使用pandas从一个分类变量创建一系列伪变量。我遇到了get\u dummies函数,但每当我尝试调用它时,都会收到一个错误,即名称未定义。

任何创建虚拟变量的想法或其他方法都将受到欢迎。

编辑:由于其他人似乎遇到了这种情况,熊猫中的get_dummies功能现在运行得非常好。这意味着以下各项应起作用:

import pandas as pd

dummies = pd.get_dummies(df['Category'])

看见http://blog.yhathq.com/posts/logistic-regression-and-python.html以获取更多信息。

共有3个答案

谢海阳
2023-03-14

根据官方留档:

dummies = pd.get_dummies(df['Category']).rename(columns=lambda x: 'Category_' + str(x))
df = pd.concat([df, dummies], axis=1)
df = df.drop(['Category'], inplace=True, axis=1)

在FastML博客中也有一篇不错的文章。

闾丘博超
2023-03-14

很难从这个问题中推断出你在寻找什么,但我最好的猜测如下。

如果我们假设您有一个DataFrame,其中一些列是“类别”,并包含类别的整数(或其他唯一标识符),那么我们可以执行以下操作。

调用数据帧dfrm,并假设对于每一行,dfrm['Category']是从1到N的整数集中的某个值。然后,

for elem in dfrm['Category'].unique():
    dfrm[str(elem)] = dfrm['Category'] == elem

现在,根据该行中的数据是否属于该类别,每个类别都将有一个新的指示器列,该列为真/假。

如果要控制类别名称,可以制作字典,例如

cat_names = {1:'Some_Treatment', 2:'Full_Treatment', 3:'Control'}
for elem in dfrm['Category'].unique():
    dfrm[cat_names[elem]] = dfrm['Category'] == elem

使列具有指定的名称,而不仅仅是类别值的字符串转换。事实上,对于某些类型,str()可能不会产生任何有用的结果。

丰辰沛
2023-03-14

当我想到虚拟变量时,我会想到在OLS回归的背景下使用它们,我会这样做:

import numpy as np
import pandas as pd
import statsmodels.api as sm

my_data = np.array([[5, 'a', 1],
                    [3, 'b', 3],
                    [1, 'b', 2],
                    [3, 'a', 1],
                    [4, 'b', 2],
                    [7, 'c', 1],
                    [7, 'c', 1]])                


df = pd.DataFrame(data=my_data, columns=['y', 'dummy', 'x'])
just_dummies = pd.get_dummies(df['dummy'])

step_1 = pd.concat([df, just_dummies], axis=1)      
step_1.drop(['dummy', 'c'], inplace=True, axis=1)
# to run the regression we want to get rid of the strings 'a', 'b', 'c' (obviously)
# and we want to get rid of one dummy variable to avoid the dummy variable trap
# arbitrarily chose "c", coefficients on "a" an "b" would show effect of "a" and "b"
# relative to "c"
step_1 = step_1.applymap(np.int) 

result = sm.OLS(step_1['y'], sm.add_constant(step_1[['x', 'a', 'b']])).fit()
print result.summary()
 类似资料:
  • 问题内容: 我正在尝试使用python中的pandas从类别变量中创建一系列虚拟变量。我遇到过该函数,但是每当我尝试调用该函数时,都会收到一个错误,提示您未定义名称。 创建虚拟变量的任何想法或其他方式将不胜感激。 编辑 :由于其他人似乎遇到了这种情况,因此熊猫中的函数现在可以正常工作了。这意味着以下应该起作用: 有关更多信息,请参见http://blog.yhathq.com/posts/logi

  • 创建一台 Linux 系统的虚拟机,Linux 系统的类型选择的是 CentOS 7.x 。 创建项目 每个项目都在各自的文件夹里,你可以为每个项目单独去创建虚拟机。打开命令行工具,先为项目创建一个文件夹: cd ~/desktop mkdir awesome-project cd awesome-project 上面执行的命令就是在命令行下面,先进入到当前登录用户的桌面(desktop)上,在

  • 我正在使用Win7和我所有的asp。net应用程序正在端口80上运行 我有WAMP安装在c:\wamp和我的php项目文件夹下c:\wamp\www\作为投影1,投影2等, 现在,我尝试使用以下步骤创建虚拟主机 1)编辑主机文件并添加如下 2)打开文件"httpd.conf"在"C:/wamp/bin/apache/Apache2.2.22/conf/"和取消注释行"包括conf/额外的/http

  • 本文向大家介绍创建Lua虚拟机,包括了创建Lua虚拟机的使用技巧和注意事项,需要的朋友参考一下 示例 5.1 5.1            

  • 问题内容: 我想用Python创建一个虚拟磁盘。我希望能够以跨平台的方式执行此操作,因此它可以在Windows XP至7,Mac和Linux上运行。我希望能够像普通驱动器一样对ramdisk进行读/写操作,最好使用驱动器号/路径。 我想要这样做的原因是为创建具有特定结构的目录的脚本编写测试。我想在ramdisk中完全创建目录,以便确保测试结束后将其完全删除。我考虑使用Python的,但是如果测试将

  • 我在PyCharm中创建虚拟环境时遇到问题。确切地说,3.10版中的Python是在安装过程中添加到Path的,我使用的是最新版本的PyCharm社区。 有人有类似的问题吗? 添加信息 我如何创建环境: > 文件- 位置:D:\mm\projekty\pythonProject2 标记新的虚拟环境使用(虚拟环境) 位置:D:\mm\projekty\pythonProject2\venv 基本解释