MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

MongoDB से विशाल पांडा डेटाफ़्रेम लोड करने में प्रयुक्त मेमोरी को कम करें

CSV में क्या है और डेटाफ़्रेम में क्या है, ये दो अलग-अलग चीज़ें हैं। उदाहरण के लिए, 9.9 और 9.99999999999999 CSV में डेटाफ़्रेम में उतनी ही जगह लेगा.

उस ने कहा, डेटाफ़्रेम में डेटा किसी सूची में डेटा की तुलना में बहुत कम स्थान लेता है। स्मृति में सूची बनाना महंगा है; और डेटाफ़्रेम में जोड़ने के लिए पांडा को एक नया (बड़ा) डेटाफ़्रेम बनाने की आवश्यकता होती है, सब कुछ कॉपी करें, फिर मूल डेटाफ़्रेम को कचरा-एकत्र करने के लिए छोड़ दें।

यदि आप 60000 पंक्तियों (या फिर आपके पास कुल कितनी पंक्तियाँ हैं) के डेटाफ़्रेम का प्रचार-प्रसार करते हैं, तो आप शायद बहुत बेहतर करेंगे; उदा.:

data = pd.DataFrame(np.empty((60000,), dtype=[
    ('x', np.uint8),
    ('y', np.float64)
]))

और फिर प्रत्येक पंक्ति के लिए dataset . पर भरोसा किए बिना, उस पंक्ति के लिए डेटा डाला गया सूची:

data.values[count,:] = rowdata_at_count

यह टाइप-सुरक्षित नहीं है, लेकिन यह बहुत तेज़ है (चूंकि कोई आवंटन नहीं हो रहा है), इसलिए सुनिश्चित करें कि rowdata_at_count एक सूची है जिसके तत्व स्तंभ प्रकारों से मेल खाते हैं।

संपादित करें

हां, 100 पंक्तियों को जोड़ना, मेरा मानना ​​​​है कि, एक पंक्ति के 100 संघटकों की तरह (जैसा कि प्रत्येक परिशिष्ट को पुन:आवंटित करना चाहिए और तालिका की प्रतिलिपि बनाना चाहिए, ठीक उसी तरह)। प्रीआलोकेटिंग एपेंड और कॉनकैट दोनों से बचा जाता है:टेबल का आकार नहीं बदलता है, कोई पुन:आवंटन और कॉपी करने की आवश्यकता नहीं है।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. arrayFilters के साथ फ़िल्टर किए गए पोजिशनल ऑपरेटर का उपयोग करके अपडेट कैसे लागू करें

  2. मोंगोडीबी इंस्टेंस 4.2 तक कैसे पहुंचे?

  3. नेस्टेड वस्तुओं के साथ MongooseJS में $in का उपयोग करना

  4. उप-दस्तावेज़ों की सरणी को क्वेरी करने के लिए MongoDB अभिव्यक्ति

  5. Node.js Mongoose.js स्ट्रिंग ObjectId फ़ंक्शन के लिए