2015-02-26 6 views
7

पांडस अंतर्निहित विधि या pickle.dump का उपयोग करके कौन सा बेहतर है?पांडा डेटाफ्रेम को चुनने का सबसे तेज़ तरीका क्या है?

मानक अचार विधि इस प्रकार है:

pickle.dump(my_dataframe, open('test_pickle.p', 'wb')) 

पांडा निर्मित विधि इस प्रकार है:

my_dataframe.to_pickle('test_pickle.p') 
+0

क्यों न केवल उन्हें बेंचमार्क करें? – tolanj

+1

@tolanj बेंचमार्क द्वारा आपका क्या मतलब है? मैं नीचे दिए गए उत्तर में समय शामिल करता हूं। – tegan

+0

उन लोगों के लिए जिन्हें 'पांडा। डेटाफ्रेम' क्रमबद्धरण के लिए एक अच्छा बेंचमार्क चाहिए: [फास्टसेरियलाइजेशन] (http://matthewrocklin.com/blog/work/2015/03/16/Fast-Serialization)। –

उत्तर

9

धन्यवाद @qwwqwwq लिए मुझे पता चला कि पांडा एक अंतर्निहित to_pickle है डेटा फ्रेम के लिए विधि। मैं एक त्वरित समय परीक्षण किया:

In [1]: %timeit pickle.dump(df, open('test_pickle.p', 'wb')) 
10 loops, best of 3: 91.8 ms per loop 

In [2]: %timeit df.to_pickle('testpickle.p') 
10 loops, best of 3: 88 ms per loop 

तो ऐसा लगता है कि निर्मित केवल बाल बाल बेहतर है (मेरे लिए, यह उपयोगी है क्योंकि इसका मतलब यह शायद कोड पुनर्रचना लायक उपयोग करने के लिए नहीं है में निर्मित) - उम्मीद है कि यह किसी की मदद करता है!

+0

आप समय प्रसंस्करण के बारे में चिंतित क्यों हैं? मुझे लगता है कि कार्यक्षमता अधिक महत्वपूर्ण थी। क्या 'to_pickle' की कोई अतिरिक्त कार्यक्षमता है? क्या यह केवल अचार आयात करने की सुविधा नहीं है? – endolith

+6

यह वह जगह है जिस तरह से देर से, लेकिन सिर्फ झंकार के लिए: ऐसा लगता है कि बहुत बड़ी dataframes के लिए, लिखने समय ('pickle.dump' या' df.to_pickle') विधि की परवाह किए बिना एक ही के बारे में है, लेकिन समय पढ़ा _much_ तेजी से होता है 'df.to_pickle' के साथ बनाई गई फ़ाइलों के लिए। 'आकार 53,330 पंक्तियों x 21 कॉलम की एक dataframe पर timeit' के साथ, यह एक फ़ाइल' pickle.dump' के साथ लिखा और केवल 3 एमएस 'df.to_pickle' के साथ लिखा एक फ़ाइल unpickle को unpickle 115 एमएस है। सुनिश्चित नहीं है कि विशाल गति से कहां से आता है, लेकिन यह काफी ध्यान देने योग्य है। – Tasha

+0

अतिरिक्त ताशा के लिए धन्यवाद, बहुत उपयोगी है। वास्तव में उत्सुकता क्यों गति अंतर मौजूद है, मैंने सोचा होगा कि दोनों को एक ही फाइल के परिणामस्वरूप होना चाहिए। – verybadatthis

संबंधित मुद्दे