Модуль: Предобработка II. Категоризация


Категоризация


Что это такое?

Категоризация (или бининг) — это процесс превращения непрерывных числовых данных в дискретные группы, или категории. Например, вместо чисел 22, 45, 67 мы получаем группы «молодой», «средний», «пожилой».
 

Зачем это нужно?

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

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

3. Сегментация аудитории. Клиентов, пользователей или товары делят на сегменты для таргетинга, персонализации и маркетинговых кампаний.

4. Удобная визуализация. Категории отлично ложатся на столбчатые диаграммы, круговые графики и тепловые карты, тогда как сырые числа дают перегруженные графики.

5. Улучшение моделей машинного обучения. Многие алгоритмы стабильнее работают с категориальными признаками. Биннинг снижает влияние шума, выбросов и уменьшает риск переобучения.

6. Основа для агрегаций. Группировка (groupby), подсчёт частот (value_counts), кросс-таблицы и сводные отчёты строятся именно на категориальных данных.

7. Проверка гипотез. Сравнение групп (A/B-тесты, контрольная и тестовая выборки) требует разбиения данных на категории.
 

Создание категорий

pd.cut() разбивает числовой признак на интервалы по заданным границам. Он нужен, когда границы имеют смысл для задачи: например, ночь / утро / день / вечер или low / medium / high.

pd.qcut() делит значения по квантилям и старается получить группы примерно одинакового размера. Его удобно использовать, чтобы сравнить свои смысловые пороги с разбиением самого распределения.

Проверка получившихся групп

value_counts() показывает, сколько строк попало в каждую категорию. groupby().agg() позволяет проверить реальные значения внутри групп: минимум, максимум, медиану и число наблюдений.

Исследование распределения

describe() даёт основные числовые характеристики, а quantile() — значения выбранных квантилей. Они помогают выбрать границы не случайно, а опираясь на данные.

Сравнение долей

pd.crosstab(..., normalize="index") строит таблицу долей внутри каждой группы. В кейсе CityBike с её помощью можно сравнить, какая доля часов с высоким спросом приходится на разные части суток.
 

Открыть полную теорию по категориальным признакам →