关于大熊猫数据帧在Python基于R LM功能

时间:2019-01-31 11:11:17

标签: python r pandas lm

我想使用 R 函数 lm Python 中计算线性回归。 我的数据是熊猫数据框的形式。这样小的例子:

import numpy as np
import pandas as pd
d2 = {'V1' : pd.Series([1,2,3,1,2,3,1,2,3,3]),
     'V2' : pd.Series([2,2,3,1,1,3,3,3,3,2]),
     'V3' : pd.Series([1.,2., 3., 1., 2., 3., 1., 1., 2., 2.]),
     'V4' : pd.Series([1,2,1,2,1,1,2,2,1,2])}

df2 = pd.DataFrame(d2)

我想在Python运行R函数流明:

model = lm(V1~.,data=df2)

〜。调用函数对我来说是必不可少的,因为我的真实数据集很大,我想将所有变量都用作X变量。

之后,我想以提取矢量与列名的量,系数是的不NA

我读过有关rpy2包,但我宁愿一个Python初学者和一些帮助将是巨大的。我发现,到目前为止,只使用一个变量X的所有实例和没有大熊猫据帧,这是不利于我。

谢谢!

1 个答案:

答案 0 :(得分:2)

这是pyper的一个选项。创建连接后,将对象分配到R环境中。然后在数据集上应用R函数,并使用r.get

返回输出
from pyper import *
r=R(use_pandas=True) 
r.assign("rdf2", df2)
r('model <- lm(V1~.,data=rdf2)')
r('nm1 <-  names(which(!is.na(coef(model))))[-1]')
out = r.get('nm1')
list(out)
#['V2', 'V3', 'V4']

R侧检查输出

tmp <- read.csv('tmptest.csv')
model <- lm(V1~.,data= tmp)
nm1 <-  names(which(!is.na(coef(model))))[-1]
nm1
#[1] "V2" "V3" "V4"