الباندا: كيفية التجميع حسب نطاق القيم


يمكنك استخدام بناء الجملة التالي لاستخدام وظيفة groupby() في الباندا لتجميع عمود حسب نطاق القيم قبل إجراء التجميع:

 df. groupby (pd. cut (df[' my_column '], [0, 25, 50, 75, 100])). sum ()

سيقوم هذا المثال المحدد بتجميع صفوف DataFrame وفقًا لنطاق القيم التالي في العمود المسمى my_column :

  • (0.25]
  • (25، 50)
  • (50، 75)
  • (75، 100)

سيتم بعد ذلك حساب مجموع القيم في جميع أعمدة DataFrame باستخدام نطاقات القيم هذه كمجموعات.

يوضح المثال التالي كيفية استخدام بناء الجملة هذا عمليًا.

مثال: كيفية التجميع حسب نطاق القيم في الباندا

لنفترض أن لدينا DataFrame الباندا التالي الذي يحتوي على معلومات حول أحجام متاجر البيع بالتجزئة المختلفة وإجمالي مبيعاتها:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' store_size ': [14, 25, 26, 29, 45, 58, 67, 81, 90, 98],
                   ' sales ': [15, 18, 24, 25, 20, 35, 34, 49, 44, 49]})

#view DataFrame
print (df)

   store_size sales
0 14 15
1 25 18
2 26 24
3 29 25
4 45 20
5 58 35
6 67 34
7 81 49
8 90 44
9 98 49

يمكننا استخدام الصيغة التالية لتجميع DataFrame بناءً على نطاقات محددة من عمود store_size ، ثم حساب مجموع جميع الأعمدة الأخرى في DataFrame باستخدام النطاقات كمجموعات:

 #group by ranges of store_size and calculate sum of all columns
df. groupby (pd. cut (df[' store_size '], [0, 25, 50, 75, 100])). sum ()

	 store_size sales
store_size		
(0.25] 39 33
(25, 50] 100 69
(50, 75] 125 69
(75, 100] 269 142

ومن النتيجة يمكننا أن نرى:

  • بالنسبة للصفوف التي تتراوح قيمة store_size بين 0 و25، يكون مجموع store_size 39 ومجموع المبيعات 33 .
  • بالنسبة للصفوف التي تتراوح قيمة store_size بين 25 و50، يكون مجموع store_size هو 100 ومجموع المبيعات هو 69 .

وما إلى ذلك وهلم جرا.

إذا أردت، يمكنك أيضًا حساب مجموع المبيعات فقط لكل نطاق لحجم المتجر :

 #group by ranges of store_size and calculate sum of sales
df. groupby (pd. cut (df[' store_size '], [0, 25, 50, 75, 100]))[' sales ']. sum ()

store_size
(0.25] 33
(25, 50] 69
(50, 75] 69
(75, 100] 142
Name: sales, dtype: int64

يمكنك أيضًا استخدام الدالة NumPy arange() لتقسيم المتغير إلى نطاقات دون تحديد كل نقطة قطع يدويًا:

 import numpy as np

#group by ranges of store_size and calculate sum of sales
df. groupby (pd. cut (df[' store_size '], np. arange (0, 101, 25)))[' sales ']. sum ()

store_size
(0.25] 33
(25, 50] 69
(50, 75] 69
(75, 100] 142
Name: sales, dtype: int64

لاحظ أن هذه النتائج تطابق المثال السابق.

ملاحظة : يمكنك العثور على الوثائق الكاملة لوظيفة NumPy arange() هنا .

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في الباندا:

الباندا: كيفية حساب القيم الفريدة باستخدام التجميع
الباندا: كيفية حساب متوسط وقاعدة العمود في المجموعة
الباندا: كيفية استخدام as_index في المجموعة

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *