pandas / المتوسط: التجميع والدمج والجودة الزمنية / الدرس 11
النصوص والفئات وعقود النص
تطبيع النص وفق قاعدة هوية معلنة فقط وتمييز تمثيل النص من معنى الفئة وترتيبها.
في هذه الصفحة
أهداف الدرس
- شرح نوع النص وفقده والمطابقة الحرفية مقابل regex.
- مراجعة عضوية الفئات وترتيبها وثبات رموزها.
قد يدمج التطبيع هويات عمل مختلفة
قد يصلح قص الفراغات أو توحيد حالة أسماء المستودعات اتفاق مصدر موثقاً، لكنه قد يدمج معرفات حساسة للحروف. حدد هل الحقل تسمية عرض أو نص حر أو مفتاح ثابت قبل التطبيع. احفظ القيم الأصلية عندما تحتاج التغييرات تدقيقاً أو مراجعة. يجيب تطبيع Unicode وتوحيد الحالة سؤالاً مختلفاً عن حذف الترقيم أو نقل النص العربي صوتياً. لا تخترع سلسلة تنظيف عامة. تحقق من المجال المسموح بعد التطبيع، وحقق في التصادم بدلاً من حفظ أول صف يظهر بالمصدر بصمت.
يظل نوع النص وسياسة فقده صريحين
منذ pandas 3.0، يستخدم النص المستنتج غالباً str المخصص، بينما يستخدم string الصريح افتراضياً سلوك pd.NA القابل للفقد. يحفظ أساس 3.1 الفرق، وقد يحوي object كائنات Python اعتباطية مختلطة. اختر التمثيل والخلفية الاختيارية عمداً، ولا تستنتج النوع من الطباعة. تحفظ عمليات .str كثيرة المفقود، بينما تعتمد النتيجة المنطقية ومعالجة الفقد الافتراضية النوع والطريقة. إذا وجب استبعاد وصف مفقود من بحث، فوضح السياسة بـna الموثقة أو بخطوة فقد صريحة، لا بافتراضي قد يتغير.
مطابقة علامة ترقيم حرفية عمداً
تضم Series التوضيحية A.1 وA1 ومفقوداً بنوع string صريح. تطابق str.contains مع regex=False وna=False للنقطة الحرفية القيمة الأولى فقط، لأن النقطة حرفية واستبعاد المفقود مقصود. مع regex=True يصبح للنقطة معنى نمط مختلف وقد تطابق أحرف النصين غير المفقودين. القناع المتوقع مشتق لا منفذ. يجب أن يتبع التهريب وأعلام regex لغة البحث المقصودة، لا تعبيراً أعطى العدد المطلوب مرة. تحقق من هويات المطابق، وأدرج الترقيم والنص غير اللاتيني والمفقود في عقد البحث.
import pandas as pd
labels = pd.Series(['A.1', 'A1', None], dtype='string')
matched = labels.str.contains('.', regex=False, na=False)
assert matched.tolist() == [True, False, False]
print(matched.tolist())
[True, False, False]
يختار القناع المتوقع A.1 فقط؛ يعطل regex ويستبعد المفقود، ولم تشغل pandas.
ترمز الفئات مجالاً لا معرفات عددية دائمة
قد يصف نوع الفئات مجالاً محدوداً، مثل new وpacked وsent. تستخدم الفئات المرتبة ترتيبها المعلن لا المعجمي، مما يهم الفرز والمقارنة. الرموز الداخلية تفاصيل تمثيل وقد تتغير عند إعادة ترتيب الفئات أو جمعها؛ فلا تصدرها هوية حالة دائمة دون خريطة صريحة. قد ينشئ تحويل خارج المجال مفقوداً، فتحقق من العضوية قبله. يحتاج تجميع مفاتيح فئات observed صريحة أيضاً. يعتمد توفير الذاكرة تعددية القيم وكلفة الخلفية، لا وعداً أن category يستخدم ذاكرة أقل دائماً.
فحص قاعدة تطبيع معلنة محلياً
يقص النموذج القياسي الفراغات ويسوي حالة تسميتي عرض اصطناعيتين بعقد يصرح بأن الحالة والفراغ المحيط لا يهمان. تصبحان depot a، فيظهر تصادم يقبل وفق ذلك العقد فقط. لا يحاكي مصفوفات نص pandas أو خلفيات regex أو الأقنعة القابلة للفقد أو الفئات. قارن تفرد الأصل والمطبع واحفظ تقرير التصادم في مراجعة مفتاح حقيقي. ينفذ الدرس قاعدة النص العادي فقط؛ وتبقى النصوص والفئات في pandas غير منفذة، دون تثبيت Arrow أو امتداد regex أو استعمال بيانات خارجية.
labels = [' Depot A ', 'DEPOT A']
normalized = [label.strip().casefold() for label in labels]
assert normalized == ['depot a', 'depot a']
assert len(set(normalized)) == 1
print(normalized)
['depot a', 'depot a']
يظهر التصادم ويقبل وفق قاعدة العرض المعلنة فقط؛ ولا ينمذج سلوك pandas.
الأخطاء الشائعة وإصلاحها
مطابقة بحث النقطة الحرفية معظم القيم غير الفارغة.
- لماذا يحدث؟
- تفسير النمط regex لا نصاً حرفياً.
- كيف تصلحه؟
- اختر regex=False للحرفي أو هرب النمط المقصود.
- كيف تتجنب تكراره؟
- اختبر الترقيم والأمثلة السلبية صراحة.
دمج التطبيع مفتاحي صنف مختلفين.
- لماذا يحدث؟
- تطبيق قاعدة عرض على هوية حساسة للحروف.
- كيف تصلحه؟
- استعد الأصل وحدد قاعدة هوية معتمدة.
- كيف تتجنب تكراره؟
- قارن التفرد والتصادم قبل التطبيع وبعده.
اعتبار رموز الفئات هويات حالة خارجية ثابتة.
- لماذا يحدث؟
- الخلط بين الترميز الداخلي وخريطة العمل.
- كيف تصلحه؟
- صدر التسميات أو خريطة صريحة مستقلة بإصدار.
- كيف تتجنب تكراره؟
- اختبر إعادة ترتيب الفئات والعضوية المجهولة.
اختبر فهمك
1. هل يثبت تحويل الحالة إلى category صلاحية كل حالة مصدر؟
اعرض الحل المشروح
لا؛ قد تصبح القيم خارج المجموعة مفقودة. تحقق من العضوية وعد المفقود المستحدث قبل القبول. ليس التمثيل المختصر شهادة جودة، ولا تستبدل الرموز الداخلية هويات المجال الثابتة دون خريطة مستقلة.
2. لماذا يقبل تصادم التطبيع في المثال ولا يقبل تلقائياً لمعرفات الأصناف؟
اعرض الحل المشروح
يعلن المثال تكافؤ شكلي تسمية عرض. قد تكون هوية الصنف حساسة للحروف أو الأحرف المحيطة بعقد آخر. حدد المعنى واحفظ الأصل وحقق التصادم، ولا تطبق تنظيفاً عاماً على كل عمود.
أهم ما تعلمته
- يجب أن تتبع المطابقة والتطبيع معنى الحقل.
- العضوية والترتيب والرموز الداخلية اعتبارات منفصلة.