fixmint
UK

Як очистити CSV-файл: помилки, які варто перевірити

Автор: · · 5 хв читання

Щоб очистити неохайний CSV-експорт, виправляйте його поетапно: спершу символи, потім структуру, а потім те, що означає кожен стовпець. CSV — це звичайний текст, тож більшість проблем полягає в неправильних символах, зайвих рядках чи роздільниках або в значеннях, які програма читає не так, як ви. Почніть із символів. Прихований пробіл може завадити розпізнаванню дати як дати, і тоді наступні виправлення не спрацьовують без явної причини.

Очищення CSVCSV з пустими рядками і дублямиБезкоштовно

Символи, які виглядають правильно, але такими не є

Зайві пробіли. Пробіл на початку або в кінці клітинки чи два пробіли всередині значення роблять «Berlin » і «Berlin» для пошуку, фільтра чи з'єднання двома різними значеннями.

Невидимі символи. Деякі символи не займають місця на екрані:

  • Нерозривний пробіл (U+00A0) схожий на звичайний пробіл, але є іншим символом. Веб-сторінки використовують його, щоб тримати слова разом.
  • Пробіл нульової ширини (U+200B) взагалі не має ширини.
  • Маркер порядку байтів (U+FEFF) може стояти на самому початку файлу, перед першим заголовком. Стовпець виглядає як «id», але насправді це «id», тому пошук за «id» не спрацьовує.

Видалення невидимих символів показує, що знаходить, перш ніж щось змінювати.

Зіпсовані літери. «Ã©» на місці очікуваної «é» — це проблема кодування, яку називають mojibake (кракозябри). Файл було збережено в UTF-8, де é займає два байти, а потім прочитано як Windows-1252, де ці два байти стають двома не пов'язаними між собою літерами. Апостроф «’» так само перетворюється на «â€™». Виправити можна, прочитавши файл як UTF-8 або експортувавши його з джерела знову з вибраним UTF-8. Відновлювати текст, який уже було неправильно збережено, ненадійно, тож залиште оригінал і працюйте з копією.

Структура: рядки заголовка, порожні рядки й дублікати

Звіти часто починаються з назви, дати та порожнього рядка над справжнім заголовком. Видаліть усе над рядком заголовка, щоб у першому рядку були назви стовпців. Кожен стовпець потребує однієї назви, і жодна назва не повинна бути порожньою.

Кожен рядок має містити однакову кількість полів. Зайва кома всередині значення без лапок додає поле, і кожне наступне значення зсувається на один стовпець праворуч. Перевірте кількість полів у кожному рядку. Рядок із іншою кількістю полів пошкоджений.

Дублікати бувають двох типів. Рядки, що повністю збігаються в усіх стовпцях, зазвичай з'являються через подвійний експорт або вставлення, і їх безпечно видалити. Рядки, які мають однаковий ключ, але відрізняються в інших стовпцях, можуть бути оновленнями. Видалення не того рядка може стерти найновішу версію, тож спершу перевірте їх.

Дати: 03/04/2026 може означати два різні дні

03/04/2026 — це 3 квітня в одній країні і 4 березня в іншій, і з тексту не зрозуміло, яка з них. Подивіться на інші дати в тому самому стовпці. Якщо будь-яке перше число більше за 12, стовпець має формат «день-місяць». Якщо будь-яке друге число більше за 12, це формат «місяць-день». Якщо обидва числа в усіх значеннях не перевищують 12, файл не скаже, тож запитайте у системи-джерела. Перевірка типів даних позначає такий стовпець як неоднозначний, а не вгадує.

Коли порядок відомий, перетворіть кожну дату на формат ISO 8601, тобто рік-місяць-день, наприклад 2026-04-03. Такий формат однозначний і правильно сортується як текст. Перетворюйте змішані формати по одному, бо стовпець із обома стилями більшість програм читатиме непослідовно.

Числа, збережені як текст

Число зберігається як текст, якщо в ньому є знак валюти, знак відсотка або пробіл, наприклад «€ 12», «45%» або «1 234» з нерозривним пробілом. Роздільники розрядів, як у «1,234.50», теж часто змушують програму читати значення як текст. Електронна таблиця вирівнює текстові числа по лівому краю і пропускає їх під час підсумовування.

