Важливою складовою даних є не лише їх відкритість, але й придатність для аналізу. Тому в процесі підготовки дата сетів важливо уникати помилок у документах, які можуть перетворити публікацію на «сміття». Сьогодні ми розглянемо найпоширеніші помилки та способи їх уникнення, а також розкажемо, що робити, якщо у ваші руки такі потрапили «брудні» дані.
«В Україні однією з основних проблем відкритих даних є їхня якість. На жаль, розпорядники не завжди і не до кінця розуміють, як саме ділитися даними та чому це важливо. Загалом проблему “брудних даних” можна розділити на два аспекти: загальна якість даних (єдиний формат даних у стовбцях, відсутність зайвих символів і пробілів, правильний десятковий розділювач тощо) та вірна структура даних», – пояснив аналітик даних, експерт проекту «Дані міст» Андрій Савчук.
ПОРАДИ ЩОДО УНИКНЕННЯ ТИПОВИХ ПОМИЛОК
- в жодному разі не використовуйте об’єднані комірки в Excel-таблицях
- заповнюйте всі комірки в таблиці, навіть коли дані відсутні – внесіть у них запис “NA” (Not Available)
- використовуйте завжди один і той самий запис для пропущених значень
- вставляйте лише одне значення в комірку; наприклад, у комірці може бути записана відстань – «19 км»; краще написати просто “19”, а одиниці виміру винести в назву колонки: «відстань_км»
- у межах однієї змінної вживайте один тип даних, тобто якщо в певному стовпчику записані дати, у ньому не має бути текстових даних чисел
- записуйте усі дати в одному форматі; використовуйте один загальний формат для всіх дат – бажано, щоб це був стандарт ISO 8601, тобто РРРР-ММ-ДД (рік-місяць-день)
- використовуйте один простий формат для чисел – не слід вдаватися до зайвого форматування, наприклад, розділення великого числа комами чи пробілами для його кращого візуального сприйняття
- використовуйте крапку як десятковий розділювач: «108.7» замість «108,7»
- коли потрібно зберегти провідні нулі (які йдуть попереду числа, наприклад, при використанні кодів бюджету ‘‘02509000000’’), форматуйте комірки з числами як текст
- ваші дані не мають містити в комірках результатів підрахунків чи формул
- один стовпчик у таблиці – одна змінна; поширена помилка – використовувати значення змінних (назви областей чи років) як назви стовпців даних в таблиці
- не використовуйте перенос рядка в текстових комірках
- не використовуйте латинські літери замість кириличних і навпаки; наприклад, назва міста «Сарни» (українськими літерами) та «Cарни» (з першою латинською літерою) виглядають однаково, проте на практиці є різними значеннями
- будьте уважні з пробілами – на початку і в кінці комірки з даними не має бути пробілів; не можна ставити два пробіли підряд
- не потрібно писати текстові значення чи назви стовпців ВЕЛИКИМИ ЛІТЕРАМИ (крім абревіатур) – під час обробки даних машиною це може сприйматися як різні значення
- називайте файли лише латиницею, наприклад, «budget.csv»
- не варто використовувати пробіли в заголовках стовпців або назвах файлів. Замість них використовуйте підкреслення «_». Наприклад, «budget_2019.csv»
ЯК ПОКРАЩИТИ ДАТА СЕТИ
Для багатьох випадків чистки помилок чи одруківок у даних досить використання команди пошуку і заміни (комбінація клавіш Ctrl + H). Так можна замінити лапки чи розділювач, прибрати зайві пробіли, помилкові символи, уніфікувати текстові значення.
- для об’єднання вмісту двох або більше комірок можна використати функцію «CONCATENATE», наприклад, =CONCATENATE(A2," ",B2) об’єднає вміст комірок A2 та B2, розділивши їх пробілом
- для розділення комірок до різних стовпців, що використовують певний символ-роздільник, наприклад, крапку чи крапку з комою, можна використати функцію «Текст за стовпцями», що знаходиться у вкладці «Дані»
- для видалення даних, що повторюються, можна також скористатися базовою функцією «Видалення дублікатів», що знаходиться у вкладці «Дані»
- ля очищення комірок від зайвих пробілів можна використати функцію «TRIM»
«При значних обсягах чи для зміни структури даних потрібно використовувати відповідні бібліотеки в мовах програмування R чи Python. Універсальним інструментом, який не вимагає значних початкових навичок та досвіду, стане OpenRefine. Адже це універсальна opensource-програма для очистки даних, що допоможе впоратися із усіма найпопулярнішими проблемами: від зміни структури даних до кластеризації значень у межах стовбців», – додав Андрій Савчук.
ПРОГРАМИ ДЛЯ ВИПРАВЛЕННЯ ПОМИЛОК У ДАТА СЕТАХ
DataProofer
Для виявлення проблем у даних можна скористатися безплатною програмою Dataproofer, яка застосовує до кожного набору даних 14 різних тестів. Вона допоможе перевірити набори даних у табличних форматах: xls(x), CSV, TSV та PSV.
Програма дозволяє:
· перевірити, чи всі значення в стовпцях є числами чи текстом
· виявити дублікати чи пусті комірки
· побачити потенційну втрату даних, коли, наприклад, загальна кількість рядків у таблиці становить 65 536 (обмеження попередніх версій Excel) чи загальна кількість символів у комірці 255 (деякі обмеження під час експорту з баз даних)
· перевірити недійсні чи пусті значення широти та довготи
· провести тести, які перевірять відхилення від середнього значення та/чи медіани стовпця
OpenRefine
Для очищення наборів даних чи перетворення їх в інші формати можна використовувати спеціальний інструмент – OpenRefine. Ця програма виконується локально і працює всередині веб-браузера, який запускається автоматично. OpenRefine підтримує імпорт даних із форматів CSV, *SV, xls(x), JSON, XML тощо.
Програма дозволяє:
- виявляти та виправляти помилки в даних, зокрема, знаходити різні варіанти написання назв і дат та приводити їх до єдиного вигляду
- знаходити та видаляти зайві символи й комбінації символів у даних, в тому числі за допомогою регулярних виразів
- розбивати стовпчики за певним роздільником або ж навпаки об’єднувати дані
- фільтрувати дані за кількома показниками
- виділяти/видаляти стовпчики, змінювати структуру документу
- здійснювати базовий аналіз даних
- конвертувати дані в різні формати
- надсилати запити до різних АРІ (наприклад, геокодувати адреси)
- зберігати всі трансформації даних в окремому проекті та застосовувати їх до інших документів
R
За допомогою програмного середовища R також можна здійснювати обробку, структурування чи поверхневу чистку даних. Для багатьох операцій буде достатньо навіть простих навичок програмування.
ПЕРЕЛІК БІБЛІОТЕК, ЯКІ ДОПОМОЖУТЬ ПРИ СТРУКТУРУВАННІ/ОЧИЩЕННІ ДАНИХ
- stringr – допомагає краще працювати з текстовими рядками; можна дізнатися довжину символів у комірці, здійснити необхідні заміни чи прибрати зайві пробіли
- lubridate – набір функцій для роботи з датами та часом; бібліотека, наприклад, може визначити день тижня за датою чи порахувати проміжок між двома датами
- tidyr – робота із «брудними» даними, зокрема, їхнє структурування; також за допомогою цієї бібліотеки можна розділити чи об’єднати комірки
Стаття підготовлена на основі посібника «Відкриті дані для міст».
Матеріал опублікований в рамках Ініціативи «Дані міст», що реалізовується фондом TechSoup та Ресурсним центром ГУРТ за підтримки NED.
Коментарі
Дуже хороша стаття! Дуже знадобилася!
Справжній подарунок на Новий рік, дуже дякую!
Давно маю кілька БД, які треба об'єднати і почистити - тепер я зроблю це з легкістю!
Виникло ще питання:
не варто використовувати пробіли в заголовках стовпців або назвах файлів. Замість них використовуйте підкреслення «_». Наприклад, «budget_2019.csv»
А як щодо довжини імені файлу? Зі старих часів існує звичай, що бажано найкоротше, аж до восьми літер. Наскільки це зараз обґрунтовано? Я питаю у розрізі викладаю файли для скачування на сайт.
Вітаю! Як підказує експерт проекту Дані міст Андрій Савчук, по довжині файлу можна згадати хіба обмеження "до 255 символів", які існують у різних операційних системах. Потрібно розуміти, що назва файлу повинна повністю відображати його вміст, наприклад, "Lutsk_weather_forecast_2019.csv". Іншими словами, варто відповідати на питання "Що це за дані?", "Який період вони охоплюють?", "Яка у мене географічна прив'язка?". Але "захоплюватися" і робити дуже довгу назву не потрібно. У будь-якому разі на сайті, гітхабі чи деінде у Вас повинен бути опис файлу, який можуть завантажити користувачі. Тоді вони точно знатимуть, що за файл вони завантажують, а за необхідності перейменують його!. З повагою, Максим Мазипчук
Ех, якби все так було просто! Деінде проблема виникає з кирилицею, Віндовси сімейства НТ не підтримують розширену латинку, у Лінуксах є різниця - велика літера чи мала. Ніде, здається, у назвах файлів не припускається : / \ ? і ще щось...
Там стільки приколів, що як забезпечити 100% сумісність - навіть не всі спеціалісти знають.
Тому я, зі старого переляку, застосовую стандарт із перших версій ДОСу - ім'я файлу до 8 літер без пробілів :-)