Зачем очищать данные с помощью pandas, а не вручную?
Очистка данных в pandas оправдывает затраты: каждый шаг записан, и всю последовательность можно за несколько секунд повторить для выгрузки за следующий месяц. Ручные исправления в электронной таблице занимают много времени, о них легко забыть, а проверить историю изменений невозможно.
Представьте вымышленную сеть садовых центров «Фернхилл Гарденс» с четырьмя площадками. Финансовый аналитик Томаш ежемесячно получает CSV с интернет-заказами. В примере ниже один заказ встречается дважды, название площадки написано несколькими способами, суммы содержат символ валюты и запятую, даты записаны то с дня, то с года, а пропущенные значения обозначены пустыми ячейками, «Н/Д» и «-». На ручное исправление уходит день, а итоговые суммы всё равно не вполне совпадают с отчётом платёжного провайдера.
| order_id | site | order_date | amount | postcode |
|---|---|---|---|---|
| 10231 | Лидс | 03/11/2026 | £1,240.00 | LS6 |
| 10231 | Лидс | 03/11/2026 | £1,240.00 | LS6 |
| 10232 | лидс | 2026-11-04 | 86.50 | Неприменимо |
| 10233 | ЙОРК | 05/11/2026 | - | YO1 |
| 10234 | Харрогит | 142 |
Как пошагово очистить данные с помощью pandas?
Очистите данные в pandas: при загрузке укажите маркеры пропущенных значений, изучите данные, приведите текст к единому виду, преобразуйте числа и даты, удалите дубликаты, решите, что делать с оставшимися пропусками, а затем сверьте результат с контрольной суммой из надёжного источника. Такой порядок не даёт одному исправлению свести на нет другое.
1. При загрузке укажите обозначения пропущенных значений
Функция read_csv в pandas считывает файл в DataFrame. Аргумент na_values позволяет указать дополнительные строки, например 'N/A' и '-', которые нужно считать пропущенными значениями наряду с теми, которые pandas уже распознаёт по умолчанию, например пустыми полями. Если указать их здесь, позже не придётся искать их вручную.
2. Проверьте, прежде чем что-либо менять
Посмотрите первые строки с помощью head, типы столбцов и количество непустых значений с помощью info, а количество пропущенных значений в каждом столбце — с помощью isna в сочетании с sum. Запишите, что вы обнаружили: в Фернхилл столбец amount хранится как текст, а в order_date используются разные форматы.
3. Приведите текст к единому стандарту
Примените к столбцу строковые методы: str.strip удаляет пробелы в начале и конце, а str.lower или str.title приводит регистр к единому виду, чтобы ' Лидс', 'лидс ' и 'ЛИДС' обозначали один объект. Затем выведите список уникальных значений с помощью unique, чтобы выявить оставшиеся варианты написания.
4. Преобразуйте числа
Удалите символ валюты и запятую, разделяющую тысячи, с помощью str.replace, затем преобразуйте данные с помощью to_numeric. Если задать аргументу errors значение coerce, всё, что не удаётся распознать, станет пропущенным значением, а выполнение не остановится. Так вы сможете подсчитать и проверить эти строки, а не потерять их незаметно.
5. Преобразуйте даты
to_datetime преобразует текст в даты нужного типа. При смешанных форматах по возможности задайте формат явно или укажите dayfirst для дат в британском формате, а для errors задайте coerce, чтобы нераспознанные даты превращались в NaT — обозначение отсутствующей даты в pandas. Учтите, что dayfirst задаёт предпочтение, а не строгое правило, поэтому проверяйте результаты.
6. Удалите дубликаты
drop_duplicates удаляет повторяющиеся строки. По умолчанию строка считается дубликатом, только если совпадают значения во всех столбцах; аргумент subset позволяет определять дубликаты по выбранным столбцам, например order_id, а keep задаёт, какую копию сохранить — первую или последнюю.
7. Решите, что делать с оставшимися пробелами
dropna удаляет строки с пропущенными значениями, но по умолчанию удаляет строку, если значение отсутствует хотя бы в одном столбце. Используйте аргумент subset, чтобы удалять только строки, в которых отсутствуют действительно необходимые значения, например amount, или fillna, чтобы заполнить пропуск указанным значением. Затем используйте astype, чтобы задать окончательные типы столбцов, например категориальный тип для site.
Как выглядят неудачный и улучшенный этапы очистки данных?
При неудачном подходе файл загружают с помощью read_csv, вызывают dropna без аргументов, а затем drop_duplicates, тоже без аргументов. Поскольку почтовый индекс часто не заполнен, dropna удаляет значительную долю корректных заказов. А поскольку ' Лидс' и 'лидс ' по-прежнему различаются, часть дубликатов остаётся. Выручка оказывается сильно занижена, и никто не знает, какие строки были удалены.
В улучшенном варианте обработки 'N/A' и '-' при загрузке объявляются пропусками, в site удаляются пробелы по краям, а каждое слово приводится к написанию с заглавной буквы; amount преобразуется с помощью to_numeric после удаления '£' и запятых; order_date преобразуется с параметрами dayfirst и coerce; дубликаты определяются по order_id, при этом сохраняется первая запись; удаляются только строки с пропущенным amount. Затем выводится число строк, удалённых на каждом шаге, а общая выручка сравнивается с отчётом платёжного провайдера. Теперь Томаш может объяснить каждое расхождение.
Как проверить, что очистка данных дала нужный результат?
Проверяйте очистку данных: считайте строки до и после каждого шага, сверяйте ключевой итоговый показатель с независимым источником и просматривайте строки, значения в которых при преобразовании были заменены на пропуски. Снова выполните info, чтобы проверить типы столбцов, и выведите уникальные значения категорий, например площадки. Если на каком-то шаге удалено больше строк, чем ожидалось, просмотрите их, прежде чем продолжать.
Как ИИ-ассистент может помочь с очисткой данных в pandas?
ИИ-помощник может составить этапы очистки данных, если вы опишете каждый столбец, его проблемы и нужное вам правило, а также объяснить незнакомые функции. Описывайте структуру с помощью вымышленных примеров значений, а не вставляйте реальные данные клиентов, такие как имена, адреса или полные почтовые индексы. Просите его сообщать количество строк после каждого этапа и сверяйте каждый используемый аргумент функции с официальной документацией pandas: помощники иногда предлагают параметры, которых не существует или которые изменились в разных версиях.
Какие ошибки часто допускают при очистке данных с помощью pandas?
Самая распространённая ошибка — вызвать dropna без аргументов и потерять строки, в которых всё было в порядке, кроме необязательного столбца. Другие ошибки: удалять дубликаты до приведения текста к единому виду, преобразовывать даты без проверки порядка дня и месяца, перезаписывать исходный файл и не сравнивать итог после очистки с проверенным значением.
К какому разделу Tosheo.ai относится этот урок?
Это урок с программированием в категории «Наука о данных и аналитика» курса по науке о данных. Изучение каждой темы в Tosheo.ai начинается с понятий и практики без программирования, а уроки с программированием — это дополнительное углублённое направление. После регистрации в полной практической версии этого урока вы пишете и выполняете каждый этап очистки данных на Python с помощью pandas, а работу оценивают по установленным критериям. Если вы ещё не знакомы с Python, начните с курса по Python. Он развивает практические навыки, но не является интенсивной программой подготовки и не гарантирует трудоустройства.
Источники и границы рассмотрения
Документация pandas: read_csv (проверено 19 October 2026) ↗
Руководство пользователя pandas: работа с пропущенными данными (проверено 19 October 2026) ↗
Документация pandas: DataFrame.dropna (проверено 19 October 2026) ↗
Документация pandas: DataFrame.drop_duplicates (проверено 19 October 2026) ↗
Документация pandas: DataFrame.astype (проверено 19 October 2026) ↗
Документация pandas: to_numeric (проверено 19 October 2026) ↗
Документация pandas: to_datetime (проверено 19 October 2026) ↗
Документация pandas: Series.str.strip (проверено 19 October 2026) ↗