Меню

Что такое 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 и разобраться, как устроена работа с данными в современных компаниях. Вы изучите основные инструменты Data Engineer, научитесь собирать, хранить, обрабатывать и передавать большие объёмы данных, создавать ETL/ELT-процессы и строить надёжные пайплайны. Для старта не требуется опыт работы в Data Engineering — обучение выстроено от базовых тем к более сложным и сопровождается практическими заданиями.

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

Источники

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

Что такое NULL в SQL и почему отсутствие значения — не ноль
8

Что такое NULL в SQL и почему отсутствие значения — не ноль

Человек ничего не потратил или просто не ответил на вопрос? На примере короткого опроса объясняем NULL и показываем, почему пропуски меняют смысл отчёта.
ETL и ELT простыми словами: как данные превращаются в отчёты
3

ETL и ELT простыми словами: как данные превращаются в отчёты

От списка покупок до отчёта о продажах: разбираем два маршрута данных, их различия и вопросы, которые помогают выбрать подход. Без кода и сложных схем.
Оконные функции SQL: как сравнивать данные и видеть общую картину
8

Оконные функции SQL: как сравнивать данные и видеть общую картину

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