Зачем очищать данные с помощью pandas, а не вручную?

Очистка данных в pandas оправдывает затраты: каждый шаг записан, и всю последовательность можно за несколько секунд повторить для выгрузки за следующий месяц. Ручные исправления в электронной таблице занимают много времени, о них легко забыть, а проверить историю изменений невозможно.

Представьте вымышленную сеть садовых центров «Фернхилл Гарденс» с четырьмя площадками. Финансовый аналитик Томаш ежемесячно получает CSV с интернет-заказами. В примере ниже один заказ встречается дважды, название площадки написано несколькими способами, суммы содержат символ валюты и запятую, даты записаны то с дня, то с года, а пропущенные значения обозначены пустыми ячейками, «Н/Д» и «-». На ручное исправление уходит день, а итоговые суммы всё равно не вполне совпадают с отчётом платёжного провайдера.

order_idsiteorder_dateamountpostcode
10231Лидс03/11/2026£1,240.00LS6
10231Лидс03/11/2026£1,240.00LS6
10232лидс2026-11-0486.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) ↗