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:
Gibt es einen Weg zu:
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.
Gegenwärtig scheint feather
die effizienteste Option für den Datenaustausch zwischen DataFrame von R und Pandas zu sein.