Как подсчитать уникальные значения с помощью Pandas GroupBy


Вы можете использовать следующий базовый синтаксис для подсчета количества уникальных значений по группам в кадре данных pandas:

df.groupby('group_column')['count_column']. nunique ()

В следующих примерах показано, как использовать этот синтаксис со следующим кадром данных:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'],
 'position': ['G', 'G', 'G', 'F', 'F', 'G', 'G', 'F', 'F', 'F'],
 'points': [5, 7, 7, 9, 12, 9, 9, 4, 7, 7],
 'rebounds': [11, 8, 10, 6, 6, 5, 9, 12, 13, 15]})

#view DataFrame
df

 team position points rebounds
0 A G 5 11
1 A G 7 8
2 A G 7 10
3 A F 9 6
4 A F 12 6
5 B G 9 5
6 B G 9 9
7 B F 4 12
8 B F 7 13
9 B F 7 15

Пример 1: группировка по одному столбцу и подсчет уникальных значений

В следующем коде показано, как подсчитать количество уникальных значений в столбце «очки» для каждой команды:

#count number of unique values in 'points' column grouped by 'team' column
df.groupby('team')['points']. nunique ()

team
A 4
B 3
Name: points, dtype: int64

Из вывода мы видим:

  • Для команды А существует 4 уникальных значения «очков».
  • Есть 3 уникальных значения «очков» для команды B.

Обратите внимание, что мы также можем использовать функцию unique() для отображения каждого уникального значения «очков» по команде:

#display unique values in 'points' column grouped by 'team'
df.groupby('team')['points']. unique ()

team
A [5, 7, 9, 12]
B [9, 4, 7]
Name: points, dtype: object

Пример 2: группировка по нескольким столбцам и подсчет уникальных значений

В следующем коде показано, как подсчитать количество уникальных значений в столбце «очки», сгруппированных по командам и позициям:

#count number of unique values in 'points' column grouped by 'team' and 'position'
df.groupby(['team', 'position'])['points']. nunique ()

team position
A F 2
 G 2
B F 2
 G 1
Name: points, dtype: int64

Из вывода мы видим:

  • Есть 2 уникальных значения «очков» для игроков на позиции «F» в команде A.
  • Есть 2 уникальных значения «очков» для игроков на позиции «G» в команде A.
  • Есть 2 уникальных значения «очков» для игроков на позиции «F» в команде B.
  • Существует 1 уникальное значение «очков» для игроков на позиции «G» в команде B.

Еще раз, мы можем использовать функцию unique() для отображения каждого уникального значения «очков» по командам и позициям:

#display unique values in 'points' column grouped by 'team' and 'position'
df.groupby(['team', 'position'])['points']. unique ()

team position
A F [9, 12]
 G [5, 7]
B F [4, 7]
 G [9]
Name: points, dtype: object

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:

Pandas: как найти уникальные значения в столбце
Pandas: как найти уникальные значения в нескольких столбцах
Pandas: как подсчитать вхождения определенного значения в столбце

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.