web-dev-qa-db-fra.com

Chargement d'un fichier .rds dans Pandas

J'ai téléchargé un fichier au format .rds, comment puis-je le charger avec Pandas? Il est censé être un fichier R mais je n'ai pas pu trouver d'informations sur la façon de le charger.

19
D1X

Vous pouvez utiliser l'interface rpy2 pour Pandas , de la manière suivante:

import rpy2.robjects as robjects
from rpy2.robjects import pandas2ri
pandas2ri.activate()

readRDS = robjects.r['readRDS']
df = readRDS('my_file.rds')
df = pandas2ri.ri2py(df)
# do something with the dataframe
22
mgalardini

Si vous préférez ne pas avoir à installer R (rpy2 l'exige), il existe un nouveau package "pyreadr" pour lire les fichiers Rds et RData très facilement.

C'est un wrapper autour de la librdata de la bibliothèque C, donc c'est très rapide.

Vous pouvez l'installer facilement avec pip:

pip install pyreadr

Ensuite, vous pouvez lire votre fichier rds:

import pyreadr

result = pyreadr.read_r('/path/to/file.Rds') # also works for RData

# done! 
# result is a dictionary where keys are the name of objects and the values python
# objects. In the case of Rds there is only one object with None as key
df = result[None] # extract the pandas data frame 

Le dépôt est ici: https://github.com/ofajardo/pyreadr

Avertissement: je suis le développeur de ce package.

10
Otto Fajardo

Pour donner suite à la réponse de @ mgalardini, dans les nouvelles versions de rpy2 (version 3.0.4), la méthode qui convertit la trame de données R en pandas trame de données a changé:

>>> rpy2.__version__
'3.0.4'
>>> import rpy2.robjects as robjects
>>> from rpy2.robjects import pandas2ri
>>> readRDS = robjects.r['readRDS']
>>> df = readRDS('my_file.rds')
>>> df = pandas2ri.rpy2py_dataframe(df)
4
user2032994