Най-дългата част от работата
Проучванията сред практикуващите дават еднакъв резултат от години: между половината и три четвърти от времето по един проект отива в намиране, разбиране и почистване на данни. Моделирането е малката част накрая.
Правилото
Всяко почистване е решение, което изкривява данните. Няма неутрален избор. Задължението ви е да знаете какво сте направили и да го запишете.
Дубликати
Един и същ клиент, въведен два пъти с различен правопис. Една и съща поръчка, записана повторно при повторно натискане на бутона. Дубликатите изкривяват всяка агрегация.
- Точен дубликат — всички колони съвпадат. Лесен за откриване и премахване.
- Логически дубликат — един и същ обект с различен запис: „Иван Петров“ и „ИВАН ПЕТРОВ“, два имейла с различен регистър.
- Технически дубликат — едно събитие, записано два пъти заради повторна заявка. Открива се по близки времена и еднакви стойности.
-- точни дубликати по логически ключ
SELECT Email, COUNT(*) AS broy
FROM Customers
GROUP BY Email
HAVING COUNT(*) > 1;
-- вероятни технически дубликати: същият клиент, същата сума, до 1 минута разлика
SELECT a.OrderID, b.OrderID, a.CustomerID, a.Total
FROM Orders a
JOIN Orders b ON a.CustomerID = b.CustomerID
AND a.Total = b.Total
AND a.OrderID < b.OrderID
AND ABS(DATEDIFF(second, a.OrderDate, b.OrderDate)) < 60;Липсващи стойности
| Подход | Кога е уместен | Какво изкривява |
|---|---|---|
| Изхвърляне на реда | малко редове, липсата е случайна | губи данни; ако липсата не е случайна — въвежда пристрастие |
| Изхвърляне на колоната | липсва при повечето редове | губи признак, който може да е важен |
| Запълване със средно или медиана | числов признак с малко липси | намалява разсейването, прави данните по-„гладки“ |
| Отделна стойност „неизвестно“ | категориен признак | нищо — обикновено най-честният подход |
| Флаг „липсваше“ плюс запълване | когато самата липса носи информация | нищо; добавя колона |
Липсата често е признак
Клиент без попълнен телефон може да е по-склонен да откаже поръчка. Затова колоната ima_telefon (0/1) понякога е по-силен признак от самия телефон.
Отклонения
Отклонение (outlier)
Стойност, силно различна от останалите: поръчка за 200 000 лв. при средна 80 лв., възраст 950 години, температура −300°.
- Грешка при въвеждане → поправя се или се изхвърля.
- Друга единица (лева и стотинки, метри и сантиметри) → привежда се.
- Истинско рядко събитие → остава! Точно то може да е целта на модела при откриване на измами.
Затова решението никога не е автоматично „изхвърли всичко над три стандартни отклонения“. Първо се гледа защо стойността е такава.
Несъвместими записи
Формат
Дати като 01/02/2024 — февруари или януари? Телефони с и без код. Имена с интервал накрая. Стойности „да/не“, „Y/N“, „1/0“ в една и съща колона.
Логика
Дата на връщане преди датата на поръчка. Сума на поръчката, различна от сбора на редовете ѝ. Клиент с възраст 12 и трудов стаж 20 години. Такива проверки се пишат веднъж и се пускат при всяко обновяване.
Не поправяйте мълчаливо
Всяка автоматична поправка трябва да брои колко реда е засегнала. Ако утре „поправите“ 40% от данните, това е сигнал за проблем нагоре по веригата, а не успех.
Дневник на почистването
- Начален брой редове.
- Всяка стъпка: какво е направено, по какво правило, колко реда са засегнати.
- Краен брой редове и колони.
- Кои решения биха могли да променят резултата и защо са взети така.
Този дневник влиза в документацията на дипломния проект. Без него резултатите не могат да бъдат повторени — нито от друг, нито от вас след три месеца.