Pandas & NumPy Academy · درس

دوال التجميع

احسب المجموع والمتوسط والقيمة الصغرى والقيمة العظمى والانحراف المعياري على مصفوفة كاملة أو على محور محدد.

الدرس 2 من 413 خطوة

دوال التجميع درس مجاني في Pandas & NumPy Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Pandas & NumPy Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Pandas & NumPy Academy 4 دروس في المجموع.

ما هي التجميعات؟

تختزل التجميعات المصفوفة إلى بضع قيم تلخيصية، مثل المجموع أو المتوسط. تنفّذ الدوال المضمّنة في NumPy ذلك بلغة C بسرعة، من دون الحاجة إلى حلقات.

import numpy as np

a = np.array([3, 7, 2, 9, 1, 6])
print('sum:', a.sum())     # 28
print('mean:', a.mean())   # 4.666...
print('max:', a.max())     # 9

sum() و cumsum()

استخدم a.sum() لحساب مجموع كل العناصر، وnp.cumsum لحساب المجموع التراكمي — إذ يحتوي كل موضع على مجموع كل القيم التي تسبقه أو تقع فيه.

import numpy as np

a = np.array([1, 2, 3, 4, 5])
print(a.sum())       # 15
print(np.cumsum(a))  # [ 1  3  6 10 15]

mean() و std()

تعطي a.mean() المتوسط، بينما تعطي a.std() الانحراف المعياري. وبالإعداد الافتراضي، تقسم std على N؛ مرّر ddof=1 عندما تكون بياناتك عيّنة.

import numpy as np

a = np.array([2.0, 4.0, 4.0, 4.0, 5.0, 5.0, 7.0, 9.0])
print('mean:', a.mean())           # 5.0
print('std (pop):', a.std())       # 2.0
print('std (sample):', a.std(ddof=1))  # 2.138...

min() و max() مع argmin/argmax

تعطي a.min() و a.max() أصغر القيم وأكبرها. هل تريد مواضعها بدلًا من ذلك؟ تعيد argmin و argmax فهرس كل قيمة.

import numpy as np

a = np.array([3, 7, 2, 9, 1, 6])
print('min:', a.min(), 'at index', a.argmin())  # 1 at 4
print('max:', a.max(), 'at index', a.argmax())  # 9 at 3

التجميع على محور

تحدّد وسيطة axis البُعد الذي تريد اختزاله: يعطي axis=0 قيمة واحدة لكل عمود، ويعطي axis=1 قيمة واحدة لكل صف. إذا حذفتها، فسيُختزل كامل المصفوفة.

import numpy as np

m = np.array([[1, 2, 3],
              [4, 5, 6]])

print(m.sum(axis=0))  # [5 7 9]  -- column sums
print(m.sum(axis=1))  # [ 6 15]  -- row sums
print(m.mean(axis=0)) # [2.5 3.5 4.5]

keepdims=True للحفاظ على الشكل

يُسقط التجميع على محور ذلك البُعد. أضف keepdims=True للإبقاء عليه بحجم 1 — وهذا ضروري عندما تريد إجراء broadcasting للنتيجة لاحقًا.

import numpy as np

m = np.array([[1, 2, 3],
              [4, 5, 6]])

row_sums = m.sum(axis=1, keepdims=True)
print(row_sums.shape)  # (2, 1)

normed = m / row_sums
print(normed.round(3))
# [[0.167 0.333 0.5  ]
#  [0.267 0.333 0.4  ]]

تجميعات آمنة مع NaN

تجعل قيمة NaN واحدة المجموع أو المتوسط العادي يعيد NaN. أما الإصدارات الآمنة مع NaN — مثل np.nansum و np.nanmean وغيرها — فتتجاهل القيم المفقودة ببساطة.

import numpy as np

a = np.array([1.0, np.nan, 3.0, np.nan, 5.0])
print(a.sum())          # nan
print(np.nansum(a))     # 9.0
print(np.nanmean(a))    # 3.0
print(np.nanmax(a))     # 5.0

np.median و np.percentile

تعطي np.median القيمة الوسطى، وهي أكثر مقاومة للقيم الشاذة بكثير من المتوسط. وتبحث np.percentile عن القيمة التي تقع دونها نسبة مئوية محددة من البيانات.

import numpy as np

a = np.array([1, 2, 3, 4, 100])  # outlier at 100
print('mean:', a.mean())          # 22.0  -- skewed
print('median:', np.median(a))    # 3.0   -- robust
print(np.percentile(a, [25, 50, 75]))  # [ 2.  3.  4.]

np.any() و np.all()

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

import numpy as np

a = np.array([1, -2, 3, -4])
print(np.any(a < 0))    # True   (some are negative)
print(np.all(a > 0))    # False  (not all are positive)

# Row-wise check on 2D
m = np.array([[1, 2], [-1, 3]])
print(np.all(m > 0, axis=1))  # [ True False]

np.count_nonzero()

تحسب np.count_nonzero عدد العناصر التي لا تساوي صفرًا — أو عدد العناصر التي تساوي True. مرّر إليها شرطًا مثل a > 5 لحساب العناصر المطابقة بسهولة.

import numpy as np

a = np.array([3, 0, 7, 0, 2, 0])
print(np.count_nonzero(a))         # 3
print(np.count_nonzero(a > 2))     # 2  (elements 3 and 7)

m = np.array([[0, 1], [1, 1]])
print(np.count_nonzero(m, axis=0)) # [1 2]

np.unique() للقيم المميّزة

تعيد np.unique القيم المميّزة مرتبة. أضف return_counts=True لتحصل أيضًا على عدد مرات ظهور كل قيمة — أي جدول تكرارات فوري.

import numpy as np

a = np.array([3, 1, 4, 1, 5, 9, 2, 6, 5, 3])
uniq, counts = np.unique(a, return_counts=True)
print(uniq)    # [1 2 3 4 5 6 9]
print(counts)  # [2 1 2 1 2 1 1]

تحقّق سريعًا

اختبر مدى فهمك لدوال التجميع في NumPy التي تناولها هذا الدرس.

مراجعة الدرس

أحسنت! تلخّص تجميعات NumPy المصفوفات بسرعة باستخدام C، وتحدّد وسيطة المحور ما سيتم اختزاله، بينما تتجاهل الإصدارات الآمنة مع NaN القيم المفقودة. التالي: broadcasting.

البدء مجانًا

تعلم Python مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
30
الدروس
120

الأسئلة الشائعة

هل درس «دوال التجميع» مجاني؟

نعم — نص درس «دوال التجميع» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Pandas & NumPy Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Pandas & NumPy Academy 4 دروس في المجموع.

ماذا ستتعلم في «دوال التجميع»؟

احسب المجموع والمتوسط والقيمة الصغرى والقيمة العظمى والانحراف المعياري على مصفوفة كاملة أو على محور محدد. تتمرن على Pandas & NumPy Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Pandas & NumPy Academy؟

لا تُشترط خبرة سابقة. Pandas & NumPy Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «دوال التجميع»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Pandas & NumPy Academy هذا؟

نعم. كل درس في Pandas & NumPy Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. الدوال الشاملة (ufuncs)
  2. دوال التجميع
  3. قواعد البثّ
  4. التنقية المنطقية والفهرسة المتقدمة
← العودة إلى Pandas & NumPy Academy