Прибыль:
- Способность различать причину отсутствия значений (случайная, систематическая, значимая), выбирать соответствующую стратегию и рассчитывать значение заполнения только на основе обучения.
- Возможность проверять выбросы перед их удалением и отличать ошибку данных от действительно редкого события.
- Возможность предотвратить молчаливую потерю, отслеживая влияние каждого шага на количество строк/пробелов, одновременно приводя несоответствия типов и форматов в стандарт.
Примерно 60–80 процентов времени специалиста по данным уходит на очистку; В индустрии это полушутя называют «data wrangling» (data wrangling или data cleaning). Потому что реальные данные почти никогда не поступают готовыми для анализа: даты представлены в смешанных форматах, числа хранятся в виде текста, некоторые ячейки пусты, клиент появляется в одной и той же таблице три раза с двумя разными вариантами написания. В этом модуле мы рассмотрим три основных аспекта очистки: пропущенные значения, выбросы и преобразование типа/формата. Искусственный интеллект — необычайно быстрый помощник в этой работе; Но именно вы решаете, что и как чистить, потому что каждый выбор очистки меняет анализ.
Золотое правило уборки: каждое изменение – это решение
Удаление ячейки, заполнение пропущенного значения средним значением, обрезка выброса — ни одна из этих операций не является «нейтральной». Каждый меняет данные и влияет на результат. Итак, золотое правило очистки: записывайте каждое изменение в код, записывайте обоснование, никогда не перезаписывайте исходные данные. ИИ дает вам код быстрой очистки, но вы обязаны понять, что делает этот код; Не запускайте его, не увидев, сколько строк исчезло, когда вы говорите «удалить пустые строки».
Внимание: Никогда не изменяйте исходные необработанные данные. Запишите очищенную версию в отдельный файл/таблицу. Таким образом, если вы обнаружите ошибку, вы сможете вернуться к исходной точке и сохранить воспроизводимость.
Отсутствуют значения: почему пусто, что делать
Отсутствующее значение (обычно отображается как NaN — «Не число» в пандах) — это когда ячейка пуста. Но причина разрыва определяет решение. Есть три типичные ситуации. Случайное отсутствие: сенсор не сработал на мгновение; Возможно, имеет смысл его заполнить. Систематическое отсутствие: поле формы запрашивается только для определенных клиентов; Разрыв здесь на самом деле информационный. Значительное отсутствие: если «дата возврата» пуста, клиент не вернулся; Это пространство означает 0 или «нет», оно не заполняется.
Основные стратегии:
Стратегия
Когда это уместно?
риск
Удалить строку
Процент пропусков очень низок (<5%) и случаен.
Потеря данных и представления
Удалить столбец
Большая часть столбца пуста (>60%)
потеря информации
Среднее/среднее заполнение
Числовое, отсутствует случайно
Это уменьшает дисперсию и искажает распределение.
Категория «неизвестно»
Категорическое, систематическое отсутствие
Создает дополнительные категории
Прогнозирование с помощью модели
Сложная, драгоценная колонна
Риск утечки, сложность
Критическая точка: значение вменения должно рассчитываться только на основе обучающих данных, и то же значение должно применяться к тестовым данным. Если вы включите среднее значение тестовых данных, вы создадите утечку (блок 10). Медиану (среднее значение порядковых данных) часто предпочитают среднему значению, поскольку она более устойчива к выбросам, чем среднее значение.
Выбросы: ошибка или реальность?
Выбросом может быть одно из двух: ошибка данных (999 в столбце возраста) или реальное, но редкое событие (заказ клиента на 2 миллиона долларов). Путать эти два понятия — катастрофа: удалите истинный выброс, и вы выбросите важную информацию; Если вы отпустите ошибку, ваши средние показатели пострадают. Поэтому необходимо сначала изучить выброс, а не удалять его автоматически.
Общие методы обнаружения: метод IQR (межквартильный диапазон; значения, которые более чем в 1,5 раза превышают разницу между 25% и 75% квинтилями данных, считаются выбросами) и z-показатель (количество стандартных отклонений от среднего значения; обычно выброс, если оно больше 3). ИИ пишет код для этих вычислений за секунды; Но прежде чем сказать «удалить», проверьте, что это за значения.
Преобразование типов и форматов: источник скрытых ошибок
Одна из самых больших головных болей — путаница типов данных. Если столбец «сумма» хранится в виде текста, вы не можете добавлять; Программа неправильно считывает число в турецком формате, например «1250,50» вместо «одна тысяча двести пятьдесят». Даты («03.01.2024» день-месяц или месяц-день?), категории («Мужчина»/«мужчина»/«М» - одно и то же?) и единицы измерения (TL или куруш?) молча выдают неверные результаты. Большая часть очистки — это приведение этих несоответствий в стандарт: даты в один формат, категории в одно написание, числа в одно целое.
три мини-кейса
Случай 1. Средняя ловушка. Команда заполнила 320 недостающих значений в столбце дохода средним значением (48 500 долларов США). Но недостатки были систематическими: это был низкодоходный сегмент, который никогда не декларировал доходы. Среднее наполнение сделало эту группу искусственно богатой, а кредитная модель оказалась неправильной. Урок: спросите «почему поле пустое», прежде чем заполнять его.
Случай 2 — выброс, который не следует удалять. Аналитик розничной торговли удалил из данных о продажах 4 огромных заказа (по 1,8 миллиона турецких лир каждый), посчитав их «ошибками». Однако это были реальные корпоративные заказы и составили 22% от общего оборота. Модель прогнозирования после исключения полностью упустила из виду институциональный спрос. Урок: проверьте выброс перед его удалением.
Случай 3 — Ошибка формата даты. В CSV-файле даты были смешаны: «01.03.2024» и «01.03.2024». Когда код, написанный YZ, был разобран по первому формату, 6400 строк стали NaT как «недействительная дата» и были молча исключены из анализа. Аналитик заметил это только тогда, когда количество строк уменьшилось. Урок: всегда проверяйте количество строк и пробелов после конвертации.
Четыре копируемых шаблона
1) Отсутствует карта значений:
У меня есть панды df. Напишите код, который создает таблицу, показывающую количество и процент отсутствующих данных (NaN) для каждого столбца. Затем перечислите отдельно столбцы, в которых доля отсутствующих элементов превышает 40 %, и столбцы, в которых доля отсутствующих элементов составляет менее 5 %. Просто сгенерируйте этот диагностический код, а не какую стратегию вы предлагаете; Я приму решение.
2) Проверка выбросов (не удаление):
Напишите код, который ОБНАРУЖИВАЕТ (а не удаляет!) выбросы для моего столбца «сумма», используя метод IQR. Поместите внешние строки в отдельный файл df, чтобы я мог проверить их вручную. Также выведите количество выбросов и их долю в общем количестве.
3) Стандартизация типа/формата:
Напишите код, который стандартизирует следующие столбцы: - «дата»: могут быть смешанные форматы («01.03.2024» и «01.03.2024»); конвертируйте их все в datetime, посчитайте непереводимые и сообщите (выбросьте молча). - "пол": "Мужской"/"мужской"/"М" -> "М", "Женский"/"женский"/"Ж" -> "К". - «сумма»: текст в турецком формате («1.250,50») -> десятичное число. Выведите количество строк, затрагиваемых после каждого преобразования.
4) Проверьте до/после чистки:
Напишите код, который сравнивает df.shape, количество отсутствующих данных и сводную статистику (среднее, медиана, минимум, максимум) выбранных столбцов до и после этапа очистки. Цель: посмотреть, что меняет чистка.
Слабая подсказка / Сильная подсказка
Слабая подсказка:
Очистите эти данные.
«Ясно» неоднозначно; ИИ не знает, какие недостающие части следует удалить, что заполнить, какую графу обработать и как. Результат: слепые, необратимые изменения.
Мощная подсказка:
Ваша роль: помощник по очистке данных. Столбцы df: customer_id (целое), Registration_date (текст смешанного формата), Revenue_tl (текст, «1200,00»), city (текст, неправильное написание). Правила: - Изменение исходного df; Работайте над копией с именем df_clean. - Преобразуйте доход_tl в число, подсчитайте то, что невозможно перевести. - Измените запись_дата на дату и время, сообщите об ошибке. - Не удаляйте никакие строки без моего разрешения; Покажите кандидатов отдельно. После каждого шага выведите df_temiz.shape и недостающее число.
Здесь источник защищен, каждое преобразование учитывается, удаление остается на усмотрение человека.
Распространенные ошибки
- Заполняем пробелы, не спрашивая «почему пусто?» Заполнение систематических/значительных пропусков средним значением искажает данные.
- Удаление выброса без его проверки. Отбрасывание реальных, но редких событий уничтожает важную информацию.
- Вычисление значения заполнения на основе всех данных. Включение тестовых данных создает утечку; просто посчитайте на основе тренировки.
- Не проверять количество строк/пробелов после преобразования. Строки, которые молча содержат NaT/NaN, исключаются из анализа.
- Перезапись исходных данных. Возврат и воспроизводимость теряются.
Совет: запустите очистку со сравнением «до и после». Распечатывайте df.shape, количество отсутствующих и сводную статистику критических столбцов после каждого шага. Итак, вы сразу видите, что один шаг неожиданно уничтожает 6000 строк.
В заключение
Очистка — это самый трудоемкий и требующий принятия решений этап науки о данных. Каждое изменение меняет данные, поэтому каждое из них является сознательным решением. В случае пропущенных значений спросите: «Почему оно пусто?» Просмотрите любые выбросы, прежде чем удалять их; Приведите тип и формат к стандарту. Рассчитайте значение заполнения только на основе обучающих данных, сохраните оригинал и отслеживайте влияние каждого шага, подсчитывая его. ИИ — мощный ускоритель в этом бизнесе, но люди решают, что и почему вы чистите.
Задача приложения
Возьмите (или создайте) небольшую таблицу и намеренно вставьте в нее три проблемы: кортеж пропущенных значений, выброс, смешанный формат даты. Запросите код диагностики и стандартизации у AI с помощью вышеуказанных шаблонов; сравнить количество строк и пробелов до/после каждого шага. Попробуйте уловить хотя бы одну «тихую потерю» и отметьте, как вы ее заметили.
контрольный список
- [ ] Сохранил ли я исходные необработанные данные и работал ли я над копией?
- [ ] Задавал ли я вопрос «почему здесь пусто» для каждого отсутствующего столбца?
- [ ] Просматривал ли я выбросы перед их удалением?
- [ ] Рассчитал ли я значение заполнения только на основе обучающих данных?
- [ ] Проверяю ли я количество строк/пробелов после каждого шага и исключаю личную потерю?