M4 · Veri Temizleme ve Hazırlık
Tip Dönüşümleri ve Standartlaştırma
Neden bu konu?
NovaCommerce sipariş tablosunda tutarlar "1.250,50 TL" gibi metin, tarihler üç farklı kalıpta, ağırlıklar kg/g/lb karışık geliyor. Bu hâliyle ciro toplamı alınamaz, tarih filtresi yanlış satırları getirir, kargo maliyeti hesabı birim karmaşası yüzünden şişer. Tip dönüşümünü kontrolsüz yaparsanız iki ayrı risk doğar: çevrilemeyen değerler sessizce kaybolur ve raporlar eksik veriyle "doğru görünen" yanlış sonuç üretir; ya da tek bozuk hücre tüm işlem hattını çökertir. Bu ders, ham kanıtı koruyarak, hataları sayarak ve doğrulayarak kanonik tiplere geçmeyi öğretir.
Benzetme: kavramın günlük karşılığı
Tip dönüşümü noter onaylı çeviri bürosu gibidir: orijinal belge (ham sütun) asla üzerine yazılmadan arşivde kalır, çeviri ayrı bir nüshaya (kanonik sütun) yazılır, çevrilemeyen belge "çevrilemedi" damgası (hata bayrağı) alır, zaten hiç gelmemiş belge ise ayrı tutanağa (kaynak eksikliği) işlenir; iş, giren-çıkan sayım tutanağı (kontrol tablosu ve assert) imzalanmadan teslim edilmez. Dersin tüm akışı bu zincirdir: ham kanıt → aday dönüşüm → hata bayrağı → kontrol → kanonik sütun.
Bu işin sırrı: kalıplar
- Sayı temizleme zinciri: literal replace ile ayıraç ve ekleri temizle, sonra coerce ile çevir. Örnek: t = df["tutar_raw"].str.replace(".", "", regex=False).str.replace(",", ".", regex=False).str.replace(" TL", "", regex=False); df["tutar"] = pd.to_numeric(t, errors="coerce") → "1.250,50 TL" değeri 1250.50 olur.
- Karışık tarih kalıbı: df["tarih"] = pd.to_datetime(df["tarih_raw"], format="mixed", dayfirst=True, errors="coerce") → "31.01.2026" ve "2026-02-01" aynı datetime sütununda buluşur, "02/02/2026" gün-önce okunur.
+ 3 kalıp daha tam derste
İlk uygulama adımı
1. Ham veriyi kur ve before-profile çıkar
Tek hücrede pd.DataFrame ile yedi siparişi oluştur: siparis_id S001–S007; tutar_raw ["1.250,50 TL", "900 TL", "hatalı", None, "75,25 TL", "1.100 TL", "450 TL"]; tarih_raw ["31.01.2026", "2026-02-01", "02/02/2026", "geçersiz", None, "2026-02-05", "06.02.2026"]; sehir_raw ["İSTANBUL", "istanbul", "İstanbul", " ANKARA ", "İZMİR", "Bursa?", "İstanbul"]; agirlik_deger_raw ["1,5", "750", "2", "500", None, "1", "250"]; agirlik_birim_raw ["kg", "g", "lb", "g", "kg", "KG", "g"]. df.dtypes ve df.notna().sum() ile before-profile yaz, kirli-veri dersindeki karar günlüğüne "dönüşüm öncesi envanter" satırı ekle.
Kontrol noktası: Before-profile çıktısında beş ham sütunun tamamı object dtype; dolu değer sayıları tutar_raw=6, tarih_raw=6, sehir_raw=7, agirlik_deger_raw=6, agirlik_birim_raw=7 olarak görünüyor.
+ 5 adım daha tam derste
Dersin devamı erken erişimde
Tam derste seni bekleyenler: 6 kontrol noktalı uygulama adımı, gerçek dünya kullanımı (analist + scientist + AI perspektifi), 4 yaygın tuzak, mülakat sorusu ve model cevabı, 4 soruluk quiz, 7 tekrar kartı ve NovaCommerce proje görevi.