Pandas مكتبة قوية في بايثون لتحليل البيانات، ومن المهام المتكررة تحديد تردد القيم ضمن DataFrame. تستعرض هذه المقالة ثلاث طرق فعالة لعد ترددات القيم: value_counts()
، وgroupby().size()
، وgroupby().count()
. سنفحص كل طريقة، مع تسليط الضوء على نقاط قوتها وضعفها، وتقديم أمثلة واضحة.
محتويات الجدول
طريقة Series.value_counts()
طريقة value_counts()
هي أبسط وأكثر الطرق كفاءة لعد تردد القيم ضمن عمود واحد (Series). تعيد سلسلة حيث يمثل الفهرس القيم الفريدة والقيم تمثل عدد مرات ظهورها، مرتبة بشكل تنازلي افتراضيًا. هذا مثالي عندما تحتاج إلى تردد القيم الفردية في عمود محدد.
import pandas as pd
data = {'Category': ['A', 'A', 'B', 'B', 'A', 'C', 'A']}
df = pd.DataFrame(data)
category_counts = df['Category'].value_counts()
print(category_counts)
النتيجة:
A 4
B 2
C 1
Name: Category, dtype: int64
طريقة df.groupby().size()
توفر طريقة groupby().size()
حجم كل مجموعة (عدد الصفوف) بعد تجميع DataFrame. على عكس groupby().count()
، فهي لا تتأثر بالقيم المفقودة في الأعمدة الأخرى؛ فهي ببساطة تعد الصفوف داخل كل مجموعة. هذا مثالي للحصول على عدد مباشر لحدوث المجموعات.
import pandas as pd
data = {'Category': ['A', 'A', 'B', 'B', 'A', 'C'],
'Value': [1, 2, 1, 1, 2, 3]}
df = pd.DataFrame(data)
category_counts = df.groupby('Category').size()
print(category_counts)
النتيجة:
Category
A 3
B 2
C 1
dtype: int64
طريقة df.groupby().count()
طريقة groupby().count()
متعددة الاستخدامات، حيث تسمح لك بعد الترددات عبر أعمدة متعددة. تقوم بتجميع DataFrame ثم عد القيم غير الفارغة داخل كل مجموعة لـ *جميع* الأعمدة. هذا يعني أن البيانات المفقودة ستؤثر على العد. استخدم هذه الطريقة عندما تحتاج إلى عد عبر أعمدة متعددة، ولكن انتبه للتأثير المحتمل للبيانات المفقودة.
import pandas as pd
data = {'Category': ['A', 'A', 'B', 'B', 'A', 'C'],
'Value': [1, 2, 1, 1, 2, 3],
'Value2': [10, 20, 30, 40, 50, 60]}
df = pd.DataFrame(data)
# عد مرات ظهور 'Category' عبر جميع الأعمدة
category_counts = df.groupby('Category').count()
print(category_counts)
#التركيز على عمود واحد
category_counts_value = df.groupby('Category')['Value'].count()
print(category_counts_value)
النتيجة:
Value Value2
Category
A 3 3
B 2 2
C 1 1
Category
A 3
B 2
C 1
Name: Value, dtype: int64
باختصار، تعتمد أفضل طريقة على احتياجاتك المحددة. value_counts()
هي الأفضل للأعمدة المفردة، وgroupby().size()
لعد المجموعات البسيط، وgroupby().count()
للسيناريوهات الأكثر تعقيدًا التي تتضمن أعمدة متعددة، ولكنها تتطلب التعامل بعناية مع القيم المفقودة.