Analizden önce profil
Yeni bir tabloyla karşılaştığında hemen rapora geçme. Önce tablonun profilini çıkar. Bu adım hem veriyi tanımanı sağlar hem de kirli veriyi erkenden yakalar.
| Soru | SQL |
|---|---|
| Kaç satır? Tanecik ne? | COUNT(*), COUNT(DISTINCT anahtar) |
| Hangi sütunlar boş? | COUNT(*) - COUNT(sutun) |
| Sayısal aralık mantıklı mı? | MIN, MAX, AVG, medyan |
| Kategorik değerler neler? | GROUP BY sutun ORDER BY COUNT(*) DESC |
| Tarih aralığı? | MIN(tarih), MAX(tarih) |
| İş kurallarına aykırı satır var mı? | Fiyat < maliyet, negatif adet, gelecek tarih… |
| Anahtar tekrar ediyor mu? | GROUP BY anahtar HAVING COUNT(*) > 1 |
Tek sorguda sayısal profil
SELECT COUNT(*) AS satir,
COUNT(DISTINCT order_id) AS siparis,
MIN(quantity) AS min_adet,
MAX(quantity) AS max_adet,
ROUND(AVG(quantity * 1.0), 2) AS ort_adet,
MIN(discount) AS min_indirim,
MAX(discount) AS max_indirim
FROM order_items;
Kategorik değerlerin dağılımı
SELECT status,
COUNT(*) AS adet,
ROUND(100.0 * COUNT(*) / SUM(COUNT(*)) OVER (), 1) AS yuzde
FROM orders
GROUP BY status
ORDER BY adet DESC;
Sayılar mantıklı mı?Profil sonuçlarını iş bilgisiyle karşılaştır: indirim oranı 1'den büyük olabilir mi? Doğum yılı 1900 öncesi mi? En pahalı ürün gerçekten o mu? EDA'nın değeri bu soruları sormaktadır.