Ремонт без подмены фактов
Если очистить небольшой файл один раз вручную, результат может выглядеть вполне убедительно. Проблема появляется через неделю, когда приходит новая версия данных и нужно вспомнить: какие пробелы мы заменяли, где убирали пробелы в строках, почему часть значений превратилась в NaN и в каком порядке всё это происходило.
В этот момент предобработка превращается из набора приёмов в воспроизводимый процесс. Хороший процесс можно запустить снова на тех же данных и получить тот же результат. А если правила изменились, можно увидеть, что именно изменилось вместе с ними.
Функция как запись решения
def clean_heroes(df, current_year=2026):
out = df.copy()
# здесь идут обоснованные преобразования
return out, audit
Функция начинает с копии, поэтому исходная таблица не портится. На выходе удобно вернуть не только очищенные данные, но и небольшой журнал audit: что было обнаружено и как изменился набор.
Порядок действий имеет значение. Маркер "unknown" сначала нужно распознать как отсутствие значения — только после этого его увидит проверка пропусков. Две строки могут стать полным дублем только после нормализации пробелов и регистра. Невозможный год обнаружится лишь после того, как столбец удалось преобразовать в число.
Поэтому универсальной «правильной очереди» на все случаи нет. Есть более важный принцип: каждый следующий шаг должен опираться на уже понятное состояние данных, а не на случайный порядок команд в notebook.