gpt4 book ai didi

python - Rpy2: Pandas 数据框不适合 R

转载 作者:太空宇宙 更新时间:2023-11-04 10:32:05 25 4
gpt4 key购买 nike

我需要用 python 读取一个 csv 文件(进入 pandas 数据框),在 R 中工作并返回到 python。然后,为了将 pandas 数据帧传递给 R 数据帧,我使用 rpy2,并且工作正常(代码如下)。

from pandas import read_csv, DataFrame
import pandas.rpy.common as com
import rpy2.robjects as robjects

r = robjects.r
r.library("fitdistrplus")

df = read_csv('./datos.csv')
r_df = com.convert_to_r_dataframe(df)
print(type(r_df))

这个输出是:

<class 'rpy2.robjects.vectors.FloatVector'>

但是,我尝试在 R 中进行调整:

fit2 = r.fitdist(r_df, "weibull")

但是我有这个错误:

RRuntimeError: Error in (function (data, distr, method = c("mle", "mme", "qme", "mge"),  : 
data must be a numeric vector of length greater than 1

我有第二个问题:
1_我做错了什么?
2_ 这是将 python 数据帧传递给 R 的最有效方法吗?因为,我看到这个导入:from rpy2.robjects.packages import importr

这是我读到的数据:https://mega.co.nz/#!P8MEDSzQ!iQyxt73a5pRvJNOxWeSEaFlsVS7_A1sZCAXkUFBLJa0

我使用 Ipython 2.1 谢谢!

最佳答案

你有两个问题:

首先,您尝试在真正需要向量的地方使用数据框。 (如果您尝试对 fitdist() 使用 R data.frame,您也会遇到错误。)

其次,pandas 提供的 pandas<->rpy2 支持有问题,导致您的(大概)数字 pandas 数据框转换为字符串/字符 R 数据框:

In [27]: r.sapply(r_df, r["class"])
Out[27]:
<StrVector - Python:0x1097757a0 / R:0x7fa41c6b0b68>
[str, str, str, str]

这可不好!以下代码修复了这些错误:

from pandas import read_csv
import rpy2.robjects as robjects

r = robjects.r
r.library("fitdistrplus")

# this will read in your csv file as a Series, rather than a DataFrame
series = read_csv('datos.csv', index_col=0, squeeze=True)

# do the conversion directly, so that we get an R Vector, rather than a
# data frame, and we know that it's a numeric type
r_vec = robjects.FloatVector(series)

fit2 = r.fitdist(r_vec, "weibull")

关于python - Rpy2: Pandas 数据框不适合 R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25800556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com