2013-06-07 6 views
7

मुझे लगता है कि इस प्रश्न को कॉन्सट के कार्यान्वयन में कुछ अंतर्दृष्टि की आवश्यकता है।क्या पांडस एक जगह पर काम करता है?

कहें, मेरे पास 30 फाइलें हैं, 1 जी प्रत्येक है, और मैं केवल 32 जी मेमोरी का उपयोग कर सकता हूं। मैंने फ़ाइलों को डेटाफ्रेम की एक सूची में लोड किया, जिसे 'list_of_pieces' कहा जाता है। यह list_of_pieces आकार में ~ 30 जी होना चाहिए, है ना?

यदि मैं 'pd.concat (list_of_pieces)' करता हूं, तो ढेर में एक और 30 जी (या शायद 10 जी 15 जी) आवंटित करता है और कुछ परिचालन करता है, या यह नई मेमोरी आवंटित किए बिना 'इन-प्लेस' को संगत करता है?

कोई भी यह जानता है?

धन्यवाद!

+1

मुझे लगता है कि यह अंदरूनी नहीं है ... एक तरफ के रूप में, मुझे नहीं लगता कि आप वास्तव में स्मृति में इतना पढ़ना चाहते हैं (आप वास्तव में गणना करने के लिए ज्यादा जगह नहीं छोड़ेंगे)! मुझे लगता है [एचडीएफ 5 स्टोर] (http://pandas.pydata.org/pandas-docs/stable/io.html#hdf5-pytables) आपके लिए एक बेहतर विकल्प है। –

+0

@ एंडीहेडन, मुझे डर है कि मुझे स्मृति में डेटा के उस आकार की आवश्यकता है, मुझे उन पर कुछ इंटरैक्टिव विश्लेषण करने की आवश्यकता है :-( –

उत्तर

7

उत्तर नहीं है, यह एक जगह में ऑपरेशन नहीं है; np.concatenate हुड के नीचे प्रयोग किया जाता है, यहाँ देखें: Concatenate Numpy arrays without copying

समस्या के लिए एक बेहतर दृष्टिकोण एक HDFStore तालिका में ये टुकड़े में से प्रत्येक में लिखने के लिए है, यहाँ देखें: कुछ recipies के लिए http://pandas.pydata.org/pandas-docs/dev/cookbook.html#hdfstore: डॉक्स के लिए http://pandas.pydata.org/pandas-docs/dev/io.html#hdf5-pytables, और यहाँ।

तो आप चुन सकते हैं जो कुछ भागों की जरूरत (क्वेरी से या यहाँ तक कि पंक्ति संख्या) के रूप में (या यहां तक ​​कि पूरे सेट)

जब डेटा डिस्क पर है

आपरेशन के कुछ प्रकार भी किया जा सकता है: https://github.com/pydata/pandas/issues/3202?source=cc, और यहां: http://pytables.github.io/usersguide/libref/expr_class.html#

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