Функция value_counts() в pandas: частоты и доли

Series.value_counts() возвращает частоту каждого уникального значения, отсортированную по убыванию. С normalize=True считает доли вместо абсолютных чисел. Это самый быстрый способ у аналитика посмотреть распределение категориальной переменной — топ каналов, доли статусов, частотность значений.

Синтаксис

df['col'].value_counts(normalize=False, dropna=True)

Примеры использования

Пример 1: Топ каналов по частоте

df['channel'].value_counts()

Результат:

organic    120
ads         80
direct      40
Name: channel

Пример 2: Доли вместо счётчиков

df['channel'].value_counts(normalize=True).round(2)

Результат:

organic    0.50
ads        0.33
direct     0.17
Порешать Python-задачи в тренажёре →

Типичная ошибка

По умолчанию value_counts пропускает NaN — чтобы увидеть долю пропусков, ставь dropna=False. Результат отсортирован по частоте, а не по значению; для сортировки по значению добавь .sort_index(). Для непрерывных данных есть bins=N — разобьёт на интервалы (аналог гистограммы). value_counts работает на Series, для нескольких колонок в новых версиях — df.value_counts().

Где спрашивают на собеседовании

value_counts — первое, что делают при разведочном анализе категориальной колонки. На собеседовании спрашивают, как быстро получить распределение и доли, и помнишь ли про dropna=False для учёта пропусков.

FAQ: частые вопросы про value_counts

Как получить доли вместо количества в value_counts?

Передай normalize=True: df['col'].value_counts(normalize=True) вернёт долю каждого значения (в сумме 1). Умножь на 100 для процентов.

Учитывает ли value_counts значения NaN?

По умолчанию нет — NaN пропускаются. Чтобы увидеть частоту пропусков, добавь dropna=False.

Чем value_counts отличается от groupby().size()?

Результат тот же (частоты), но value_counts сразу сортирует по убыванию и умеет normalize и bins. groupby().size() удобнее, когда частота — часть более сложной агрегации.

Задачи в тренажёре по теме

Вопросы с собеседований по теме

Смежные темы Python

Pandas: основы · Pandas groupby

Другие функции pandas

groupby · merge · pivot_table · apply · drop_duplicates · fillna

Открыть Python-тренажёр (556 задач) →