Метод nunique
Метод nunique применяется к объекту GroupBy
и возвращает количество уникальных значений в каждой группе.
По умолчанию подсчет ведется по всем столбцам, но можно указать
конкретные столбцы для анализа. Метод полезен для анализа
разнообразия данных внутри групп.
Синтаксис
groupby_obj.nunique([dropna])
Параметр dropna определяет, включать ли пропущенные значения
в подсчет. По умолчанию равен True, то есть пропуски
исключаются из подсчета.
Пример
Рассмотрим базовый пример подсчета уникальных значений в группах:
import pandas as pd
df = pd.DataFrame({
'group': ['a', 'a', 'b', 'b', 'a'],
'value': [1, 2, 1, 3, 2]
})
grouped = df.groupby('group')
res = grouped.nunique()
print(res)
Результат выполнения кода:
value
group
a 2
b 2
В группе a уникальные значения: 1 и 2,
в группе b: 1 и 3.
Пример
Подсчет уникальных значений по нескольким столбцам:
import pandas as pd
df = pd.DataFrame({
'group': ['a', 'a', 'b', 'b', 'a'],
'x': [1, 2, 1, 2, 1],
'y': [10, 20, 10, 20, 30]
})
grouped = df.groupby('group')
res = grouped.nunique()
print(res)
Результат выполнения кода:
x y
group
a 2 3
b 2 2
Пример
Использование параметра dropna для управления обработкой
пропущенных значений:
import pandas as pd
import numpy as np
df = pd.DataFrame({
'group': ['a', 'a', 'b', 'b', 'a'],
'value': [1, np.nan, 1, 2, np.nan]
})
grouped = df.groupby('group')
res = grouped.nunique(dropna=False)
print(res)
Результат выполнения кода:
value
group
a 2
b 2
При dropna=False пропуски учитываются как отдельное
уникальное значение.
Пример
Применение метода nunique к конкретному столбцу
с помощью оператора индексации:
import pandas as pd
df = pd.DataFrame({
'group': ['a', 'a', 'b', 'b', 'a'],
'value1': [1, 2, 1, 2, 3],
'value2': [10, 10, 20, 30, 10]
})
grouped = df.groupby('group')
res = grouped['value1'].nunique()
print(res)
Результат выполнения кода:
group
a 3
b 2
Name: value1, dtype: int64
Пример
Сравнение nunique с методом count для понимания
разницы между количеством уникальных значений и общим количеством:
import pandas as pd
df = pd.DataFrame({
'group': ['a', 'a', 'b', 'b', 'a'],
'value': [1, 2, 1, 2, 1]
})
grouped = df.groupby('group')
res_unique = grouped.nunique()
res_count = grouped.count()
print("nunique:")
print(res_unique)
print("count:")
print(res_count)
Результат выполнения кода:
nunique:
value
group
a 2
b 2
count:
value
group
a 3
b 2
Метод nunique показывает количество уникальных значений,
а метод count - общее количество значений в группе.
Смотрите также
-
метод
count,
который подсчитывает количество значений в группах -
метод
size,
который возвращает размер каждой группы -
метод
value_counts,
который подсчитывает частоту значений внутри групп -
метод
aggregate,
который применяет произвольные функции к группам