Pandas: як створити перехресну таблицю з відсотками


Ви можете використовувати аргумент normalize у функції pandas crosstab() , щоб створити перехресну таблицю, яка відображає значення у відсотках замість чисел:

 p.d. crosstab (df. col1 , df. col2 , normalize=' index ')

Аргумент normalize приймає три різні аргументи:

  • all : Показати відсоток відносно всіх значень.
  • index : Показати відсоток як загальну кількість значень рядка.
  • Стовпці : відображає відсоток як загальну суму значень стовпця.

Наступні приклади показують, як використовувати кожен із цих методів на практиці з такими pandas 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. Створіть перехресну таблицю з відсотками відносно всіх значень

Ми можемо використовувати функцію crosstab() з аргументом 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

Ось як інтерпретувати результат:

  • Гравці команди А на позиції F складають 9,09% від загальної кількості гравців.
  • Гравці команди A на позиції G складають 18,18% від загальної кількості гравців.

І так далі.

Приклад 2. Створіть перехресну таблицю з відсотками щодо підсумкових значень рядків

Ми можемо використати функцію crosstab() з аргументом normalize=index , щоб створити перехресну таблицю, яка відображає відсотки кожного значення відносно підсумку рядка:

 #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. Створіть перехресну таблицю з відсотковими показниками щодо підсумкових значень у стовпцях

Ми можемо використати функцію crosstab() з аргументом 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() тут .

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові завдання в pandas:

Pandas: як використовувати GroupBy і підрахунок значень
Pandas: як використовувати GroupBy із підрахунком bin
Pandas: як підрахувати значення в стовпці з умовою

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *