我试图在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以获取更多信息。
根据官方留档:
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博客中也有一篇不错的文章。
很难从这个问题中推断出你在寻找什么,但我最好的猜测如下。
如果我们假设您有一个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()
可能不会产生任何有用的结果。
当我想到虚拟变量时,我会想到在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 基本解释