Saltar al contenido

Leyendo un archivo pickle (PANDAS Python Data Frame) en R

Solución:

Reticular fue bastante fácil y súper suave como sugirió russellpierce en los comentarios.

install.packages('reticulate')

Después de lo cual creé un script de Python como este a partir de los ejemplos que se dan en su documentación.

Archivo Python:

import pandas as pd

def read_pickle_file(file):
    pickle_data = pd.read_pickle(file)
    return pickle_data

Y luego mi archivo R se veía así:

require("reticulate")

source_python("pickle_reader.py")
pickle_data <- read_pickle_file("C:/tsa/dataset.pickle")

Esto me dio todos mis datos en R almacenados anteriormente en formato pickle.

También puede hacer todo esto en línea en R sin salir de su editor de R (siempre que su sistema python pueda llegar a los pandas) … p.

library(reticulate)
pd <- import("pandas")
pickle_data <- pd$read_pickle("dataset.pickle")

Puede cargar el pepinillo en python y luego exportarlo a R a través del paquete de python rpy2 (o similar). Una vez que lo haya hecho, sus datos existirán en una sesión de R vinculada a python. Sospecho que lo que le gustaría hacer a continuación sería usar esa sesión para llamar a R y guardar RDS en un archivo o disco RAM. Luego, en RStudio, puede volver a leer ese archivo. Mire los paquetes de R rJython y rPython para conocer las formas en las que podría activar los comandos de Python desde R.

Alternativamente, puede escribir una secuencia de comandos de Python simple para cargar sus datos en Python (probablemente usando uno de los paquetes de R mencionados anteriormente) y escribir una secuencia de datos formateada en stdout. Luego, toda la llamada del sistema al script (incluido el argumento que especifica su pepinillo) se puede usar como argumento para fread en el paquete R data.table. Alternativamente, si desea mantener las funciones estándar, puede usar una combinación de system(..., intern=TRUE) y read.table.

Como de costumbre, hay / muchas / formas de despellejar a este gato en particular. Los pasos básicos son:

  1. Cargar los datos en python
  2. Expresar los datos a R (por ejemplo, exportar el objeto a través de rpy2 o escribir texto formateado en la salida estándar con R listo para recibirlo en el otro extremo)
  3. Serializar los datos expresados ​​en R en una representación de datos internos (por ejemplo, exportar el objeto a través de rpy2 o fread)
  4. (opcional) Haga que los datos en esa sesión de R sean accesibles para otra sesión de R (es decir, el paso para cerrar el ciclo con rpy2, o si ha estado usando fread entonces ya has terminado).

Para agregar a la respuesta anterior: es posible que deba apuntar a un conda env diferente para llegar a pandas:

use_condaenv("name_of_conda_env", conda = "<<result_of `which conda`>>")
pd <- import('pandas')

df <- pd$read_pickle(paste0(outdir, "df.pkl"))
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *