محتويات الدورة

pandas / المتقدم: الملكية والنوافذ والقبول التحليلي / الدرس 15

MultiIndex والمحاذاة والمقاطع

تمثيل الهوية المركبة دون فقد معنى المستويات أو التفرد أو نطاق الاختيار.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • شرح هوية tuple الكاملة وأسماء المستويات والاختيار الجزئي.
  • مراجعة الترتيب والمحاذاة وتصادم التسطيح عمداً.

يسهم كل مستوى في معنى المفتاح

قد تستخدم ملاحظة مستودع وصنف فهرس مستويين، لتظل أسماء الصنف المتكررة بين المستودعات مختلفة. يخص التفرد tuple كاملة لا أي مستوى وحده، ويستطيع pandas تمثيل تسميات كاملة مكررة ما لم يرفضها العقد. سم المستويات كي تشير العمليات لمعناها. لا يجعل MultiIndex إطاراً ثنائي البعد أعلى بعداً فيزيائياً؛ بل يمثل عدة أبعاد تسمية على محور. احفظ وحدة الصف عند stack أو unstack التي تنقل مستوى للأعمدة، لأن ذلك يغير مخطط الناتج وعقد اختياره.

اختيار مستودع بمستوى صريح

يضع الإطار التوضيحي depot وitem مستويين ويرتب الفهرس. يعطي اختيار tuple D1/I2 ثلاث وحدات، وتعيد xs على depot=D1 صفي الصنف وفق سلوك إسقاط المستوى الافتراضي. تهم البنية المختزلة المحاذاة التالية. إذا احتاج المستدعي إبقاء المستوى، فاختر drop_level المدعومة عمداً. تصف التأكيدات سلوكاً متوقعاً ولم تختبر بالمحرك. لا تفترض إبقاء كل اختيار جزئي المحاور نفسها؛ سجل أسماء المستويات وشكل الناتج بعناية القيم المختارة نفسها.

python مفتاح كامل ومقطع توضيحيان
import pandas as pd

frame = pd.DataFrame({'depot': ['D1', 'D1', 'D2'], 'item': ['I1', 'I2', 'I1'], 'units': [2, 3, 4]}).set_index(['depot', 'item']).sort_index()
assert frame.index.is_unique
assert frame.loc[('D1', 'I2'), 'units'] == 3
section = frame.xs('D1', level='depot')
assert section.index.name == 'item'
assert section['units'].tolist() == [2, 3]
print(section['units'].tolist())
الناتج المتوقع
[2, 3]

المتوقع وحدتا D1 [2,3] وبقاء مستوى item؛ ولم تنفذ pandas.

للتقطيع المرتب ومحاذاة المستويات شروط

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

قد يدمج فاصل tuples مختلفة

يحوي المثال القياسي (D1,I/2) و(D1/I,2). ينتج جمع المكونات بشرطة مائلة النص D1/I/2 لكليهما رغم اختلاف tuple. يوضح تصادم ترميز لا خطأ pandas. يحتاج التصدير المسطح تهريباً أو تمثيلاً منظماً أو أعمدة مستقلة بمخطط صريح. لا تفترض أن فاصلاً غائباً عن عينة اليوم غائب عن مجال المعرفات المسموح. احفظ الأنواع والنص حين قد تختلف تسمية عددية ونصية. اختبر قابلية العكس في الاتجاهين مع الحدود والقيم المحتوية على الفاصل.

python تصادم ترميز مفتاح مركب محلي
keys = [('D1', 'I/2'), ('D1/I', '2')]
flattened = ['/'.join(key) for key in keys]
assert len(set(keys)) == 2
assert len(set(flattened)) == 1
print(len(set(keys)), len(set(flattened)))
الناتج المتوقع
2 1

ينهار tuple مختلفان عند جمع غير آمن بشرطة مائلة؛ ولا يحاكى فهرس pandas.

التحقق من المفاتيح والبنية عبر التحويل

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

الأخطاء الشائعة وإصلاحها

جمع مقطع جزئي كأن كل مستويات الأصل باقية.

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

تحول مفاتيح مركبة مختلفة إلى نص تصدير واحد.

لماذا يحدث؟
عدم قابلية تسطيح الفاصل للعكس.
كيف تصلحه؟
استخدم أعمدة منظمة أو ترميزاً مهرباً مراجعاً.
كيف تتجنب تكراره؟
اختبر مفاتيح تحوي فواصل وأنواعاً مختلطة.

فشل شريحة مدى على MultiIndex غير مرتب بما يكفي.

لماذا يحدث؟
إهمال متطلبات ترتيب المدى.
كيف تصلحه؟
راجع عقد الشريحة ورتب المستويات المناسبة.
كيف تتجنب تكراره؟
أدرج ترتيباً هرمياً ممثلاً في البيانات.

اختبر فهمك

1. هل يخالف تكرار I1 في D1 وD2 تفرد المفتاح الكامل بالضرورة؟

اعرض الحل المشروح

لا؛ تختلف tuples المستودع والصنف، فيجوز تكرار مستوى واحد. تحقق من المفتاح الكامل ووحدة الصف، ولا تطلب تفرد كل مستوى. تكرار tuple كاملة حالة أخرى تتبع سياسة المصدر الصريحة.

2. لماذا لا يثبت نجاح تصدير بشرطة مائلة اليوم أمان ترميز المفتاح؟

اعرض الحل المشروح

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

أهم ما تعلمته

  • تشمل الهوية المركبة tuples كاملة والأسماء ومعنى النوع.
  • قد يغير الاختيار والتسطيح البنية رغم ثبات القيم ظاهرياً.

المراجع الرسمية