👨💻 df.isna().sum() — вредная команда.
Вредная не потому, что она врёт, а потому, что создаёт опасную иллюзию контроля.
Вы видите аккуратную табличку с количеством пропусков и думаете: «Окей, я всё знаю». Но на самом деле вы не знаете ничего. Знать, сколько данных пропущено — это первый класс, вторая четверть. Гораздо важнее понимать, КАК они пропущены.
Есть ли в пропусках система? Они случайны или нет? Пропуски в столбце А связаны с пропусками в столбце Б?
Простой подсчёт NaN на эти вопросы не ответит. Чтобы перейти от поверхностного взгляда к глубокому пониманию, нужен более глубокий инструмент. И он есть — это библиотека missingno.
В ней разные полезные визуализации, например:
🔬 msno.matrix() — показывает точное расположение каждой «дыры» в данных. Сразу видно, пропуски — это единичные точки или целые «мёртвые зоны».
📊 msno.heatmap() — детектор скрытых связей. Показывает, значения в каких признаках пропущены вместе.
🗺 msno.dendrogram() — карта родства. Группирует столбцы по схожести паттернов пропусков. Сразу видно, какие признаки ведут себя одинаково, а какие — живут своей жизнью.
Вот вам руководство по missingno с примерами кода и графиками: 👉🏻 Пропуски в данных — не приговор: Полное руководство по визуализации и анализу с missingno в Python
Работаем с пропусками умнее 🧠