Загрузка файлов .RData в Python

У меня есть набор файлов временного ряда .RData и вы хотите загрузить их прямо в Python без предварительной конвертации файлов в другое расширение (например, CSV). Любые идеи о наилучшем способе достижения этого?

Ответы

Ответ 1

Люди спрашивают об этом в списке R-help и R-dev, и обычный ответ заключается в том, что код является документацией для формата файла .RData. Таким образом, любая другая реализация на любом другом языке hard ++.

Я считаю, что единственный разумный способ - установить RPy2 и использовать функцию R load, которая преобразуется в соответствующие объекты python по мере того, как вы идете. Файл .RData может содержать структурированные объекты, а также обычные таблицы, поэтому не смотрите.

Linky: http://rpy.sourceforge.net/rpy2/doc-2.4/html/

Quicky:

>>> import rpy2.robjects as robjects
>>> robjects.r['load'](".RData")

теперь загружаются объекты в рабочее пространство R.

>>> robjects.r['y']
<FloatVector - Python:0x24c6560 / R:0xf1f0e0>
[0.763684, 0.086314, 0.617097, ..., 0.443631, 0.281865, 0.839317]

Что простой скаляр, d - это кадр данных, я могу подмножество для получения столбцов:

>>> 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]

Ответ 2

Существует сторонняя библиотека с именем rpy, и вы можете использовать эту библиотеку для загрузки файлов .RData. Вы можете получить это через pip install pip instally rpy, чтобы сделать трюк, если у вас нет rpy, тогда я предлагаю вам взглянуть, как его установить. В противном случае вы можете просто:

from rpy import *
r.load("file name here")

EDIT:

Кажется, что я немного старая школа, теперь rpy2, поэтому вы можете использовать это.

Ответ 3

Пользователи ноутбуков Jupyter

Если вы используете ноутбук Jupyter, вам нужно сделать 2 шага:

Шаг 1: перейдите в http://www.lfd.uci.edu/~gohlke/pythonlibs/#rpy2 и загрузите интерфейс Python на R-язык (встроенный R) в моем случае я буду использовать rpy2-2.8.6-cp36-cp36m-win_amd64.whl

Поместите этот файл в тот же рабочий каталог, в котором вы находитесь.

Шаг 2: Перейдите к своему ноутбуку Jupyter и напишите следующие команды

# This is to install rpy2 library in Anaconda
!pip install rpy2-2.8.6-cp36-cp36m-win_amd64.whl

а затем

# This is important if you will be using rpy2
import os
os.environ['R_USER'] = 'D:\Anaconda3\Lib\site-packages\rpy2'

а затем

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

Это должно позволить вам использовать R-функции в python. Теперь вам нужно импортировать readRDS, как следует

readRDS = robjects.r['readRDS']
df = readRDS('Data1.rds')
df = pandas2ri.ri2py(df)
df.head()

Поздравляем! теперь у вас есть Dataframe, который вы хотели

Однако я советую вам сохранить его в файле pickle для более позднего использования времени в python как

 df.to_pickle('Data1') 

Итак, в следующий раз вы можете просто использовать его

df1=pd.read_pickle('Data1')