आर

2016-02-01 8 views
8

में एक अचार फ़ाइल (पांडास पायथन डेटा फ़्रेम) पढ़ना क्या पांडस डेटाफ्रेम से अचार में पिकल फ़ाइलें (.pkl) पढ़ने का कोई आसान तरीका है?आर

एक संभावना सीएसवी को निर्यात करना है और आर को सीएसवी पढ़ना है, लेकिन यह मेरे लिए वास्तव में बोझिल लगता है क्योंकि मेरे डेटाफ्रेम बड़े हैं। क्या ऐसा करने का कोई आसान तरीका है?

धन्यवाद!

+1

आप 'data.table' पैकेज से 'फ़्रेड' भी देख सकते हैं। यह बेस आर की तुलना में सीएसवी फाइलों में काफी तेजी से पढ़ता है (जो वास्तव में धीमा है)। 150 एमबी सीएसवी फ़ाइल के साथ त्वरित परीक्षण 'read.csv' के साथ 11 सेकंड और' fread' के साथ 2 सेकंड दिखाता है। – Laterow

+0

क्यों SQLite जैसे डेटाबेस में स्टोर न करें कि आर और पायथन दोनों पढ़/लिख सकते हैं? वास्तव में, आरडीएमएस का उद्देश्य अंतिम उपयोग कार्यक्रमों के लिए केंद्रीय भंडार के रूप में कार्य करने का उद्देश्य है। – Parfait

+0

@ पैराफेट यदि डेटा बड़ा है, तो डेटा को आरडीएमएस में संग्रहीत करना और विशेष रूप से आर को वापस क्रमबद्ध करना (अपेक्षाकृत धीमा) होगा। बस मेरे अवलोकन पुन: इस तरह के ऑपरेशन के लिए आरडीएमएस गति। मेरे अनुभव में, लेट्रो द्वारा उल्लिखित स्ट्रीमिंग और मेरे जवाब में बड़े डेटासेट वाले अधिकांश मामलों में बहुत तेज हो जाएगा। Rpy2 का उपयोग स्ट्रीमिंग से धीमा हो सकता है - लेकिन डेटा संरचित होने के कारण इसका लाभ (जैसे आरडीएमएस) है। – russellpierce

उत्तर

4

आप पाइथन में अचार लोड कर सकते हैं और फिर इसे पायथन पैकेज rpy2 (या इसी तरह) के माध्यम से आर में निर्यात कर सकते हैं। एक बार ऐसा करने के बाद, आपका डेटा पायथन से जुड़े आर सत्र में मौजूद होगा। मुझे संदेह है कि आप आगे क्या करना चाहते हैं, उस सत्र का उपयोग आर और saveRDS को फ़ाइल या रैम डिस्क पर कॉल करने के लिए करना होगा। तब RStudio में आप उस फ़ाइल में वापस एक सरल अजगर स्क्रिप्ट में अपने डेटा लोड करने के लिए पढ़ सकते हैं। आर संकुल rJython और rPython तरीके हैं जिनसे आप आर से

वैकल्पिक रूप से अजगर आदेशों को चालू कर सकते के लिए को देखो, तो आप लिख सकते हैं पायथन (शायद ऊपर वर्णित आर पैकेजों में से एक का उपयोग कर) और stdout पर एक स्वरूपित डेटा स्ट्रीम लिखें। फिर वह पूरी प्रणाली स्क्रिप्ट को कॉल करती है (जिसमें आपके अचार को निर्दिष्ट तर्क शामिल है) आर पैकेज data.table में fread पर तर्क के रूप में उपयोग किया जा सकता है। वैकल्पिक रूप से, यदि आप मानक कार्यों को रखना चाहते हैं, तो आप system(..., intern=TRUE) और read.table के संयोजन का उपयोग कर सकते हैं।

सामान्य रूप से, इस विशेष बिल्ली को त्वचा के लिए/कई/तरीके हैं। बुनियादी कदम हैं:

  1. लोड अजगर में डेटा
  2. आर करने के लिए डेटा (जैसे, rpy2 के माध्यम से वस्तु निर्यात या आर दूसरे छोर पर इसे प्राप्त करने के लिए तैयार के साथ stdout के लिए स्वरूपित पाठ लिखने)
  3. एक्सप्रेस
  4. एक आंतरिक डेटा प्रतिनिधित्व करने के लिए आर में व्यक्त डेटा को क्रमानुसार (जैसे, rpy2 या fread के माध्यम से वस्तु निर्यात)
  5. (वैकल्पिक) आर एक और आर सत्र के लिए सुलभ के उस सत्र में डेटा बनाओ (यानी, कदम बंद करने के लिए rpy2 के साथ लूप, या यदि आप fread का उपयोग कर रहे हैं तो आप पहले से ही कर चुके हैं)।
+1

दिलचस्प, धन्यवाद! मैं 'r_dataframe' को निर्यात करने और इसे कहने में कहूंगा, Rstudio? – Vincent

+0

मैंने ऊपर आपके विकल्पों पर विस्तार किया। – russellpierce