Когда таблица начинает врать
Есть неприятный вид ошибок, который программа почти никогда не замечает сама. Файл открывается, столбцы на месте, df.head() выглядит аккуратно — и всё же выводы из таблицы могут оказаться неверными.
Так происходит потому, что для компьютера значение прежде всего имеет форму: число, строка, дата. А для нас у него есть ещё и смысл. Число 130 вполне допустимо как обычное число, но уже невозможно, если столбец power по условию хранит значения только от 1 до 100. Строки "Earth" и " Earth " различаются для pandas, хотя человек почти наверняка считает их одной категорией.
В этом модуле мы будем работать с уже знакомым набором marvel_characters5.csv: 302 профиля персонажей и 10 признаков — от возраста и силы до стоимости костюма. Исходная версия сама по себе аккуратна: в ней нет пропусков и полных дублей. Это удобно. На её примере можно увидеть главное: предобработка начинается не с команды fillna() и не с удаления строк, а с вопроса «что в этой таблице считается правильным?»
Данные портятся не только из-за ошибок
Реальные данные редко рождаются сразу в одной идеальной таблице. Часть приходит из формы, часть — из Excel, часть — через API, что-то вводится вручную, а потом несколько источников объединяются. В одном месте появляется лишний пробел, в другом число записывается текстом, в третьем пропадает значение. Иногда два источника используют разные единицы измерения и при этом оба присылают обычные числа.
Поэтому предобработка — это не косметический ремонт. Её задача гораздо строже: сделать данные сопоставимыми и объяснимыми, не подменяя неизвестные факты удобными догадками.
Полезно мыслить как исследователь: сначала заметить проблему, затем понять её возможную причину, только после этого выбрать действие, выполнить его и проверить последствия. Этот порядок кажется медленнее, чем «сразу почистить», но именно он спасает от самых дорогих ошибок.