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

pandas / الأساسي: التسميات والأنواع والمدخل المقبول / الدرس 2

الاختيار وloc وiloc والمحاذاة

اختيار التسميات أو المواضع عمداً وتوقع محاذاة المعاملات قبل الحساب أو الإسناد.

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

أهداف الدرس

  • تمييز اختيار تسميات loc من اختيار مواضع iloc.
  • شرح المحاذاة التلقائية للتسميات والنتائج المعتمدة على الفهرس.

ليست التسمية الصحيحة موضعاً بالضرورة

تفسر loc تسميات الفهرس، بينما تفسر iloc المواضع الصحيحة. مع تسميات عشرة وعشرين وثلاثين، تختار loc[20] الصف المسمى عشرين، وتختار iloc[1] الصف الثاني. يتطابق الصف في هذه البيانات مصادفة، لكن الواجهتين تعبران عن عقدين مختلفين. تشمل شرائح التسميات الطرفين الموجودين عادة وفق الشروط الموثقة، وتستبعد شرائح المواضع النهاية كـPython. تختلف أيضاً أخطاء التسمية الغائبة والموضع المفرد خارج النطاق. وضح ترتيب الفهرس وتفرد تسمياته عند التقطيع؛ ولا تعمم نتيجة ملائمة لفهرس متزايد فريد على كل بنية فهرس ممكنة.

مقارنة شريحتين صريحتين

يستخدم مثال pandas غير المنفذ فهرساً صحيحاً فريداً متزايداً. تشمل loc[10:20] تسميتي عشرة وعشرين، وتشمل iloc[0:2] الموضعين صفر وواحد. تحتوي النتيجتان صفين لأن الحدود اختيرت لتتوافق، لا لأن الواجهتين قابلتان للتبادل. يغير ترتيب الإطار معنى المواضع، بينما تبقى التسميات مرتبطة بهوياتها. استخدم محددي صف وعمود صريحين عند شرح التحويل أو مراجعته. فقد تختار الأقواس العادية عموداً أو قناعاً أو سلوكاً آخر بحسب الكائن؛ لذلك لا تجعل فهم القصد معتمداً على تخمين القارئ لمعنى عدد منفرد.

python مقارنة توضيحية لشريحة تسمية وموضع
import pandas as pd

frame = pd.DataFrame({'units': [2, 3, 4]}, index=[10, 20, 30])
assert frame.loc[10:20].index.tolist() == [10, 20]
assert frame.iloc[0:2].index.tolist() == [10, 20]
print(frame.loc[10:20].index.tolist())
الناتج المتوقع
[10, 20]

الناتج المتوقع [10,20] وفق الفهرس الفريد المتزايد؛ ولم تنفذ pandas.

يطابق الحساب التسميات لا ترتيب الصفوف المرئي

يحاذي pandas فهارس Series في عمليات مسماة كثيرة. لا تضيف Series في اليمين مرتبة B ثم A قيمتها الأولى ببساطة إلى أول صف مرئي A في اليسار. قد تمنع مطابقة التسميات خطأ موضعياً، لكن تسميات غير متوقعة قد تنشئ نتائج مفقودة أو فهرس محاذاة أكبر. ويحاذي إسناد Series إلى عمود التسميات وفق عقده الموثق. يغير التحويل إلى مصفوفة بلا تسميات هذه العلاقة عمداً، ولا يكون آمناً إلا بعد إثبات التقابل الموضعي. افحص المفاتيح والترتيب المتوقعين، ولا تنزع التسميات لمجرد إخفاء مفاجأة محاذاة.

نمذجة مطابقة المفتاح المقصودة باستقلال

تحسب قواميس المكتبة القياسية A=12 وB=23 عبر بحث المفتاح، رغم إعلان القاموس الأيمن بترتيب معاكس. ينمذج ذلك مطابقة مفتاح عمل مختارة فقط، لا تعامل pandas مع الفهارس المكررة أو انتشار المفقود أو البث. يمكن استخدام النتيجة المتوقعة لمراجعة التعبير المسمى مستقلة عن تنسيق العرض. أضف بيانات مفتاح مفقود قبل الادعاء بكمال عقد المدخلات. في خط فعلي، قد يستلزم معرف جديد غير متوقع رفضاً أو مصالحة، لا قبول محاذاة خارجية بصمت تغير المجتمع الذي يحسب عليه الإحصاء.

python عقد حساب محلي بمطابقة المفاتيح
left = {'A': 10, 'B': 20}
right = {'B': 3, 'A': 2}
matched = {key: value + right[key] for key, value in left.items()}
assert matched == {'A': 12, 'B': 23}
print(matched)
الناتج المتوقع
{'A': 12, 'B': 23}

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

فحص المجتمع المختار قبل الحساب

حدد في مراجعة الاختيار التسميات والشكل المتوقعين، وما إذا سمح بتكرار التسميات أو فقد قيم القناع. قناع Boolean من نوع Series مسمى بدوره، وقد تختلف محاذاته عن مصفوفة منطقية غير مسماة؛ فاتبع قواعد الواجهة المختارة الموثقة. في أساس 3.1، تعني Copy-on-Write استقلال الكائن المختار عند التعديل؛ لذلك لا يعد الاختيار بتحديث الأصل عند تعديل لاحق. لا ينفذ الدرس اختيار pandas أو محاذاته. نموذج القاموس مسمى مستقلاً، وتظل الأجزاء الحقيقية توضيحية بنتائج مشتقة، لا مشاهدات محرك مختلقة.

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

إثارة loc[1] لـKeyError على فهرس يبدأ بعشرة.

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

إلحاق قيم بكيانات خاطئة بعد نزع التسميات وإعادة الترتيب.

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

ظهور قيم مفقودة غير متوقعة بعد الحساب.

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

اختبر فهمك

1. إذا أعيد ترتيب الإطار، فهل يجب أن تظل iloc[0] تعرف الصنف A؟

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

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

2. لماذا قد يكون نزع التسميات للحصول على نتيجة عددية مريحة غير آمن تحليلياً؟

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

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

أهم ما تعلمته

  • التسميات والمواضع عقدا اختيار مختلفان.
  • تؤثر المحاذاة في مجتمع الحساب ومعناه.

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