Pandas هي مكتبة قوية لمعالجة البيانات في Python. وتتضمن المهمة المتكررة تحديد عدد القيم الفريدة ضمن مجموعات متنوعة من بياناتك. ستستعرض هذه المقالة ثلاث طرق فعالة في Pandas لإنجاز هذا: groupby().nunique()
، وgroupby().agg()
، وgroupby().unique()
. سيتم توضيح كل طريقة بأمثلة واضحة.
جدول المحتويات
طريقة groupby().nunique()
توفر طريقة nunique()
، المستخدمة بعد عملية groupby()
، مباشرةً عدد القيم الفريدة لكل مجموعة. غالباً ما يكون هذا النهج هو الأكثر كفاءة وإيجازاً.
ضع في اعتبارك هذا الإطار البيانات النموذجي:
import pandas as pd
data = {'Group': ['A', 'A', 'A', 'B', 'B', 'C', 'C', 'C', 'C'],
'Value': ['X', 'Y', 'X', 'Z', 'Z', 'X', 'Y', 'Z', 'X']}
df = pd.DataFrame(data)
print(df)
ينتج هذا:
Group Value
0 A X
1 A Y
2 A X
3 B Z
4 B Z
5 C X
6 C Y
7 C Z
8 C X
لحساب قيم ‘Value’ الفريدة لكل ‘Group’، استخدم:
unique_counts = df.groupby('Group')['Value'].nunique()
print(unique_counts)
المخرجات:
Group
A 2
B 1
C 3
Name: Value, dtype: int64
يُظهر هذا أن المجموعة ‘A’ تحتوي على قيمتين فريدتين، و’B’ قيمة واحدة، و’C’ ثلاث قيم.
طريقة groupby().agg()
تُوفر طريقة agg()
مرونة أكبر، مما يُمكّن من تطبيق العديد من دوال التجميع في وقت واحد. يمكننا استخدامها مع nunique()
لحساب القيم الفريدة، بالإضافة إلى دوال أخرى إذا لزم الأمر.
باستخدام نفس إطار البيانات:
aggregated_data = df.groupby('Group')['Value'].agg(['nunique', 'count'])
print(aggregated_data)
المخرجات:
nunique count
Group
A 2 3
B 1 2
C 3 4
يُظهر هذا كل من عدد القيم الفريدة (nunique
) والعدد الإجمالي للقيم (count
) لكل مجموعة. هذا مفيد لتحليل شامل أكثر.
طريقة groupby().unique()
ترجع طريقة unique()
القيم الفريدة نفسها لكل مجموعة، وليس عددها. وبينما لا تُوفر العدد مباشرةً، إلا أنها مفيدة إذا كنت بحاجة لرؤية القيم الفريدة الفعلية.
unique_values = df.groupby('Group')['Value'].unique()
print(unique_values)
المخرجات:
Group
A [X, Y]
B [Z]
C [X, Y, Z]
Name: Value, dtype: object
للحصول على العدد، هناك خطوة إضافية مطلوبة:
unique_value_counts = unique_values.apply(len)
print(unique_value_counts)
يُنتج هذا نفس النتيجة كـ nunique()
:
Group
A 2
B 1
C 3
Name: Value, dtype: int64
ومع ذلك، فإن هذا أقل كفاءة من استخدام nunique()
مباشرةً.
الخلاصة: لأجل حساب القيم الفريدة لكل مجموعة ببساطة، فإن groupby().nunique()
هي الطريقة الأكثر مباشرة وفعالية. تُوفر groupby().agg()
مرونة أكبر لدمج nunique()
مع عمليات تجميع أخرى، بينما groupby().unique()
مفيدة عندما تحتاج إلى رؤية القيم الفريدة. اختر الطريقة الأنسب لاحتياجاتك التحليلية.