تقنية

إعادة فهرسة بيانات النموذج: هل fill_value يعالج كل قيمة مفقودة؟

رسم يفرق بين القيمة المفقودة الأصلية ب والتسمية المستحدثة ج التي أخذت قيمة الملء
رسم تعليمي أصلي؛ الحساب يدوي والقيم افتراضية.

لا تجعل ملء مواضع جديدة أثناء إعادة الفهرسة علاجًا تلقائيًا للقيم المفقودة التي كانت موجودة في البيانات الأصلية. السؤال المهم هو: هل الخانة غابت لأن تسميتها أضيفت الآن، أم كانت موجودة وقيمتها مجهولة؟ حين يجهز المساعد جدولًا للنموذج، يحتاج إلى إبقاء هذا الفرق ظاهرًا حتى لا ينسب قيمة اختارها إلى قياس سابق.

الخلاصة السريعة

في مثال إعادة الفهرسة، ملء التسمية الجديدة لا يملأ NaN التي كانت موجودة في صف أصلي.

  • تطابق reindex التسميات المطلوبة مع الفهرس؛ fill_value يحدد قيمة متوافقة للمواضع المستحدثة، ولا يعالج NaN الأصلية بهذه العملية. [1]
  • نطلب الصفوف ب، ج، أ؛ يحمل أ القيمة 7 وب NaN، ويضاف ج بقيمة 0 في مثالنا، بينما تبقى ب مفقودة.
  • الأصفار هنا خيار ملء معلن للتسمية الجديدة؛ ليست قياسا لقيمة ج، وغياب ب الأصلي يظل مختلفا عن استحداث ج.
  • راجع التسميات الفريدة والعمود والقيمة المتوافقة وسياسة الغياب؛ إعادة الفهرسة وحدها لا تختار تعويضا صحيحا للبيانات المفقودة.

ما الذي يعاد فهرسته؟

تصف pandas reindex بأنها مواءمة إطار البيانات مع فهرس جديد. يمكن تحديد تسميات الصفوف أو الأعمدة، وتوفر fill_value قيمة متوافقة للمواضع التي تنشأ عند المواءمة. توضح الوثيقة أن التعبئة أثناء إعادة الفهرسة تنظر إلى الفهارس؛ القيم المفقودة الموجودة في الأصل لا تعالج بذلك، وتوجه إلى fillna إذا كان المقصود ملء هذه القيم. [1]

سنحدد عمودا عدديا واحدا، وتسميات صفوف فريدة، ولا نستخدم ملء أماميا أو خلفيا. يبدأ جدولنا بصف أ يحمل 7 وصف ب يحمل NaN، أي علامة قيمة مفقودة في هذا المثال. لا نفترض أن الغياب يعني الصفر.

كيف تختلف ب عن ج في النتيجة؟

نطلب فهرسا جديدا بهذا الترتيب: ب، ج، أ، ونختار fill_value=0. ب موجودة في الأصل، لذلك تبقى قيمتها NaN. ج تسمية لا صف لها في الأصل، فينشأ موضعها بالقيمة المختارة 0. أما أ فتظهر في نهاية الترتيب وتحمل 7.

المقارنة المفيدة ليست هل ظهرت خانة صفر في النتيجة، بل أين ظهرت ولماذا. لو قال المساعد إن جميع القيم المفقودة صارت صفرا، فإن ب ترفض هذه العبارة في جدولنا. إعادة ترتيب الصفوف أيضا لا تعيد تسمية ب إلى ج؛ التسمية هي التي تربط كل قيمة بموقعها المطلوب.

هل الصفر قياس أم قيمة اخترناها؟

لنتخيل أن العمود يصف عدد قصاصات في حافظة. نستخدم الأعداد هنا للتوضيح فقط. الصفر الذي وضعناه في موضع ج لا يثبت أن أحدا فحص الحافظة ووجدها فارغة. إنه قيمة قررنا استخدامها للموضع الجديد، بينما لا نعرف قياس ج من البيانات الأصلية.

إذا احتاج النموذج إلى التمييز بين معلوم ومفقود، فاطلب الاحتفاظ بسبب إضافة الصف وسياسة ملئه. لا تجعل اختيار صفر يحل سؤالًا عن صحة القياس. ولو كان الصفر قيمة فعلية محتملة، فقد يحتاج التقرير إلى حقل مستقل يبين أن هذا الصفر لم يأت من ملاحظة أصلية.

ما السؤال الذي تطرحه قبل التسليم؟

حدد هل المطلوب توحيد ترتيب التسميات، أم تعويض قيم مفقودة داخل سجلات موجودة، أم العمليتان معًا. في حالتنا الأولى نراجع أن الناتج يتبع ب، ج، أ وأن قيمة أ لم تنتقل إلى تسمية أخرى. وفي الحالة الثانية يلزم قرار مستقل يبين كيف يعالج غياب ب.

كذلك تحقق من نوع العمود وقيمة الملء المتوافقة معه؛ مثال عددي بسيط لا يحدد سياسة أعمدة نصية أو فهرس مكرر. اكتب للمساعد الفرق بين الصف المستحدث والخانة الأصلية المفقودة، وراجع النتيجة بهذه القاعدة. هذه متابعة يدوية للبطاقة؛ لم نشغل pandas أو نقس أثر التعويض على نموذج.

المصادر ومتابعة القراءة

  1. pandas DataFrame reindex (يفتح في نافذة جديدة)pandas.pydata.org

أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.