Data Analysis

إحصاء تكرر القيم بكفاءة في جداول بيانات Pandas

Spread the love

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() للسيناريوهات الأكثر تعقيدًا التي تتضمن أعمدة متعددة، ولكنها تتطلب التعامل بعناية مع القيم المفقودة.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *