Загрузка файлов .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')