df.nunique()
Результат:
order_id 5000 user_id 1000 channel 3 amount 870 dtype: int64
df.groupby('channel')['user_id'].nunique()
Результат:
channel ads 420 organic 610 referral 95 Name: user_id, dtype: int64
df['channel'].nunique(), df['channel'].nunique(dropna=False)
Результат:
(3, 4)Порешать Python-задачи в тренажёре →
Незаменим для оценки кардинальности признака (стоит ли делать category), подсчёта уникальных пользователей/сессий и проверки, не размножились ли строки после merge. Частый вопрос на собесе: разница между count, size и nunique.
count возвращает число непустых значений (строк), а nunique — число различных значений среди них. Для колонки из [a, a, b] count даст 3, а nunique — 2. Их часто путают в задачах на воронки.
Используйте groupby с nunique: df.groupby('channel')['user_id'].nunique(). Это вернёт число уникальных user_id внутри каждого канала. В agg можно комбинировать с другими функциями через словарь.
Нет, по умолчанию dropna=True и пропуски не учитываются. Чтобы NaN считался отдельным уникальным значением, передайте dropna=False. Это меняет результат, если в колонке есть пропуски.
Pandas groupby · Pandas: основы
groupby · merge · pivot_table · apply · value_counts · drop_duplicates
Открыть Python-тренажёр (556 задач) →