الباندا: كيفية إنشاء جدول ترافقي مع النسب المئوية
يمكنك استخدام وسيطة التطبيع في وظيفة pandas crosstab() لإنشاء جدول ترافقي يعرض قيم النسبة المئوية بدلاً من الأرقام:
p.d. crosstab (df. col1 , df. col2 , normalize=' index ')
تقبل وسيطة التطبيع ثلاث وسيطات مختلفة:
- الكل : إظهار النسبة المئوية لجميع القيم.
- الفهرس : إظهار النسبة المئوية كإجمالي قيم الصف.
- الأعمدة : يعرض النسبة المئوية كإجمالي قيم الأعمدة.
توضح الأمثلة التالية كيفية استخدام كل من هذه الطرق عمليًا مع وحدات الباندا DataFrame التالية:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'C '], ' position ':['G', 'G', 'F', 'G', 'F', 'F', 'F', 'G', 'G', 'F', 'F'], ' points ': [22, 25, 24, 39, 34, 20, 18, 17, 20, 19, 22]}) #view DataFrame print (df) team position points 0 AG 22 1 AG 25 2 AF 24 3 BG 39 4 BF 34 5 BF 20 6 BF 18 7 GC 17 8 GC 20 9 CF 19 10 CF 22
إليك الشكل الذي سيبدو عليه الجدول الترافقي الافتراضي لعدد اللاعبين لكل فريق ومركز:
#create crosstab that displays count by team and position
p.d. crosstab (df. team , df. position )
position F G
team
AT 12
B 3 1
C 2 2
المثال 1: إنشاء جدول جدولي بنسب مئوية مرتبطة بجميع القيم
يمكننا استخدام الدالة الجدولية () مع الوسيطة Normalize=all لإنشاء جدول ترافقي يعرض النسب المئوية لكل قيمة بالنسبة إلى العدد الإجمالي لجميع القيم:
#create crosstab that displays counts as percentage relative to total count p.d. crosstab (df. team , df. position , normalize=' all ') position F G team A 0.090909 0.181818 B 0.272727 0.090909 C 0.181818 0.181818
وإليك كيفية تفسير النتيجة:
- يمثل لاعبو الفريق A في المركز F 9.09% من إجمالي اللاعبين.
- يمثل لاعبو الفريق A في المركز G 18.18% من إجمالي اللاعبين.
وما إلى ذلك وهلم جرا.
المثال 2: إنشاء جدول ترافقي يحتوي على نسب مئوية مقابل إجماليات الصفوف
يمكننا استخدام الدالة الجدولية () مع وسيطة التطبيع = الفهرس لإنشاء جدول ترافقي يعرض النسب المئوية لكل قيمة بالنسبة إلى إجمالي الصف:
#create crosstab that displays counts as percentage relative to row totals p.d. crosstab (df. team , df. position , normalize=' index ') position F G team A 0.333333 0.666667 B 0.750000 0.250000 C 0.500000 0.500000
وإليك كيفية تفسير النتيجة:
- اللاعبون في المركز F يمثلون 33.33% من إجمالي لاعبي الفريق A.
- اللاعبون في المركز F يمثلون 75% من إجمالي لاعبي الفريق B.
- اللاعبون في المركز F يمثلون 50% من إجمالي لاعبي الفريق C.
وما إلى ذلك وهلم جرا.
المثال 3: إنشاء جدول ترافقي يتضمن النسب المئوية مقابل إجماليات الأعمدة
يمكننا استخدام الدالة الجدولية () مع الوسيطة Normalize=columns لإنشاء جدول ترافقي يعرض النسب المئوية لكل قيمة بالنسبة إلى إجمالي العمود:
#create crosstab that displays counts as percentage relative to column totals p.d. crosstab (df. team , df. position , normalize=' columns ') position F G team A 0.166667 0.4 B 0.500000 0.2 C 0.333333 0.4
وإليك كيفية تفسير النتيجة:
- يمثل لاعبو الفريق “أ” 16.67% من إجمالي اللاعبين ذوي المركز “F”.
- يمثل لاعبو الفريق B 50% من إجمالي اللاعبين ذوي المركز F.
- يمثل لاعبو الفريق C 33.33% من إجمالي اللاعبين ذوي المركز F.
وما إلى ذلك وهلم جرا.
ملاحظة : يمكنك العثور على الوثائق الكاملة لوظيفة pandas crosstab() هنا .
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في الباندا:
الباندا: كيفية استخدام GroupBy وأعداد القيمة
الباندا: كيفية استخدام GroupBy مع عدد الصناديق
الباندا: كيفية حساب القيم في عمود مع الشرط