繁体   English   中英

在 Pandas DataFrame 上使用 Python 中的 R lm 函数

[英]Using R lm function in Python on pandas DataFrame

我想使用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 函数 lm:

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

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

之后,我想提取一个列名的向量,其系数不是 NA

我读过 rpy2 包,但我更像是一个 python 初学者,一些帮助会很棒。 到目前为止,我找到的所有示例都只使用了一个 X 变量,而没有使用 Pandas DataFrame,这对我没有帮助。

谢谢!

这是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"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM