Что такое CSV и почему таблица иногда открывается неправильно

Почему выгрузка превращается в один столбец, откуда берутся странные символы и куда исчезают нули? Знакомимся с CSV на примере обычного списка заказов.

Лупа над сеткой данных с отличающимся элементом — иллюстрация проверки и очистки CSV.

Простая таблица для передачи данных

Вы скачали из магазина список заказов. Ожидали увидеть аккуратную таблицу, а получили файл с незнакомым окончанием CSV. Это распространённый способ передать табличные данные из одной программы в другую.

Представьте записную книжку, где у каждого заказа есть своя строка, а внутри строки указаны номер, дата и сумма. CSV хранит такую запись обычным текстом. Название расшифровывается как «значения, разделённые запятыми». Базовое устройство описано в RFC 4180. Это описание распространённого формата, а не обещание, что все программы создают совершенно одинаковые файлы.

Чем CSV отличается от привычной книги Excel

Когда мы говорим «таблица», часто имеем в виду сразу несколько вещей: значения, цвет ячеек, ширину столбцов, диаграммы и листы. В CSV передаются текстовые записи с полями. Сам формат не хранит оформление книги Excel и её набор листов.

Поэтому такой файл удобен для обмена, но не заменяет красиво оформленный отчёт. Если коллега просил именно данные для своей системы, CSV может подойти. Если ему нужны несколько листов с диаграммами, стоит уточнить формат заранее. Это избавит обоих от сюрприза после открытия вложения.

Почему всё оказалось в одном столбце

Чтобы разделить строку на поля, программе нужно понимать, какой знак служит границей. Название CSV говорит о запятых, но на практике встречаются варианты с другими разделителями. Различия между такими вариантами отмечает документация Python.

Если отправитель использовал один разделитель, а получатель ожидает другой, аккуратные строки могут выглядеть как длинные надписи в одном столбце. Это ещё не означает, что информация потеряна. Сначала стоит уточнить параметры выгрузки и импорта.

Представьте список «номер заказа — город — сумма». Если сумма внезапно оказалась под заголовком «город», дальше считать средний чек бессмысленно. Сначала нужно убедиться, что столбцы разделились так, как задумал отправитель.

Откуда берутся странные символы

Кодировка задаёт способ представить текст в виде байтов. Если программа неверно определила этот способ, вместо читаемых русских букв могут появиться непонятные знаки. Microsoft отдельно объясняет особенности открытия CSV в UTF-8: способ открытия и параметры импорта имеют значение.

В такой ситуации полезно сохранить исходный файл и уточнить кодировку у отправителя. Если сразу сохранить нечитаемую версию поверх оригинала, разобраться будет сложнее. Самый простой вопрос коллеге: «В какой кодировке и с каким разделителем сделана выгрузка?»

Почему внешний вид — ещё не проверка данных

Допустим, в условном списке есть заказ с номером 00125. Номер — это метка для поиска, а не сумма, которую нужно складывать. Если программа воспримет его как число, внешний вид может измениться. Поэтому до импорта важно определить, какие столбцы содержат текст, какие — числа, а какие — даты.

Условная дата 04/05 тоже требует пояснения: отправитель имел в виду 4 мая или 5 апреля? Красивые ячейки не отвечают на этот вопрос. Нужна договорённость о значении данных.

  • Сравните несколько строк с исходной системой.
  • Проверьте заголовки и ожидаемое число записей.
  • Посмотрите, сохранились ли номера, даты и суммы.
  • Уточните, что означают пустые поля.

При чём здесь инженер данных

Один файл можно проверить вручную. А теперь представьте, что каждое утро приходят десятки выгрузок от разных отделов. Одни меняют названия столбцов, другие присылают повторные записи, третьи задерживаются. Возникает задача организовать понятную и повторяемую передачу данных.

Это хороший бытовой вход в профессию инженера данных: дело начинается с понимания источников, смысла полей и требований получателя. Python и другие инструменты помогают автоматизировать работу, но сначала нужно договориться, что именно считать правильным результатом. Подробнее о направлении — на странице Data Engineer для начинающих.

Куда двигаться дальше

Если вам интересно, как разрозненные файлы превращаются в данные для отчётов и сервисов, изучите программу курса Data Engineer для начинающих. По её разделам удобно оценить, какие задачи профессии вам ближе.

Data Engineer для начинающих
Курс
Доступ сразу
Data Engineer для начинающих

Освойте Data Engineering с нуля: научитесь собирать, хранить и обрабатывать данные. Практика на каждом этапе — опыт не нужен.

С нуля до junior
Теория и практика
Диплом по окончании
12 990
₽/мес
УЗНАТЬ ПОДРОБНЕЕ

Источники

Читайте также

Обучить команду или нанять специалиста по данным: как выбрать
50

Обучить команду или нанять специалиста по данным: как выбрать

Как руководителю определить, какие навыки развивать внутри команды, когда нужна новая роль и почему обучение и найм часто дополняют друг друга.
Вертикальное и горизонтальное масштабирование данных: в чём разница
53

Вертикальное и горизонтальное масштабирование данных: в чём разница

Когда системе добавляют мощность одного сервера, когда делят работу между несколькими и почему увеличение ресурсов само по себе не решает любую проблему.
Журнал изменений данных: как выяснить, кто и когда изменил набор
48

Журнал изменений данных: как выяснить, кто и когда изменил набор

Что можно узнать из журнала действий с данными, как он помогает разбирать ошибки и почему его записи не показывают всю историю сами по себе.

Занятия проходят
в Нова Дата СДО

Вебинары, практика и общение с преподавателем — в одном окне браузера.

Посмотреть интерфейс платформы
Календарь обучения в Нова Дата СДО
Курсы студента в Нова Дата СДО
Редактор кода для практики в Нова Дата СДО
Вебинары и расписание Ваши курсы Код в браузере
Нова Дата СДО — в реестре российского ПОРеестровая запись № 34931
Заявка отправлена
Отправим вам подборку курсов в течение 5 минут. С вами также свяжется наш специалист и даст карьерную консультацию.
Персональный промокод
На курс «Инженер по парсингу данных»
Введите код при оплате, чтобы применить скидку к программе.