Десяткові коми — пастка. У «1.234,50» кома є десятковим знаком, а крапка групує тисячі. У «1,234.50» усе навпаки. Тому «1,234» в одному експорті може бути 1234, а в іншому 1.234. Перш ніж перетворювати, визначте локаль джерела, а потім приберіть роздільники тисяч і замініть десяткову кому на крапку.

Провідні нулі втрачаються

Поштові індекси, коди товарів і номери рахунків часто починаються з нулів. Коли CSV відкривається в електронній таблиці, «01234» читається як число 1234, і нулі зникають. Збереження файлу закріплює втрату, тож лише система-джерело є надійною копією.

Ідентифікатор є текстом, навіть коли схожий на число, бо з ним ніколи не виконують арифметичних дій. Вимкніть перетворення на числа для таких стовпців під час очищення CSV і відкрийте файл із джерела знову, а не з копії, яку зберегла електронна таблиця. Потім перевірте тип даних кожного стовпця, щоб стовпець із поштовими індексами непомітно не перетворився назад на числа. Excel також може змінювати значення під час відкриття CSV, тож перевіряйте результат у звичайному текстовому перегляді.

Спершу перевірте типи, потім профілюйте

Після очищення перевірте тип кожного стовпця. Одне значення «N/A» у стовпці цін перетворює весь стовпець на текст, і підсумок тоді виходить неправильним. Перевірка типів даних присвоює кожному стовпцю тип і показник достовірності та перелічує клітинки, що не відповідають типу.

Потім профілюйте стовпці. Аналізатор стовпців CSV показує прогалини й викиди в кожному стовпці. Викид може бути справжнім значенням або помилкою, наприклад ціною, що в тисячу разів більша за решту. Такі помилки часто виникають через неправильно поставлену десяткову крапку або роздільник.

Складні випадки

  • Розриви рядків у лапках. Значення в лапках може містити розрив рядка. Інструмент, який ділить файл за рядками, розділить цей запис навпіл, тож використовуйте читач, який розуміє поля в лапках.
  • Файли з крапкою з комою. Багато європейських електронних таблиць зберігають CSV з крапкою з комою, бо в їхній локалі кома є десятковим роздільником. Перевірте роздільник, перш ніж читати стовпці.
  • Зберігайте оригінал. Запишіть очищений результат у новий файл, а експорт залиште в початковому вигляді.

Порядок дій у вигляді чек-листа

  1. Збережіть копію оригінального експорту.
  2. Видаліть зайві пробіли й невидимі символи. Виправте зіпсовані літери в джерелі, якщо можете.
  3. Видаліть рядки заголовка, перевірте назви стовпців і переконайтеся, що кожен рядок має однакову кількість полів.
  4. Знайдіть дублікати й вирішіть, яку версію залишити.
  5. Перетворіть дати на рік-місяць-день, приберіть роздільники та зробіть ідентифікатори текстом.
  6. Перевірте тип кожного стовпця, а потім профілюйте його на предмет прогалин і викидів.

Короткі відповіді

Чому пошук не працює, коли значення виглядають однаково?

Зазвичай у одній із клітинок є пробіл, нерозривний пробіл або маркер порядку байтів. Видаліть невидимі символи і спробуйте знову.

Чому мої дати змінюються на щось інше?

Програма прочитала дату у форматі «день-місяць» або «місяць-день» у неправильному порядку, або перетворила текст на власний формат дати. Спершу перетворіть дати самостійно на рік-місяць-день.

Переклад з Англійський оригінал за допомогою ШІ.

Коментарі

    Коментарів поки немає. Будьте першим.

    Ваша оцінка (необов’язково)

    Ваша пошта ніколи не показується і не зберігається.

    Обкладинка: Open Data for AGI - Why Public, Free, and Open Datasets MatterOpen Data for AGI - Why Public, Free, and Open Datasets Matter

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

    $4.99Придбати на GumroadАнглійською