Ana içeriğe geç
Kesit Power BI
Orta · Analiz

Keşifçi veri analizi: eksik değer, dağılım, aykırı değer ve korelasyon

Bir veri setini rapora dökmeden önce tanımak: eksik değerleri bulup nedenini anlamak, dağılımı histogramla görmek, IQR kuralıyla aykırı değer ayıklamak, kırpma (winsorizing), kutu grafiği ve DAX ile Pearson korelasyonu.

Uygulamada aç, 8 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

Keşifçi veri analizi (Exploratory Data Analysis, EDA), bir grafiği yayımlamadan önce verinin ne söylediğini ve neyi saklıyor olabileceğini anlamaktır. Temel istatistik, gruplama ve kutulama dersindeki fonksiyonları (MEDIAN, STDEV, PERCENTILE) burada bir yöntemin parçası olarak kullanacağız.

EDA dört adımda

  1. Soru: Neyi merak ediyorsun? “Sipariş tutarları nasıl dağılıyor, birkaç büyük sipariş ortalamayı bozuyor mu?” gibi somut bir soruyla başla.
  2. Profil: Her sütunun türü, satır sayısı, boş ve farklı değer sayısı, en küçük ve en büyük değeri.
  3. Dağılım: Tek değişkenin şekli: simetrik mi, sağa çarpık mı, uç değerler var mı?
  4. İlişki: İki değişken birlikte nasıl hareket ediyor? Dağılım grafiği ve korelasyon.

Bu derste soru şu: Satislar[Tutar] (sipariş satırı tutarı) ve Satislar[KargoGun] nasıl bir veri?

Eksik değer: bul, anla, sonra karar ver

Power Query'de: Görünüm sekmesinde Sütun kalitesi (Column quality) her sütunun üstünde geçerli, hatalı ve boş yüzdesini gösterir. Sütun dağılımı farklı ve benzersiz değer sayısını, Sütun profili ise seçili sütunun istatistiklerini ve değer dağılımını verir. Varsayılan olarak yalnızca ilk 1.000 satıra bakılır; durum çubuğundan “tüm veri kümesine göre sütun profili oluşturma” seçeneğine geç.

DAX ile: Rapora bir veri kalitesi kartı koymak için:

Eksik Kargo Payı = DIVIDE(COUNTBLANK(Satislar[KargoGun]), COUNTROWS(Satislar))

Sonuç %8,1: 1.620 satırın 131'inde kargo günü yok. Şimdi en önemli adım: neden yok? 121'i iptal edilmiş sipariş (teslimat hiç olmayacak, eksik değil “uygulanamaz”); 10'u hâlâ kargoda (değer henüz oluşmadı). Doldurma yöntemi seçmeden önce eksikliğin türünü ayır:

YöntemOrtalama kargo günüYanlılığı
Satırı yok say (silme)3,12Eksikler rastgele değilse kalan veri temsilî olmaz. Hâlâ kargoda olan siparişler muhtemelen uzun sürenlerdir; ortalama biraz iyimser kalır.
Sabitle doldur (0)2,87İptalleri “aynı gün teslim” gibi gösterir; ortalamayı yapay olarak düşürür.
Medyanla doldur (3)3,11Ortalama neredeyse değişmez ama dağılım daralır, standart sapma küçülür; aykırılar daha az aykırı görünür.
Önceki değer (Power Query: Doldur → Aşağı)Sıraya bağlıYalnızca sıralı ve “değer değişene kadar geçerli” verilerde anlamlıdır (ör. bir başlık satırının altındaki satırlar). Sipariş satırlarında rastgele bir komşunun değerini kopyalar.
İptal edilmiş siparişi doldurma“Uygulanamaz” eksikliği hiçbir değerle doldurma; hesaptan çıkar. Doğru ölçü iptalleri filtreler, kargodaki 10 siparişi ise “açık” olarak ayrıca raporlar. Doldurma bir analiz kararıdır; ne yaptığını raporun notunda yaz.

Dağılım: histogram ve frekans

Histogram, sayısal bir değişkeni eşit genişlikte kutulara (bins) böler ve her kutudaki satır sayısını çizer. Power BI'da yerleşik histogram görseli yoktur; bir kutu sütunu (Veri bölmesi → Yeni grup → Kutu) ya da DAX ile frekans tablosu kurup sütun grafiği çizersin. Kutu genişliğini sen seçersin; çok dar kutu gürültü, çok geniş kutu düz bir blok gösterir.

EVALUATE
ADDCOLUMNS(
    GENERATESERIES(0, 2000, 250),
    "Satır", VAR Alt = [Value]
        RETURN COUNTROWS(FILTER(Satislar, Satislar[Tutar] >= Alt && Satislar[Tutar] < Alt + 250))
)

Sonuç: 0–250 arası 222 satır, 250–500 arası 384, 500–750 arası 398, 750–1.000 arası 273, 1.000–1.250 arası 139 satır; sonra 30–40 satırlık uzun bir kuyruk 8.999 TL'ye kadar uzanır. Dağılım sağa çarpık: ortalama 831 TL, medyan 640 TL. Ortalama medyandan belirgin büyükse birkaç büyük değer ortalamayı yukarı çekiyordur.

Ekseni bir bağlantısız kutu tablosundan alan bir ölçü yazmak da mümkündür (kutu sınırları bir GENERATESERIES hesaplanmış tablosunda, ölçü SELECTEDVALUE ile sınırı okur). Bu kalıp Segmentasyon dersindeki dinamik dilim kalıbıyla aynıdır.

