Python中的R鼠标包

问题描述 投票:1回答:1

我正在尝试通过Jupyter在Python上运行R鼠标包。我正在努力解决许多错误和技术问题。让我们获取Iris数据集并插入一些na:

import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
iris = load_iris()
data1 = pd.DataFrame(data= np.c_[iris['data'], iris['target']],
                     columns= iris['feature_names'] + ['target'])

data1.iloc[1,1] = np.nan
data1.iloc[4,4] = np.nan
data1.iloc[149,2] = np.nan

在R中,我将运行以下脚本:

library(mice)
md.pattern(data1)
imputed_df = mice(data1, m=3)
df = complete(imputed_df,2)

这是问题,在Python中我正试图运行以下脚本:

from rpy2.robjects import pandas2ri
pandas2ri.activate()
from rpy2.robjects.packages import importr
Mice = importr('mice')

pattern = robjects.r("md.pattern")
Mice.complete(Mice.mice(pattern(data1), m=3),2)

我遇到两种错误:

  1. 关于完整功能:

    [AttributeError:模块'鼠标'没有属性'完成'

  2. 关于小鼠功能:

    TypeError:'NULLType'对象不可迭代

最重要的是,您如何建议在Python上运行R鼠标?

python r missing-data rpy2 r-mice
1个回答
0
投票

1]这可能是因为complete函数不是来自mice库,而是来自tidyr。您可以通过简单地在R中检查它来进行检查:

print(complete)

显示它来自的命名空间:

function (data, ..., fill = list()) 
{
    UseMethod("complete")
}
<bytecode: 0x55bc2e74e1d0>
<environment: namespace:tidyr>

我很好奇为什么它在Rpy2中没有像在R中那样被重新导出(@lgautier的回答会有所帮助)。

2)我无法复制;以下作品符合我的期望:

mice = importr('mice')
tidyr = importr('tidyr')

tidyr.complete(mice.mice(pattern(data1), m=3), 2)
© www.soinside.com 2019 - 2024. All rights reserved.