Mam ramkę danych w Pandach i chcę zrobić kilka statystyk na jej temat, używając funkcji R. Nie ma problemu! RPY ułatwia wysłać dataframe od Pandy do R:* Efektywnie * przenoszenie ramek danych od Pandy do R z RPy (lub innymi sposobami)
import pandas as pd
df = pd.DataFrame(index=range(100000),columns=range(100))
from rpy2 import robjects as ro
ro.globalenv['df'] = df
A jeśli jesteśmy w ipython:
%load_ext rmagic
%R -i df
Z jakiegoś powodu trasa ro.globalenv
jest nieco wolniejszy niż trasie rmagic
, ale bez znaczenia. Liczy się to: ramka danych, której ostatecznie użyję, ma ~ 100 GB. Pojawia się kilka problemów:
- Nawet z 1GB danych, transfer jest raczej powolny.
- Jeśli dobrze rozumiem, tworzy to dwie kopie ramki danych w pamięci: jedną w języku Python, a drugą w R. Oznacza to, że właśnie podwoiłem swoje wymagania dotyczące pamięci i nie mam nawet uruchomionych testów statystycznych !
Czy istnieje jakiś sposób, aby:
- transferu duża dataframe między Python i R szybciej?
- Dostęp do tego samego obiektu w pamięci? Podejrzewam, że to prosi o księżyc.
To interesujące pytanie - zwykle kończę zapisywanie moich danych na dysku, a następnie przeczytanie ich ponownie w R. Nie trzeba chyba dodawać, że jest to dalece mało skuteczne. Jednak 'python' i' R' są zupełnie innymi językami. To niesamowite, że coś podobnego do 'rpy' jest możliwe w pythonie. Wątpię, czy możliwe jest posiadanie struktury danych ramek danych, która działa zarówno dla Pythona, jak i R bez potrzeby dużych transformacji. Oczekuję jednak odpowiedzi. – cel
Czy możesz napisać do pliku '.RData' z Pand? –
Prawdopodobnie nie bez konwersji na ramkę danych 'R'. – cel