Ich habe eine Reihe von .RData Zeitreihen-Dateien und möchte sie direkt in Python laden, ohne zuerst die Dateien in eine andere Erweiterung (wie. CSV) zu konvertieren. Irgendwelche Ideen über den besten Weg, dies zu erreichen?Loading. RData-Dateien in Python
Antwort
Die Leute fragen so etwas auf der R-Hilfe und R-Dev-Liste und die übliche Antwort ist, dass der Code die Dokumentation für das .RData
Dateiformat ist. Also jede andere Implementierung in einer anderen Sprache ist hard ++.
Ich denke, der einzige vernünftige Weg ist, RPy2 zu installieren und die load
-Funktion von R zu verwenden, um zu den entsprechenden Python-Objekten zu konvertieren, wie Sie gehen. Die .RData
Datei kann sowohl strukturierte Objekte als auch einfache Tabellen enthalten.
Linky: http://rpy.sourceforge.net/rpy2/doc-2.4/html/
Quicky:
>>> import rpy2.robjects as robjects
>>> robjects.r['load'](".RData")
Objekte werden nun in den R Arbeitsbereich geladen.
>>> robjects.r['y']
<FloatVector - Python:0x24c6560/R:0xf1f0e0>
[0.763684, 0.086314, 0.617097, ..., 0.443631, 0.281865, 0.839317]
, dass ein einfacher Skalar ist, ist d ein Datenrahmen, ich Teilmenge kann Spalten erhalten:
>>> 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]
Es gibt eine dritte Partei Bibliothek rpy
genannt, und Sie können diese Bibliothek verwenden .RData
zu laden Dateien. Sie können dies über eine pip
installieren pip instally rpy
wird der Trick tun, wenn Sie nicht rpy
haben, dann schlage ich vor, dass Sie einen Blick auf, wie man es installieren. Ansonsten können Sie einfach do:
from rpy import *
r.load("file name here")
EDIT:
Es scheint, wie ich ein wenig der alten Schule gibt, s rpy2 jetzt bin, so Sie verwenden können.
genial, danke – Stu
Immer noch mit 'rpy'? Das ist groovig. –
@Stu Wenn dies Ihnen geholfen hat, ziehen Sie in Betracht, die [Antwort] zu akzeptieren (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) –
Jupyter Notebook Benutzer
Wenn Sie Jupyter Notebook verwenden, müssen Sie zwei Schritte tun:
Schritt 1: Gehen Sie auf http://www.lfd.uci.edu/~gohlke/pythonlibs/#rpy2 und downloaden Python-Schnittstelle zum R Sprache (Embedded R) in meinem Fall ich verwende rpy2-2.8.6-cp36-cp36m-win_amd64.whl
diese Datei im gleichen Arbeitsverzeichnis Legen Sie befinden sich in
Schritt 2:. gehen Sie zu Ihrem Jupyter Notebook und schreiben Sie die folgenden Befehle
# This is to install rpy2 library in Anaconda
!pip install rpy2-2.8.6-cp36-cp36m-win_amd64.whl
und dann
# This is important if you will be using rpy2
import os
os.environ['R_USER'] = 'D:\Anaconda3\Lib\site-packages\rpy2'
und dann
import rpy2.robjects as robjects
from rpy2.robjects import pandas2ri
pandas2ri.activate()
Dies sollte Ihnen ermöglichen, R Funktionen in Python zu verwenden. Nun müssen Sie die readRDS
importieren als
readRDS = robjects.r['readRDS']
df = readRDS('Data1.rds')
df = pandas2ri.ri2py(df)
df.head()
Congratulations folgen!jetzt haben Sie die Datenrahmen Sie
Allerdings wollte, rate ich Ihnen, es in Beize Datei zur späteren Zeit Verwendung in Python zu speichern als
df.to_pickle('Data1')
Also das nächste Mal, wenn Sie es einfach von
df1=pd.read_pickle('Data1')
verwenden
- 1. GTK + 3 + Python: "Loading ..." Dialog
- 2. Python Ctypes loading Fehler: undefined Symbol
- 3. Lazy Loading vs Eager Loading
- 4. Lazy loading, Deferred Loading und Eager Loading im Entity-Framework
- 5. Lazy Loading in NHibernate
- 6. Loading DataTable in SP
- 7. Loading Javascript: HTTP-Anfragen -v- Asynchronous Loading
- 8. Lazy loading, Deferred Laden, eifrig Loading LINQ
- 9. Schienen 3: Lazy Loading versus Eager Loading
- 10. Implizite Lazy Loading vs Explizite Lazy Loading
- 11. Continue loading after IntegrityError
- 12. HTML Img's loading
- 13. Loading uitableview
- 14. Lazy Loading Variablen in Vorlagen
- 15. Loading Spinner in SwipeRefreshLayout entfernen
- 16. Loading Bibliotheken in Dr Schema
- 17. Lazy Loading in Rails 3.2.6
- 18. Loading große Webseite in UIWebView
- 19. Loading separate Seiten in JQTouch
- 20. Lazy Loading templates in Meteor
- 21. Loading andere Modelle in Controller
- 22. Problem loading range_slices in Cassandra
- 23. Loading listView in neue Aktivität
- 24. Wann Lazy Loading/Eager Loading im Winterschlaf verwenden?
- 25. ionischen 2 Loading nicht
- 26. Global loading Namespace
- 27. Tomcat jar loading
- 28. imposante Bibliothek loading order
- 29. Android webview limited loading
- 30. Android listview lazy loading
Ein nützlicher zu addierender Kommentar: normalerweise werden Sie diese Objekte in Numpy manipulieren wollen, also würde ich folgendes hinzufügen: 'from rpy2.robjects import numpy2ri' und dann' numpy2ri.ri2numpy (r ['d']) '. Sie haben dann numpige Arrays, die Sie auf "pythonische" Weise manipulieren können. – jonathanrocher
@jonathanrocher es scheint in diesen Tagen (numpy 1.11.1) du kannst einfach 'np.array (r [' d ']) '' und ich habe 'ri2numpy' in' numpy2ri' nicht mehr. – daknowles