* Effizient * Verschieben von Datenrahmen von Pandas zu R mit RPy (oder anderen Mitteln)

8

Ich habe einen Datenrahmen in Pandas, und ich möchte einige Statistiken dazu mit R-Funktionen machen. Kein Problem! RPy macht es einfach, einen Datenrahmen von Pandas in R zu senden:

%Vor%

Und wenn wir in IPython sind:

%Vor%

Aus irgendeinem Grund ist die Route ro.globalenv etwas langsamer als die Route rmagic , aber egal. Was zählt, ist: Der Datenrahmen, den ich letztendlich verwenden werde, ist ~ 100 GB. Dies wirft einige Probleme auf:

  1. Selbst mit nur 1 GB Daten ist die Übertragung eher langsam.
  2. Wenn ich das richtig verstehe, erzeugt das zwei Kopien des Datenrahmens im Speicher: einen in Python und einen in R. Das bedeutet, dass ich meine Speicheranforderungen verdoppelt habe und nicht einmal statistische Tests durchgeführt habe !

Gibt es einen Weg zu:

  1. Übertragen Sie einen großen Datenrahmen zwischen Python und R schneller?
  2. Zugriff auf das gleiche Objekt im Speicher? Ich vermute, das fragt nach dem Mond.
jeffalstott 03.05.2015, 08:51
quelle

2 Antworten

5

rpy2 verwendet einen Konvertierungsmechanismus, der versucht, das Kopieren von Objekten beim Verschieben zwischen Python und R zu vermeiden. Dies funktioniert jedoch derzeit nur in der Richtung R - & gt; Python.

Python hat eine Schnittstelle, die "Pufferschnittstelle" genannt wird, die von rpy2 verwendet wird und die es erlaubt, die Anzahl der Kopien für die C-Ebene zwischen R und Python zu minimieren (siehe Ссылка - das Dokument scheint veraltet, da die __array_struct__ -Schnittstelle nicht mehr die erste Wahl ist) .

Es gibt kein Äquivalent zur Pufferschnittstelle in R, und das aktuelle Problem, das mich davon abhält, eine äquivalente Funktionalität in rpy2 bereitzustellen, ist die Behandlung von geborgten Referenzen während der Garbage Collection (und der Zeitmangel, über die man gründlich nachdenken kann) es).

Zusammenfassend gibt es eine Möglichkeit, Daten zwischen Python und R ohne Kopieren zu teilen, aber dafür müssen die Daten in R erstellt werden.

    
lgautier 04.05.2015, 00:31
quelle
2

Gegenwärtig scheint feather die effizienteste Option für den Datenaustausch zwischen DataFrame von R und Pandas zu sein.

    
TurtleIzzy 10.12.2016 13:34
quelle

Tags und Links