رموز القيم المفقودة عند استيراد CSV تحتاج تعريفا من مصدر الملف. قد تبدو الخانة نصا واضحا في النسخة الأصلية، ثم تعاملها أداة القراءة كقيمة مفقودة. لذلك نحدد معنى الرمز في الحقل قبل الاستيراد، حتى لا يفقد النموذج فئة صحيحة أو يخلط بين الغياب ونص مقصود.
الخلاصة السريعة
راجع عقد الحقل والنص الأصلي، ثم اضبط سياسة رموز الغياب قبل القراءة؛ شكل الرمز وحده لا يحدد معناه في كل ملف.
- يتعرف read_csv افتراضيا على تمثيلات للغياب منها النص الفارغ وN/A وNULL؛ قد تتعارض مع تعريف رمز صحيح في ملفك. [1]
- مع na_filter=True، يضيف keep_default_na=True علامات na_values إلى الافتراضيات؛ ومع False يعتمد المحددة فقط، أو لا يفسر نصا كغياب إذا لم تحدد علامات. [1]
- إذا كان na_filter=False، يهمل القارئ إعدادَي keep_default_na وna_values؛ لا تتوقع تطبيق قائمة الغياب عندئذ. [1]
- حدد سياسة لكل حقل واحفظ الأصل؛ تحويل رموز مختلفة إلى غياب لا يتيح استنتاج النص السابق من النتيجة وحدها.
هل N/A تعني الغياب في كل ملف؟
ننشئ عقدا افتراضيا لملف تصنيف بطاقات: في عمود «رمز المجموعة» يكون N/A اسما رمزيا لمجموعة بعينها، بينما تعني NULL أن المصدر لم يسجل المجموعة. نستخدم هذا التعريف لشرح خطر افتراض المعنى من شكل النص؛ ولا ندعي أن N/A رمز معياري لهذه الفئة خارج مثالنا.
تعرض وثائق read_csv علامات افتراضية للغياب، منها النص الفارغ وN/A وNULL. [1]
إذا تجاهلنا عقد المثال، قد تختفي المجموعة ذات الرمز الصحيح ضمن القيم المفقودة. ولا يكفي إلقاء نظرة على الملف بعد الاستيراد لتحديد سبب كل غياب؛ نحتاج مقارنة بالنص الأصلي وسياسة القراءة.
كيف تغير keep_default_na قائمة الرموز؟
مع تفعيل اكتشاف الغياب، يضم keep_default_na=True علامات na_values إلى القائمة الافتراضية. ومع False يستخدم المحددة وحدها؛ وإذا لم تحدد na_values فلا تفسر نصوص كغياب. [1]
في مثالنا نقترح تعطيل القائمة الافتراضية وتحديد NULL وحده علامة غياب لعمود المجموعة. هذا اقتراح يخص العقد المذكور، وليس إعدادا أفضل لكل ملفات CSV. ولو كان النص الفارغ أيضا يعني الغياب، لوجب إدراجه وفق تعريف المصدر بدلا من الاعتماد على حدسنا عن شكل الخانة.
لماذا نراجع na_filter قبل تفسير النتيجة؟
إذا مررنا na_filter=False، تتجاهل read_csv إعدادَي keep_default_na وna_values. [1]
فإضافة NULL إلى قائمة مقترحة لا تحقق سياسة المثال إذا أوقفنا اكتشاف الغياب في الوقت نفسه. نسجل الإعدادات معا، ونراجع حالة رمز صحيح وحالة غياب قبل تعميم الاستيراد. هنا شرح للخيارات الموثقة على عقد من إنشاء الكاتب؛ لم نستورد ملفا أو نختبر محرك قراءة.
كيف نحفظ المعنى والأثر الأصلي؟
يمكن تحديد na_values بقاموس يربط كل عمود بعلاماته. [1]
نقترح سجل سياسة يضم اسم الحقل، والرمز كما ظهر في المصدر، ومعناه حسب العقد، والإجراء المقترح. السياسة الخاصة بعمود المجموعة لا تنتقل تلقائيا إلى عمود ملاحظات قد يستخدم النص نفسه بمعنى آخر.
- احفظ نسخة المصدر قبل تحويل العلامات؛ إذا تحولت N/A وNULL كلاهما إلى غياب، لا تكشف الخانة الناتجة وحدها أيهما سبق التحويل.
- وثق نسخة العقد والإعدادات والحالات غير المحسومة. الحفاظ على الرمز الصحيح لا يثبت صحة المجموعة المسجلة أو اكتمال تغطية بيانات النموذج.
| نص عمود المجموعة الأصلي | معناه في العقد الافتراضي | السياسة المقترحة |
|---|---|---|
| N/A | رمز مجموعة صحيح | حفظ الرمز |
| NULL | لم تسجل المجموعة | تمثيل الغياب |
| نص فارغ | غير محدد في هذا العقد | مراجعة قبل اعتماد معنى |
المصادر ومتابعة القراءة
- pandas: read_csv missing-value parameters (يفتح في نافذة جديدة)pandas.pydata.org
أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.
