Постановка ML-задачи и работа с данными

Exploratory Data Analysis: распределения и аномалии

Содержание курса

Визуализация паттерна пропусков: missingno в деле

Когда df.isnull().sum() показывает нули по всем столбцам, как в rossmann_train.csv, кажется, что тема пропусков закрыта. Но на практике вы почти всегда будете работать с датасетами, где пропуски есть — и тогда простого счётчика недостаточно. Важен не только объём, но и паттерн: где именно в таблице появляются пропуски и есть ли между ними связь. Библиотека missingno создана именно для этого. Её основная функция msno.matrix() строит матрицу присутствия данных: каждая строка датафрейма — горизонтальная полоска, каждый столбец — вертикальная колонка. Заполненные ячейки отображаются тёмным, пропущенные — белым.


import pandas as pd
import missingno as msno
import matplotlib.pyplot as plt

df = pd.read_csv('rossmann_train.csv')
msno.matrix(df)
plt.show()

Для rossmann_train.csv матрица будет полностью тёмной — пропусков нет. Но посмотрите, что происходит, если добавить к нему таблицу с характеристиками магазинов (store.csv), где присутствуют CompetitionDistance, Promo2SinceWeek, PromoInterval:


store = pd.read_csv('store.csv')
msno.matrix(store)
plt.show()

Здесь уже видна структура: CompetitionDistance пропущен у нескольких магазинов, а Promo2SinceWeek и PromoInterval отсутствуют ровно там, где магазин не участвует в Promo2. Это не случайный сбой — это MNAR: пропуск в Promo2SinceWeek напрямую связан со значением признака Promo2=0. Матрица делает этот паттерн видимым за секунды. Ещё один инструмент из того же пакета — msno.heatmap(). Он показывает корреляцию между пропусками разных столбцов:


msno.heatmap(store)
plt.show()

Если два столбца пропускают значения в одних и тех же строках, корреляция будет близка к 1. Высокая корреляция пропусков — почти всегда признак MAR или MNAR, а не случайности. Практическое правило: запускайте msno.matrix() до того, как принимаете решение об импутации. Картинка сразу покажет, рассыпаны ли пропуски равномерно (MCAR) или сгруппированы в определённых строках и столбцах. Это меняет всё: при MCAR можно заполнять медианой без особых последствий, при MNAR — любая импутация без учёта причины пропуска будет маскировать проблему, а не решать её. В следующем уроке, когда будем выбирать стратегию обработки пропусков, этот визуальный анализ станет отправной точкой.

Начать заново?

Помощник начнёт новый диалог по этой задаче. Текущая переписка останется в истории до конца срока хранения.

О переписке

Можно приложить до трёх фото PNG, JPEG или WebP по 5 МБ.

Переписка и фото хранятся 90 дней после последнего принятого сообщения. Преподаватель получит доступ к диалогу, когда вы попросите его помочь.

Проверка решения остаётся отдельным действием.