تحليل البيانات / الأساسي: الأسئلة والجداول الموثوقة / الدرس 3
قواعد التنظيف والتحقق من البيانات
حوّل السجلات بقواعد مقصودة، واحفظ الدليل الخام، وميّز إصلاح التمثيل من تغيير الادعاء عن الواقع.
في هذه الصفحة
أهداف الدرس
- تصميم فحوص التحقق قبل تعديل القيم.
- توحيد الفئات بخريطة صريحة تحافظ على المجهول.
- تدقيق السجلات المرفوضة والقيم غير المعتادة.
التنظيف قرارات تحليلية وليس تجميلاً للخلايا
ليس التنظيف جعل الخلايا مرتبة ظاهرياً، بل تطبيق قواعد مبررة كي يمثل الجدول مفاهيمه باتساق. افصل إصلاح التمثيل الحتمي من الافتراض بشأن الواقع. قد يختلف حذف فراغ خارجي أُضيف عرضاً اختلافاً جوهرياً عن استبدال قياس غير معقول بقيمة عادية خُمّنت دون دليل.
احفظ الخام دون تعديل، واشتق الحقول المنظفة بقواعد مسماة أو ذات إصدارات. يتيح ذلك الرجوع والمقارنة إذا شُكك في القاعدة. سجل عدد المتأثرين بكل تحويل؛ فقد يعطي خط يغير سجلات كثيرة صامتاً رسماً سلساً بينما يمحو مشكلة تشغيل حقيقية كان ينبغي أن يكشفها التحليل.
وحّد الفئات دون إخفاء القيم غير المعروفة
يحذف البرنامج الأول الفراغات الخارجية ويوحد حالة الأحرف قبل المقارنة بمجموعة صغيرة من الفئات المسموحة. تبقى الرموز المجهولة مرفوضة بدلاً من تحويلها إلى افتراضي اعتباطي. يعرض الخرج الفئات المقبولة وعدد المرفوض. تصح القاعدة هنا لأن الحالة والفراغ الخارجي غير مؤثرين صراحة في تسميات الحالة المصطنعة.
لا تعمم التحويل نفسه على كلمات المرور أو معرفات حساسة لحالة الأحرف أو تسميات للفراغ فيها معنى. قد يدمج التطبيع فئات مختلفة. احتفظ بالرموز الأصلية وافحص جدول تكرار يربط الخام بالمنظف، حتى تستطيع اكتشاف قاعدة أوسع من اللازم بدلاً من الثقة بمظهر النتيجة فقط.
raw = [" Complete ", "CANCELLED", "mystery"]
allowed = {"complete", "cancelled"}
clean = []
rejected = []
for token in raw:
normalized = token.strip().casefold()
(clean if normalized in allowed else rejected).append(normalized)
print("accepted", ",".join(clean))
print("rejected", len(rejected))
accepted complete,cancelled
rejected 1
يتحول رمزان معروفان إلى الفئات الصحيحة، ويبقى mystery رمزاً مجهولاً مرفوضاً. يظهر الخرج عدد الرفض ولا يخفيه داخل افتراضي.
ارفض القيم غير الصالحة قبل الحساب
يتحقق البرنامج الثاني من حقل عد مطلوب وفق صياغة عدد صحيح ومدى محدد، ويسجل رقم صف المصدر عند الرفض. يميز الصفر المقبول من النص المفقود والمدخل خارج المجال، ولا يضيف إلى المجموع إلا القيم المتحققة. يعالج فشل التحليل على مستوى السجل المتوقع، ولا يبتلع استثناءات المجموعة كلها.
يجعل معرف الصف أو موضعه الخطأ قابلاً للمتابعة دون طباعة محتوى حساس. فضّل تقرير رفض منظم يضم القاعدة والموقع وعينة مضبوطة. وافصل فشل المخطط القاتل عن سياسة رفض الصف؛ فقد تجعل المتابعة بعد غياب عمود مطلوب كل نتيجة لاحقة بلا معنى تحليلي.
tokens = ["0", "12", "", "-1", "101"]
accepted = []
rejected = []
for row_number, token in enumerate(tokens, start=1):
if not token.isascii() or not token.isdecimal():
rejected.append(row_number)
continue
value = int(token)
if not 0 <= value <= 100:
rejected.append(row_number)
continue
accepted.append(value)
print("total", sum(accepted))
print("rejected rows", ",".join(map(str, rejected)))
total 12
rejected rows 3,4,5
يُقبل الصفر و12، وتفشل الصفوف 3 و4 و5 عقد العدد المطلوب غير السالب من 0 إلى 100. تعاد مواضع الرفض صراحة.
القيمة الغريبة تحتاج سؤالاً قبل استبعادها
قد تشير القيمة الشاذة إلى خطأ تسجيل أو اختلاف وحدة أو حدث نادر صحيح أو مجتمع مؤلف من مجموعات مختلفة. يستطيع حد عددي تعليم السجلات للمراجعة، لكن حذف كل معلم يغير البيانات وقد يسبب انحيازاً. افحص المصدر والوحدات والمجتمع المقصود قبل تقرير التصحيح أو الاستبعاد.
إذا استبعد تحليل حساسية مجموعة معلّمة، فاعرض النتيجة الأصلية والبديلة مع قاعدة الاستبعاد. لا تختر حداً لمجرد أنه ينتج الاستنتاج المفضل. تستطيع الملخصات المتينة تقليل التأثر بالقيم المتطرفة مع إبقاء المشاهدات متاحة للفحص، دون الادعاء أن عدم تأثيرها الكبير يثبت صحتها أو بطلانها.
اختبر التنظيف بالثوابت والمطابقة
تشمل الفحوص المفيدة أن يساوي المقبول مع المرفوض عدد المدخل، وأن تبقى المفاتيح المطلوبة فريدة، والفئات ضمن القاموس، والقيم داخل مجالها. إذا كانت قاعدة تمثيل متكررة بلا أثر إضافي، فينبغي أن تعطي النتيجة نفسها عند إعادتها؛ ولا يعني ذلك تكرار كل تحويل تحليلي عمياناً.
اكتب حالات صغيرة للفراغ وتنوع Unicode والحدود الدقيقة والمعرفات المكررة والوحدات المختلطة. قارن التوزيعات ونسب الاحتفاظ بالفئات قبل التنظيف وبعده. إن زاد رفض فئة على غيرها فحقق فيه، ولا تخف الفرق في نسبة جودة كلية واحدة. التنظيف جزء ظاهر من التحليل وليس إعداداً غير مرئي.
الأخطاء الشائعة وإصلاحها
تحولت تسمية مجهولة إلى سجل مكتمل.
- لماذا يحدث؟
- أخفت الفئة الافتراضية فشل مطابقة الرمز مع القاموس.
- كيف تصلحه؟
- أبق المجهول ظاهراً، وافحص الخام قبل توسيع خريطة الفئات.
- كيف تتجنب تكراره؟
- اختبر رمزاً غير موجود في خريطة السماح.
أصبح كل فشل في التحليل صفراً.
- لماذا يحدث؟
- اختلطت البيانات غير الصالحة بقياس الصفر المشروع.
- كيف تصلحه؟
- سجل الرفض أو الغياب وفق سياسة معلنة بدلاً من اختراع قيمة.
- كيف تتجنب تكراره؟
- اختبر الصفر والفراغ والنص التالف منفصلة.
حسّن حذف الشواذ الرسم دون تفسير.
- لماذا يحدث؟
- استُبدلت قاعدة البيانات بتفضيل شكل أو استنتاج مرغوب.
- كيف تصلحه؟
- افحص المصدر واعرض حساسية النتيجة وفق معيار صريح.
- كيف تتجنب تكراره؟
- احفظ المشاهدات الخام وأسباب كل استبعاد.
اختبر فهمك
1. يحول منظف الحالة كل رمز غير معروف إلى active. ما الضرر وكيف تصلحه؟
اعرض الحل المشروح
يحوّل الشك أو خطأ المصدر إلى نشاط موجب ويغير البسط والمقام. أبق حالة مستقلة للمجهول أو المرفوض، وعد السجلات المتأثرة وافحص رموزها الأصلية. حدّث خريطة مراجعة بدليل فقط، واعرض أثر الاحتفاظ بالمجهول أو استبعاده بدلاً من اختيار النسخة المواتية صامتاً.
2. اذكر ثلاثة فحوص لقاعدة تحول الكيلوغرام إلى غرام.
اعرض الحل المشروح
اشترط وحدة مصدر معروفة لا مستنتجة من الحجم، واضرب في 1000 بسياسة دقة موثقة، وطابق أعداد المدخل والمقبول والمرفوض. احفظ الخام والوحدة. اختبر الصفر وكسراً عادياً ورمزاً تالفاً وصفاً موسوماً بالغرام أصلاً، حتى لا يتعرض للتحويل مرة ثانية.
أهم ما تعلمته
- تغير قواعد التنظيف الدليل، لذلك تُسمى وتوثق آثارها وتُراجع.
- المجهول وغير الصالح والمفقود والصفر حالات مختلفة لا بدائل متكافئة.
- تُبرر مراجعة الشاذ وتحليل الحساسية أكثر من حذف تلقائي بلا دليل.