【问题标题】:is it possible to use pandas objects with rpy2?是否可以将 pandas 对象与 rpy2 一起使用?
【发布时间】:2013-09-03 14:49:55
【问题描述】:

我想将 pandas 与 R 结合使用,所以我做到了:

import pandas as pd
import rpy2.robjects as robjects

>>> df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]},index=["one", "two"])
>>> robjects.r.cor(df.A, df.B)
    ValueError: Nothing can be done for the type <class 'pandas.core.series.Series'> at the moment.

这是否意味着我还不能在 rpy2 中使用 pandas 的对象?

然后我尝试了:

import pandas.rpy.common as com

df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]},index=["one", "two"])
rdf = com.convert_to_r_dataframe(df)

但是我将如何使用rdf 完成上述操作?例如,rdf['A'] 给了我一个TypeError

【问题讨论】:

    标签: python pandas rpy2


    【解决方案1】:

    你为什么不用熊猫?

    import pandas as pd
    from scipy import stats
    
    df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
    df.corr('pearson')
    => A  B
    A  1  1
    B  1  1
    stats.f_oneway(df['A'], df['B'])
    => (13.5, 0.021311641128756723)
    

    我知道这并不能准确回答您的问题,但有时遇到此类问题表明您没有按预期使用这些工具。

    【讨论】:

    • 因为据我所知,我最终将使用更复杂的统计测试(例如,ANOVA),目前尚未在 pandas 中实现。提供的示例只是为了简单起见。
    • 我使用 scipy 添加了一个方差分析。你在 R 中可以做的事情很少在 python 中做不到。我对 rpy 的理解是它用于在 python 中运行 R 模块,而不是真正用于在 python 解释器中编写 R 代码。随意证明我错了!这只是我的理解。
    • @mattexx 虽然在 Python 中无法实现在 R 中无能为力的断言在技术上是正确的(因为 Python 是一种编程语言),但它忽略了一个重要的点:它可能需要付出多少努力带你达到同样的效果。在这个时间点,R 可能只是拥有最全面的统计工具库。
    • @mattexx (cont.) 关于 rpy(2),它将所有 R 暴露给 Python。这提供了在 R 中运行函数的能力,还可以使用 R 代码解析和评估字符串。走到这一步给了 iPython 中诱人的“rmagic”(曾经可以用它在 Python 交互式会话中编写 R 代码)。
    • @HappyPy 你会在 statsmodels 包中找到方差分析。有一个扩展示例here
    【解决方案2】:

    初步支持无缝使用 pandas 和 R/rpy。

    你需要这样做:

    from rpy2.robjects import pandas2ri
    pandas2ri.activate()
    

    文档有点落后,支持不完整,但是有一个小例子可以说明这个方向:

    https://plus.google.com/116424798545383828852/posts/jPfZ8VcTVi3

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-07
    • 2019-03-14
    • 1970-01-01
    • 2020-06-26
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多