الباندا: كيفية إنشاء جدول ترافقي مع النسب المئوية


يمكنك استخدام وسيطة التطبيع في وظيفة 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 مع عدد الصناديق
الباندا: كيفية حساب القيم في عمود مع الشرط

Add a Comment

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