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

pandas / المتوسط: التجميع والدمج والجودة الزمنية / الدرس 7

تجميع GroupBy والتحويل

اختيار وحدة الناتج وسياسة المفتاح المفقود والمقام قبل تلخيص المجموعات أو نشر نتائجها على الصفوف.

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

أهداف الدرس

  • تمييز التجميع وtransform وتصفية المجموعات.
  • شرح الفرق بين size وcount، وسياسة مفاتيح التجميع المفقودة، وخيار observed عند التجميع بمفاتيح فئوية.

يغير التجميع معنى الصف

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

عد الصفوف والقيم المرصودة منفصلين

تعد size صفوف المجموعة، وتستبعد count القيم المفقودة من المقياس المختار. لذلك يختلف مقام الصفوف عن مقام المرصود لمستودع له صفان وكمية مجهولة. قد تستبعد مفاتيح التجميع المفقودة وفق dropna الافتراضية؛ فاخترها صراحة عندما تهم التغطية. يعتمد تجميع الفئات أيضاً observed، التي تضبط الفئات غير المرصودة وقد تغير افتراضيها في pandas 3.0. حدد الاختيار المقصود، ولا ترث افتراضياً متذكراً من إصدار. لا يفرز ترتيب المجموعات الملاحظات داخل كل مجموعة لحسابات الزمن؛ بل يجب تعريف ذلك الترتيب مستقلاً.

إظهار العدين في ملخص مسمى

يحوي الإطار التوضيحي مستودع A مرتين بكمية معلومة وأخرى مفقودة، وB مرة. ينتج التجميع المسمى عمودي rows وknown، فيبلغ A عن صفي مصدر وقيمة كمية مرصودة واحدة. توضح sort وdropna وobserved النطاق، رغم خلو البيانات الصغيرة من مفتاح مستودع مفقود أو نوع فئات. التأكيدات مشتقة وليست منفذة. تقلل أسماء المخرجات غموض حساب إحصاءات متعددة من عمود واحد. أدرج الوحدات ومعنى المقام في تسميات التقرير، بدلاً من رقم غير مسمى قد يظنه القارئ شاملاً كل الملاحظات.

python تجميع توضيحي لعدد الصفوف مقابل المرصود
import pandas as pd

frame = pd.DataFrame({'depot': ['A', 'A', 'B'], 'units': pd.Series([1, None, 3], dtype='Int64')})
summary = frame.groupby('depot', sort=True, dropna=False, observed=True).agg(rows=('units', 'size'), known=('units', 'count'))
assert summary.loc['A', 'rows'] == 2
assert summary.loc['A', 'known'] == 1
print(summary['rows'].to_dict())
الناتج المتوقع
{'A': 2, 'B': 1}

المتوقع صفان لـA وواحد لـB، ولـA كمية معلومة واحدة؛ ولم تنفذ pandas.

فحص قاعدة التجميع بسجلات عادية

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

python عقد مقام مجموعة محلي
rows = [('A', 1), ('A', None), ('B', 3)]
summary = {}
for depot, units in rows:
    entry = summary.setdefault(depot, {'rows': 0, 'known': 0})
    entry['rows'] += 1
    entry['known'] += units is not None
assert summary['A'] == {'rows': 2, 'known': 1}
print(summary['A'])
الناتج المتوقع
{'rows': 2, 'known': 1}

لمجموعة A سجلان وقيمة مرصودة واحدة؛ ولا تحاكى آليات تجميع pandas.

استخدام عمليات مدمجة بتوقع شكل صريح

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

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

تقديم count كعدد جميع صفوف المصدر.

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

اختفاء صفوف بمستودع مفقود من الإجماليات.

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

اختلاف متوسط متوسطات المستودعات عن المتوسط العام.

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

اختبر فهمك

1. لدى A قيمة 1 وأخرى مفقودة؛ هل ينبغي أن تكون size وcount اثنتين؟

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

لا؛ تعد size الصفين وcount القيمة المرصودة الوحيدة في units. يهم الفرق للاكتمال ومقام المتوسط. ولا يثبت أيهما المخزون الفعلي وحده، إذ تحدد وحدة الصف ومعنى الفقد تمثيل المصدر.

2. متى تنظر في transform بدلاً من ملخص يتبعه merge؟

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

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

أهم ما تعلمته

  • للتجميع والتحويل والتصفية عقود ناتج مختلفة.
  • يجب أن تكون المفاتيح والفئات والمقامات صريحة.

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