Обработка CSV и табличных данных
Чтение, фильтрация, агрегация и трансформация CSV и табличных данных с помощью pandas в песочнице: очистка, объединение и сверка (джойн) разнородных файлов по ключам (ИНН, артикул), дедуп, группировки, сводные расчёты и выгрузка результатов в xlsx/csv.
Обработка CSV и табличных данных
ЕДИНЫЙ ВВОД И ТИПИЗАЦИЯ (ОБЯЗАТЕЛЬНО)
Шаг 1 — прочитать (всё строкой)
read_table сам определяет кодировку (utf-8/cp1251/…), разделитель (, ; \t |) и читает ВСЁ строкой (dtype=str) — лидирующие нули ИНН/артикулов сохранены. meta["bad_lines"] > 0 означает потерянные строки → не обрабатывай, верни findings.
Шаг 2 — типизировать (ЕДИНСТВЕННАЯ точка приведения типов)
После read_table колонки — строки. Перед ЛЮБОЙ арифметикой, сравнением, агрегацией, сортировкой по числам/датам — объяви колонки в coerce. Иначе df["amount"].sum() молча склеит строки, а df["amount"] > 100000 сравнит лексикографически.
coerce — ровно то место, где раньше были разрозненные сниппеты «Числа (русский формат)», «Даты», «ID-колонки». Не дублируй их вручную — объяви колонки и получи типизированный df.
Выбор паттерна по задаче
| Задача пользователя | Блок | Метод |
|---|---|---|
| Сохранить в Excel (.xlsx) | БЛОК 1 | io_table.write_xlsx() |
| Сохранить в CSV | БЛОК 1 | df.to_csv() |
| Показать данные в чате | БЛОК 8 | print(df.to_markdown()) |
| Фильтрация / агрегация | БЛОК 3-4 | pandas operations |
БЛОК 1: Сохранение в файл (.xlsx, .csv)
Результаты сохраняй в $OUTPUT_ROOT/. После сохранения прогони VALIDATE_OUTPUT.
Паттерн: Сохранение в CSV
encoding="utf-8-sig" — Excel на Windows откроет кириллицу без «кракозябр».
Паттерн: Сохранение в Excel (один или несколько листов)
Только через io_table.write_xlsx — НЕ пиши свой код на openpyxl/ExcelWriter и свои helper-функции форматирования (set_header и т.п.). Excel запрещает в имени листа символы [ ] : * ? / \ и длину >31 — write_xlsx санирует имена сам (вернёт map «как назвал → как записал»), плюс закрепляет жирную шапку и подбирает ширину колонок.
БЛОК 2: Чтение и парсинг
Всегда через read_table (см. «Единый ввод и типизация»). Он закрывает кодировку, разделитель и формат сам — ручной chardet/sep=None не нужен.
Паттерн: Большой файл — обработка чанками
read_table грузит файл целиком (подходит до сотен тысяч строк). Для очень больших CSV читай чанками по пути:
БЛОК 3: Фильтрация
Колонки уже типизированы через coerce (числа — float, даты — datetime).
БЛОК 6: Валидация
Паттерн: Полный отчёт о качестве данных
Числовую статистику считаем по колонкам, которые объявили числовыми в coerce (после read_table всё было строкой — нельзя полагаться на dtype).
БЛОК 8: Вывод в чат (stdout)
Когда пользователь просит просто показать/прочитать файл без сохранения.
БЛОК 11: Типовые задачи
Все читают через read_table + coerce (никакого base64/file_content).
Похожие навыки
Попробуйте этот навык
Зарегистрируйтесь и используйте навык «Обработка CSV и табличных данных» бесплатно.