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

Python

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

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

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

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Уникальное значение «очков».

Обратите внимание, что мы также можем использовать функцию **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. Группировка по нескольким столбцам и подсчет уникальных значений

В приведенном ниже коде показано, как подсчитать количество уникальных значений, сгруппированных по team_and_position в столбце «Очки».

#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

По выходу мы это видим.

  • Игроки на позиции F команды А:2Уникальное значение «очков».
  • Игроки на позиции G в команде А:2Уникальное значение «очков».
  • Игроки на позиции F команды B:2Уникальное значение «очков».
  • Игроки на позиции G в команде B:1Уникальное значение «очков».

Опять же, мы можем использовать функцию **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.

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

The postHow to Count Unique Values Using Pandas GroupByappeared first onStatology.