ماذا تفعل إذا توقف تحليل البيانات بسبب نقص ذاكرة Pandas
TuBrief 편집팀
2026년 7월 13일
0
Computing/Software원본 영상을 바탕으로 AI의 도움을 받아 작성했습니다. 원본 영상이 기준입니다.
커뮤니티의 다른 글
댓글 (0)
Log in to leave a comment
아직 작성된 글이 없습니다
원본 영상을 바탕으로 AI의 도움을 받아 작성했습니다. 원본 영상이 기준입니다.
Log in to leave a comment
아직 작성된 글이 없습니다
تقوم مكتبة Pandas بتحميل البيانات في الذاكرة دفعة واحدة. وهذا هو السبب في أن بايثون تنهار (تتعرض لخطأ الذاكرة) عند محاولة فتح ملف CSV بحجم 20 جيجابايت على جهاز كمبيوتر محمول بذاكرة 16 جيجابايت. بمجرد أن تصبح البيانات كبيرة قليلاً، يتوقف الكمبيوتر المحمول عن الاستجابة ويموت نواة Jupyter Notebook. لا يمكنك أخذ عينات من البيانات أو ترقية جهاز الكمبيوتر الخاص بك في كل مرة.
بدلاً من ذلك، استخدم DuckDB. فهذه الأداة تقوم بجلب البيانات التي تحتاجها فقط شيئاً فشيئاً. فهي لا تحمل البيانات بالكامل في الذاكرة، بل تستعرض الأجزاء المطلوبة باستخدام لغة الاستعلام SQL. وهناك سبب يجعلها تحظى باهتمام كبير كبديل لـ Pandas بين مهندسي البيانات.
تغيير بيئة تحليل البيانات أبسط مما تعتقد. ما عليك سوى الاحتفاظ بإطار بيانات Pandas الذي كنت تستخدمه واستبدال المحرك فقط.
duckdb.sql(). لن تتم العمليات الحسابية الفعلية بعد..df() في النهاية.هذه الطريقة توفر كفاءة تتجاوز مجرد تغيير الكود. فالعمليات التي كانت تتسبب في انهيار الذاكرة عند استخدام groupby في Pandas، تعمل الآن بشكل مستقر في DuckDB باستخدام القرص الصلب.
عند التعامل مع بيانات ضخمة، قد تحدث مواقف تستهلك فيها الذاكرة بالكامل ويتم إنهاء البرنامج. لمنع ذلك، يجب عليك وضع حواجز حماية في بيئة العمل الخاصة بك.
أضف الكود التالي في أعلى النص البرمجي:
`python
import duckdb
con = duckdb.connect()
con.execute("SET memory_limit = '4GB'")
con.execute("SET temp_directory = './tmp'")
`
memory_limit هو الحد الذي يحدد مقدار الذاكرة التي سيستخدمها DuckDB. إذا قمت بضبطه على 4 جيجابايت، فلن يتجمد النظام بالكامل حتى على جهاز كمبيوتر محمول بذاكرة 16 جيجابايت. إذا لم تكن الذاكرة كافية، يقوم DuckDB تلقائياً بكتابة البيانات في ملفات مؤقتة على القرص. وفقاً لاختبارات الأداء لعام 2023، تمكن DuckDB من معالجة ملف Parquet بحجم 140 جيجابايت باستخدام 1.3 جيجابايت فقط من الذاكرة. وهو عمل كان سيشغل عشرات الجيجابايت من الذاكرة في Pandas وينتهي به المطاف بالانهيار.
اللحظة الأكثر إزعاجاً في تحليل البيانات هي عندما يتوقف التحليل بسبب تنسيق غير صحيح. إذا لم تتطابق الأنواع عند تحميل ملف CSV، فلن يبدأ التحليل من الأساس.
قم بتفعيل الخيارات التالية عند استخدام دالة read_csv:
`python
con.execute("""
SELECT * FROM read_csv('data.csv',
columns={'id': 'INTEGER', 'value': 'DOUBLE'},
store_rejects=true,
strict_mode=false)
""")
`
بهذه الطريقة، لن تتوقف العملية بالكامل بسبب بيانات لا تتوافق مع التنسيق. يتم عزل الصفوف غير الصحيحة في جدول منفصل. يمكنك لاحقاً الاستعلام عن جدول reject_errors بشكل منفصل للتحقق من سبب تلف البيانات.
التحليل ليس عملية إصلاح الأدوات، بل هو استخراج الرؤى من البيانات. توقف عن إعادة تشغيل الكود عشرات المرات بسبب الذاكرة، وقم بتغيير المحرك لضمان كفاءة المعالجة.