web-dev-qa-db-ja.com

.RDataファイルをPython

私はたくさんの.RData時系列ファイルを持っているので、最初にファイルを他の拡張子(.csvなど)に変換せずにPythonに直接ロードしたいと思います。これを達成する方法は?

25
Stu

R-helpとR-devのリストでこのようなことを尋ねられますが、通常の答えは、コードが.RDataファイル形式のドキュメントであるということです。したがって、他の言語でのその他の実装は、hard ++です。

唯一の合理的な方法は、RPy2をインストールし、そこからRのload関数を使用して、適切なpythonオブジェクトに変換することです。.RDataファイルには構造化オブジェクトとプレーンテーブルの両方に注意してください。

リンキー: 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]
24
Spacedman

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()

これにより、PythonでR関数を使用できるようになります。次のようにreadRDSをインポートする必要があります

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

おめでとう!これで必要なデータフレームができました

ただし、後で使用するためにpython asとしてpickleファイルに保存することをお勧めします

 df.to_pickle('Data1') 

したがって、次回は単純にそれを使用することができます

df1=pd.read_pickle('Data1')
6
rsc05