Set*_*jmp 10 python regression factors dataframe
如果内存服务于我,在R中有一个名为factor的数据类型,当在DataFrame中使用时,它可以自动解压缩到回归设计矩阵的必要列中.例如,包含True/False/Maybe值的因子将转换为:
1 0 0
0 1 0
or
0 0 1
Run Code Online (Sandbox Code Playgroud)
为了使用较低级别的回归代码.有没有办法用pandas库实现类似的东西?我看到Pandas中有一些回归支持,但由于我有自己的定制回归例程,我真的很感兴趣的是从异构数据构建设计矩阵(一个2d numpy数组或矩阵),支持映射和堡垒之间numpy对象的列和派生它的Pandas DataFrame.
更新:这是一个数据矩阵的示例,其中包含我正在考虑的异类数据(该示例来自Pandas手册):
>>> df2 = DataFrame({'a' : ['one', 'one', 'two', 'three', 'two', 'one', 'six'],'b' : ['x', 'y', 'y', 'x', 'y', 'x', 'x'],'c' : np.random.randn(7)})
>>> df2
a b c
0 one x 0.000343
1 one y -0.055651
2 two y 0.249194
3 three x -1.486462
4 two y -0.406930
5 one x -0.223973
6 six x -0.189001
>>>
Run Code Online (Sandbox Code Playgroud)
'a'列应转换为4个浮点列(尽管有意义,只有四个唯一原子),'b'列可以转换为单个浮点列,'c'列应该是设计矩阵中未经修改的最后一列.
谢谢,
那么setjmp
有一个名为patsy的新模块可以解决这个问题.下面链接的快速入门在几行代码中完全解决了上述问题.
以下是一个示例用法:
import pandas
import patsy
dataFrame = pandas.io.parsers.read_csv("salary2.txt")
#salary2.txt is a re-formatted data set from the textbook
#Introductory Econometrics: A Modern Approach
#by Jeffrey Wooldridge
y,X = patsy.dmatrices("sl ~ 1+sx+rk+yr+dg+yd",dataFrame)
#X.design_info provides the meta data behind the X columns
print X.design_info
Run Code Online (Sandbox Code Playgroud)
产生:
> DesignInfo(['Intercept',
> 'sx[T.male]',
> 'rk[T.associate]',
> 'rk[T.full]',
> 'dg[T.masters]',
> 'yr',
> 'yd'],
> term_slices=OrderedDict([(Term([]), slice(0, 1, None)), (Term([EvalFactor('sx')]), slice(1, 2, None)),
> (Term([EvalFactor('rk')]), slice(2, 4, None)),
> (Term([EvalFactor('dg')]), slice(4, 5, None)),
> (Term([EvalFactor('yr')]), slice(5, 6, None)),
> (Term([EvalFactor('yd')]), slice(6, 7, None))]),
> builder=<patsy.build.DesignMatrixBuilder at 0x10f169510>)
Run Code Online (Sandbox Code Playgroud)