pandas / الأساسي: التسميات والأنواع والمدخل المقبول / الدرس 3
أنواع البيانات والقيم القابلة للفقد والمفقود
اختيار تمثيل يحفظ المعنى وفصل الملاحظة المفقودة عن الصفر والنص الفارغ والمدخل غير الصالح.
في هذه الصفحة
أهداف الدرس
- شرح الأنواع القابلة للفقد والقيم الدالة على المفقود بحسب النوع.
- تصميم سياسات صريحة للمفقود والتجميع.
يحمل النوع أكثر من حجم التخزين
يحدد dtype التمثيل ويؤثر الحساب والمقارنة والمفقود والتحويل. قد تستخدم وحدات المخزون Int64 قابلاً للفقد حين يجهل العدد؛ أما تحويل المفقود لصفر فيقرر حقيقة تجارية. تختلف أنواع NumPy الصحيحة وInt64 في pandas والنصوص، فتهم حالة الحروف. قد يظل عمود يبدو عددياً نصوصاً أو كائنات مختلطة بعد الاستيراد. افحص النوع المقصود وتحقق منه لا العرض وحده. احفظ معرفاً مثل 0017 نصاً حين تهم الأصفار؛ فالتحويل لصحيح يغير الهوية ولا يحسن الجودة.
كشف المفقود عبر الواجهة العامة
يستخدم pandas قيماً دالة بحسب النوع، مثل NaN وNaT وpd.NA. تعبر isna وnotna عن الفقد دون افتراض أن القيمة الدالة على المفقود تساوي نفسها. ليست السلسلة الفارغة أو كلمة unknown أو الصفر الحقيقة المفقودة نفسها تلقائياً. يستخدم النوع الصريح string قيمة pd.NA افتراضياً، بينما يستخدم str المستنتج منذ 3.0 دلالات NaN؛ وقد تؤثر الخلفية في التمثيل. قد تحافظ العمليات المنطقية القابلة للفقد على نتيجة مجهولة، ويكون تحويل pd.NA مباشرة إلى قيمة منطقية مفردة ملتبساً. حدد صراحة كيف تدخل الحالات المجهولة في مرشح البيانات، ولا تعاملها بصمت كملاحظات عمل ثبت أنها خاطئة.
قراءة برنامج عد قابل للفقد مقصود
ينشئ البرنامج واحداً ومفقوداً وثلاثة بنوع Int64. تحدد isna الأوسط فقط، وتنتج fillna(0) نسخة مقارنة معلنة بصفر في موضعه. لا يدعي المثال صحة التعويض تجارياً؛ بل يوضح نتيجته الآلية. تتجاوز تجميعات كثيرة المفقود وفق الافتراضيات، فقد يوجد مجموع مع مدخلات مجهولة. تحتاج حالة كل المدخلات مفقودة وصفر مرصود معالجة مختلفة، ومنها min_count المناسب حيث يدعم. التأكيدات المتوقعة مشتقة ولم تنفذ ضد pandas.
import pandas as pd
counts = pd.Series([1, None, 3], dtype='Int64')
assert counts.isna().tolist() == [False, True, False]
assert counts.fillna(0).tolist() == [1, 0, 3]
print(counts.isna().tolist())
[False, True, False]
يتوقع الفقد في الوسط فقط؛ وتوضح fillna اختيار سياسة ولا تقر صحة التعويض بصفر.
إظهار المقام في حساب محلي
يحسب النموذج القياسي متوسط القيمتين المرصودتين ويبلغ عن ملاحظة مفقودة مستقلة. النتيجة اثنان متوسط المرصود، لا تقدير مجتمع كامل ولا متوسط بعد تعويض صفر. يوضح المقام الفرق للمراجعة. قد يعني المفقود عدم الإتاحة أو عدم الانطباق أو الحجب أو فشل التحليل، وتحتاج الأسباب معالجات مختلفة رغم استخدام قيمة دالة واحدة لتمثيلها. احفظ أعلام الجودة عند أهميتها. لا تحول نصاً فاسداً لمفقود ثم تسقطه من المتوسط دون محاسبة تغير المجتمع.
values = [1, None, 3]
observed = [value for value in values if value is not None]
missing_count = len(values) - len(observed)
assert sum(observed) / len(observed) == 2
assert missing_count == 1
print(sum(observed) / len(observed), missing_count)
2.0 1
متوسط المرصود 2.0 مع مدخل مفقود؛ ولا ينفذ حساب pandas القابل للفقد.
اعتبار التحويل والتعويض قرارين منفصلين
يتحقق الخط المتين من أشكال المصدر المسموحة، ثم يحول للنوع، ثم يطبق سياسة مفقود موثقة. تعني errors=coerce تمثيل فشل التحويل بمفقود، لا إثبات نظافة المصدر. تتبع المفقود المستحدث وقارنه بالمفقود المعروف. اختبر صفراً صالحاً وعدداً غائباً ونصاً فاسداً ومجموعة كلها مفقودة. ينفذ الدرس نموذج المقام العادي فقط. تبقى التحويلات والحسابات القابلة للفقد وتمثيل الخلفية والأقنعة توضيحات غير منفذة مرتبطة بالدلالات الرسمية المختارة.
الأخطاء الشائعة وإصلاحها
ملء الوحدات المجهولة بصفر بصمت.
- لماذا يحدث؟
- الخلط بين المفقود وغياب مخزون مرصود.
- كيف تصلحه؟
- حدد سياسة الفقد التجارية واحفظ عدم اليقين عند الحاجة.
- كيف تتجنب تكراره؟
- اختبر الصفر الصالح والمجهول ببيانات مختلفة.
boolean value of NA is ambiguous
- لماذا يحدث؟
- إجبار قيمة مجهولة قابلة للفقد على التحول إلى قيمة منطقية مفردة.
- كيف تصلحه؟
- استخدم فحص فقد صريحاً وسياسة منطقية مراجعة.
- كيف تتجنب تكراره؟
- أدرج الشروط المجهولة في قبول التصفية.
إنشاء التحويل مفقوداً يختفي من الملخصات.
- لماذا يحدث؟
- عدم تتبع فشل التحويل ومقامات التجميع.
- كيف تصلحه؟
- احسب الفاسد والمفقود المستحدث وصالح مجتمع التحليل.
- كيف تتجنب تكراره؟
- تحقق من المصدر قبل التعويض أو إسقاط الصفوف.
اختبر فهمك
1. هل متوسط القيمتين المرصودتين 1 و3 مع قيمة مفقودة متوسط المجتمع كله بالضرورة؟
اعرض الحل المشروح
لا؛ اثنان متوسط الجزء المرصود. قد تغير المفقودة المتوسط الكامل، ويجيب تعويضها بصفر عن سؤال آخر. أبلغ عن عدد المرصود والمفقود والسياسة كي يقيّم القارئ التغطية، ولا يعتبر رقماً واحداً دليلاً كاملاً.
2. لماذا لا ينبغي افتراض أن نوع str المستنتج ونوع string المطلوب صراحة يستخدمان القيمة الدالة على المفقود نفسها؟
اعرض الحل المشروح
يميز انتقال 3.0 عمداً دلالات NaN في str المستنتج من StringDtype الصريح الافتراضي الذي يستخدم pd.NA. استخدم isna وراجع النوع والخلفية بدقة. لا ترحل باختبار أن العمود المعروض يبدو نصياً فقط.
أهم ما تعلمته
- التمثيل والمفقود والتعويض التجاري عقود منفصلة.
- يحتاج كل ملخص مجتمعاً ومقاماً صريحين.