para - Cargando archivos.RData en Python
leer archivos csv en python (4)
Usuarios de portátiles Jupyter
Si está utilizando la notebook Jupyter, necesita hacer 2 pasos:
Paso 1: vaya a http://www.lfd.uci.edu/~gohlke/pythonlibs/#rpy2 y descargue la interfaz de Python al lenguaje R (incrustado R) en mi caso rpy2-2.8.6-cp36-cp36m-win_amd64.whl
Coloque este archivo en el mismo directorio de trabajo en el que se encuentra actualmente.
Paso 2: Ve a tu cuaderno Jupyter y escribe los siguientes comandos
# This is to install rpy2 library in Anaconda
!pip install rpy2-2.8.6-cp36-cp36m-win_amd64.whl
y entonces
# This is important if you will be using rpy2
import os
os.environ[''R_USER''] = ''D:/Anaconda3/Lib/site-packages/rpy2''
y entonces
import rpy2.robjects as robjects
from rpy2.robjects import pandas2ri
pandas2ri.activate()
Esto debería permitirte usar las funciones R en python. Ahora tienes que importar el readRDS
como sigue
readRDS = robjects.r[''readRDS'']
df = readRDS(''Data1.rds'')
df = pandas2ri.ri2py(df)
df.head()
¡Felicidades! Ahora tienes el Dataframe que querías
Sin embargo, le aconsejo que lo guarde en un archivo pickle para su uso posterior en Python como
df.to_pickle(''Data1'')
Así que la próxima vez puedes usarlo simplemente
df1=pd.read_pickle(''Data1'')
Tengo un montón de archivos de series de tiempo .RData y me gustaría cargarlos directamente en Python sin antes convertirlos a otra extensión (como .csv). ¿Alguna idea sobre la mejor manera de lograr esto?
Como alternativa para aquellos que prefieren no tener que instalar R para realizar esta tarea (r2py lo requiere), hay un nuevo paquete "pyreadr" que permite leer archivos RData y Rds directamente en python sin dependencias.
Es un envoltorio alrededor de la biblioteca librdata C, por lo que es muy rápido.
Puedes instalarlo fácilmente con pip:
pip install pyreadr
Como ejemplo harías:
import pyreadr
result = pyreadr.read_r(''/path/to/file.RData'') # also works for Rds
# done! let''s see what we got
# result is a dictionary where keys are the name of objects and the values python
# objects
print(result.keys()) # let''s check what objects we got
df1 = result["df1"] # extract the pandas data frame for object df1
El repositorio está aquí: https://github.com/ofajardo/pyreadr
Descargo de responsabilidad: Soy el desarrollador de este paquete.
Hay una biblioteca de terceros llamada rpy
, y puede usar esta biblioteca para cargar archivos .RData
. Puede obtener esto a través de un pip
install pip instally rpy
hará el truco, si no tiene rpy
, le sugiero que eche un vistazo a cómo instalarlo. De lo contrario, puedes simplemente hacer:
from rpy import *
r.load("file name here")
EDITAR:
Parece que soy un poco de vieja escuela, s rpy2 ahora, así que puedes usar eso.
La gente pregunta este tipo de cosas en la lista de R-help y R-dev y la respuesta habitual es que el código es la documentación para el formato de archivo .RData
. Así que cualquier otra implementación en cualquier otro lenguaje es difícil ++ .
Creo que la única forma razonable es instalar RPy2 y usar la función de load
de R a partir de eso, convirtiéndolo en objetos de Python apropiados a medida que avanzas. El archivo .RData
puede contener objetos estructurados así como tablas simples, así que .RData
cuidado.
Linky: http://rpy.sourceforge.net/rpy2/doc-2.4/html/
Quicky:
>>> import rpy2.robjects as robjects
>>> robjects.r[''load''](".RData")
los objetos ahora están cargados en el espacio de trabajo de R.
>>> robjects.r[''y'']
<FloatVector - Python:0x24c6560 / R:0xf1f0e0>
[0.763684, 0.086314, 0.617097, ..., 0.443631, 0.281865, 0.839317]
Es un simple escalar, d es un marco de datos, puedo subconjuntar para obtener columnas:
>>> robjects.r[''d''][0]
<IntVector - Python:0x24c9248 / R:0xbbc6c0>
[ 1, 2, 3, ..., 8, 9, 10]
>>> robjects.r[''d''][1]
<FloatVector - Python:0x24c93b0 / R:0xf1f230>
[0.975648, 0.597036, 0.254840, ..., 0.891975, 0.824879, 0.870136]