Çeyrekler, IQR ve aykırı değer kuralı

Çeyrekler veriyi dört eşit parçaya böler: Q1 (%25), medyan (%50), Q3 (%75). Çeyrekler açıklığı IQR = Q3 − Q1, verinin ortadaki yarısının genişliğidir. Tukey'in kuralı: Q1 − 1,5 × IQR altı ve Q3 + 1,5 × IQR üstü aykırı değer adayıdır.

Tutar Üst Sınırı =
VAR Q1 = PERCENTILE.INC(Satislar[Tutar], 0.25)
VAR Q3 = PERCENTILE.INC(Satislar[Tutar], 0.75)
RETURN Q3 + 1.5 * (Q3 - Q1)

Tüm veride Q1 = 355,96 TL, Q3 = 899 TL, IQR = 543,04 TL ve üst sınır 1.713,56 TL. Alt sınır negatif çıkar (−458,6); yani alt tarafta aykırı yok. Üst sınırın üstünde 138 satır var (%8,5) ve bu satırlar toplam tutarın %32,4'ünü oluşturuyor. Aykırı değer burada “hatalı veri” değil, işin önemli bir parçası: monitör, robot süpürge, koşu bandı gibi pahalı ürünler.

Sınır bağlama göre değişirAynı ölçü kategori kırılımında her kategori için kendi çeyreklerini hesaplar: Elektronik'te üst sınır 2.288 TL, Kitap'ta 1.053 TL. “Genel olarak aykırı” ile “kendi grubunda aykırı” farklı sorulardır; raporda hangisini gösterdiğini belli et.

Kırpma (winsorizing): Aykırı satırları silmek yerine sınıra çekmek. Üst sınırın üstündeki her değer sınıra eşitlenir; satır sayısı korunur, uç değerlerin etkisi azalır. Ortalama tutar 831 TL'den 707,5 TL'ye iner; aykırıları tamamen silersek 613,9 TL olur. Kırpılmış ortalama, “tipik” siparişi anlatmak için ortalama ile medyan arasında bir uzlaşmadır; ciro raporunda ise asla kırpılmış değer kullanılmaz.

Kutu grafiği

Kutu grafiği (box plot) beş sayıyı tek görselde gösterir: kutunun alt ve üst kenarı Q1 ve Q3, içindeki çizgi medyan, bıyıklar (whiskers) 1,5 × IQR sınırına kadar uzanan en uç gözlemler, ötesindeki noktalar aykırı değerler. Kategorileri yan yana koyunca hem merkezi hem yayılımı bir bakışta karşılaştırırsın.

Power BI'da yerleşik kutu grafiği yoktur. İki yol var: AppSource'tan bir özel görsel (custom visual) eklemek ya da kendin kurmak: Q1, medyan, Q3, alt ve üst sınır ölçülerini yazıp bir tabloda ya da hata çubuklu (error bars) bir grafikte göstermek. Özel görsel kullanacaksan kuruluşunun izin verdiği görseller listesine bak.

İki değişken: dağılım grafiği ve korelasyon

İki sürekli değişkenin ilişkisine önce dağılım grafiğinde (scatter chart) bak: Değerler alanına iki ölçü, Değerler (Values) kutusuna ayrıntı düzeyi (ör. Urunler[Urun]). Sonra ilişkinin gücünü tek bir sayıyla özetle: Pearson korelasyon katsayısı r, −1 ile +1 arasında, iki değişkenin doğrusal olarak birlikte hareket etme derecesidir.

r = Σ(x − x̄)(y − ȳ) / √(Σ(x − x̄)² · Σ(y − ȳ)²). DAX'ta önce ürün başına bir sanal tablo kurulur, sonra beş toplam SUMX ile hesaplanır:

Fiyat Adet r =
VAR T = ADDCOLUMNS(VALUES(Urunler[Urun]),
    "X", CALCULATE(AVERAGE(Urunler[Fiyat])),
    "Y", [Satılan Adet])
VAR T2 = FILTER(T, NOT ISBLANK([X]) && NOT ISBLANK([Y]))
VAR MX = AVERAGEX(T2, [X])
VAR MY = AVERAGEX(T2, [Y])
RETURN DIVIDE(
    SUMX(T2, ([X] - MX) * ([Y] - MY)),
    SQRT(SUMX(T2, ([X] - MX) ^ 2)) * SQRT(SUMX(T2, ([Y] - MY) ^ 2)))

Ürün düzeyinde r = −0,60: pahalı ürünler daha az adet satıyor. İki ayrıntı önemli:

Kategori kırılımında ilişki daha güçlü: Kozmetik'te −0,96, Elektronik'te −0,86, Kitap'ta −0,51. Gruplar arası farklar (kitaplar ucuz ve çok satar) genel katsayıyı başka yöne çekebilir; her zaman grup içi ilişkiye de bak. İleri istatistik dersi bu formülü eğilim ve z-skoru ile birlikte ele alıyor.

Korelasyon nedensellik değildir

Ürün düzeyinde ortalama kargo günü ile iade oranı arasında r = +0,41 çıkıyor. “Kargo geciktikçe müşteri iade ediyor” demek cazip; ama korelasyon tek başına bunu kanıtlamaz:

Nedenselliği test etmek deney (A/B testi) ya da en azından karıştırıcıyı sabit tutan bir karşılaştırma gerektirir: aynı kategoride, aynı fiyat bandında hızlı ve yavaş kargolanan siparişleri karşılaştır. Power BI'daki Temel etkileyiciler görseli de korelasyon bulur, neden bulmaz.

Alıştırmalara geç (8)