在 pandas DataFrame 上的 Python 中使用 R lm 函数
Using R lm function in Python on pandas DataFrame
我想使用 R 函数 lm 来计算 Python 中的线性回归。
我的数据采用 pandas 数据框的形式。像这个小例子:
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 变量。
之后,我想提取一个向量,其列名的系数是 not 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"
我想使用 R 函数 lm 来计算 Python 中的线性回归。 我的数据采用 pandas 数据框的形式。像这个小例子:
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 变量。
之后,我想提取一个向量,其列名的系数是 not 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"