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: як підрахувати значення в стовпці з умовою