अगर पांडास (Pandas) में मेमोरी की कमी के कारण आपका डेटा विश्लेषण रुक जाता है
TuBrief 편집팀
2026년 7월 13일
0
Computing/Software원본 영상을 바탕으로 AI의 도움을 받아 작성했습니다. 원본 영상이 기준입니다.
커뮤니티의 다른 글
댓글 (0)
Log in to leave a comment
아직 작성된 글이 없습니다
원본 영상을 바탕으로 AI의 도움을 받아 작성했습니다. 원본 영상이 기준입니다.
Log in to leave a comment
아직 작성된 글이 없습니다
पांडास डेटा को एक ही बार में रैम में लोड करता है। यही कारण है कि जब आप 16GB रैम वाले लैपटॉप पर 20GB की CSV फाइल खोलने की कोशिश करते हैं, तो पायथन क्रैश हो जाता है। जैसे ही डेटा थोड़ा बड़ा होता है, लैपटॉप फ्रीज हो जाता है और जुपिटर नोटबुक का कर्नल बंद हो जाता है। आप हर बार डेटा को सैंपलिंग नहीं कर सकते और न ही बार-बार कंप्यूटर अपग्रेड कर सकते हैं।
इसके बजाय DuckDB का उपयोग करें। यह केवल आवश्यक डेटा को धीरे-धीरे लोड करता है। पूरे डेटा को रैम में लोड करने के बजाय, यह SQL सिंटैक्स के जरिए केवल आवश्यक भागों को स्कैन करता है। यही कारण है कि डेटा इंजीनियरों के बीच पांडास के विकल्प के रूप में इसकी चर्चा हो रही है।
डेटा विश्लेषण के माहौल को बदलना आपकी सोच से कहीं अधिक सरल है। अपने मौजूदा पांडास डेटाफ्रेम को वैसे ही रहने दें और केवल इंजन बदलें।
duckdb.sql() फंक्शन के साथ आवश्यक शर्तें और एग्रीगेशन लिखें। वास्तविक गणना अभी नहीं होगी।.df() को कॉल करने पर ही वास्तविक गणना होती है।यह तरीका केवल कोड बदलने से कहीं अधिक दक्षता प्रदान करता है। पांडास में groupby करते समय जो काम रैम भर जाने के कारण रुक जाता था, DuckDB में वह डिस्क का उपयोग करके स्थिरता से पूरा होता है।
बड़ी मात्रा में डेटा के साथ काम करते समय, अक्सर रैम खत्म हो जाती है और प्रोग्राम क्रैश हो जाता है। इसे रोकने के लिए, अपने कार्य वातावरण में गार्डरेल (guardrails) लगाना जरूरी है।
अपनी स्क्रिप्ट के शीर्ष पर निम्नलिखित कोड डालें:
`python
import duckdb
con = duckdb.connect()
con.execute("SET memory_limit = '4GB'")
con.execute("SET temp_directory = './tmp'")
`
memory_limit वह सीमा है जो यह तय करती है कि DuckDB कितनी रैम का उपयोग करेगा। इसे 4GB पर सेट करने से, 16GB रैम वाले लैपटॉप पर भी पूरा सिस्टम फ्रीज नहीं होगा। यदि रैम कम पड़ती है, तो DuckDB स्वचालित रूप से डेटा को डिस्क पर अस्थायी फाइलों में लिख देता है। 2023 के बेंचमार्क के अनुसार, 140GB की Parquet फाइल को प्रोसेस करते समय DuckDB ने केवल 1.3GB रैम का उपयोग करके काम पूरा कर लिया था। पांडास के मामले में, यह काम कई दसियों गीगाबाइट रैम लेने के बाद अंततः क्रैश हो जाता।
डेटा विश्लेषण में सबसे निराशाजनक क्षण तब आता है जब गलत फॉर्मेट के कारण पार्सिंग (parsing) रुक जाती है। CSV फाइल लोड करते समय यदि टाइप मेल नहीं खाता है, तो विश्लेषण शुरू भी नहीं हो पाता।
read_csv फंक्शन का उपयोग करते समय निम्नलिखित विकल्प चालू करें:
`python
con.execute("""
SELECT * FROM read_csv('data.csv',
columns={'id': 'INTEGER', 'value': 'DOUBLE'},
store_rejects=true,
strict_mode=false)
""")
`
ऐसा करने से, गलत फॉर्मेट वाले डेटा के कारण पूरी प्रक्रिया बंद नहीं होगी। गलत पंक्तियों (rows) को एक अलग टेबल में अलग कर दिया जाएगा। बाद में, आप केवल reject_errors टेबल को अलग से क्वेरी करके देख सकते हैं कि डेटा कहाँ खराब हुआ था।
डेटा विश्लेषण का काम टूल को ठीक करना नहीं, बल्कि डेटा से अंतर्दृष्टि (insights) निकालना है। रैम की समस्या के कारण बार-बार कोड को फिर से चलाने के बजाय, इंजन बदलकर अपनी कार्यक्षमता सुनिश्चित करें।