Veri Analizi Araç Kiti: Proje Şablonu, Temizleme Kontrol Listesi ve Hazır Kod Kalıpları
Bu ders bir anlatım değil, masanıza koyacağınız bir araç kiti. Aşağıdaki şablonları kopyalayın, kendi işinize göre uyarlayın ve bir sonraki veri setinizde ilk gün kullanın.
1. Proje klasör yapısı ve not defteri iskeleti
Her analiz için aynı yapıyı kurun. Böylece aylar sonra dosyayı açan siz ya da işi devralan meslektaşınız nereye bakacağını bilir.
- veri/ham: Gelen dosyalar olduğu gibi durur, asla düzenlenmez.
- veri/temiz: Temizlenmiş çıktılar burada saklanır.
- notebooklar: Numaralı not defterleri (01_ilk_bakis, 02_temizleme, 03_analiz).
- raporlar: Yönetime giden özet dosyaları.
- README: Projenin amacı, veri kaynağı ve veriyi kimden aldığınız.
Not defteri başlık iskeleti
- Amaç ve soru: Hangi karar için bakıyoruz?
- Veri yükleme: Dosya adı, alınma tarihi, kaynak kişi veya birim.
- İlk bakış: Kontrol listesi çıktıları.
- Temizleme: Her adımın yanında kısa açıklama.
- Analiz: Filtreler, gruplamalar, grafikler.
- Bulgular ve sonraki adım: Üç cümlelik özet ve öneri.
2. İlk bakış kontrol listesi
Veri setini ilk açtığınızda, analize geçmeden önce sırayla şu yedi kontrolü yapın.
| Kontrol | Kod kalıbı | Neye bakılır? |
|---|---|---|
| Boyut | df.shape | Satır ve sütun sayısı beklentiyle uyuşuyor mu? |
| Sütun tipleri | df.info() | Sayı olması gereken sütun metin görünüyor mu? |
| Eksik oranı | df.isna().mean().sort_values(ascending=False) | Hangi sütunlar ağırlıklı olarak boş? |
| Mükerrer kayıt | df.duplicated().sum() | Aynı kayıt birden fazla girilmiş mi? |
| Aykırı değer | df.describe() | En küçük ve en büyük değerler mantıklı mı? Negatif tutar var mı? |
| Tarih tutarlılığı | df['tarih'].min(), df['tarih'].max() | Gelecek tarih, çok eski tarih, gün/ay karışıklığı var mı? |
| Metin tutarlılığı | df['sehir'].value_counts() | İstanbul, istanbul ve İSTANBUL ayrı sayılmış mı? Başta veya sonda boşluk var mı? |
3. Hazır Pandas kod kalıpları
| Amaç | Kalıp |
|---|---|
| Sütun adı standartlaştırma | df.columns = df.columns.str.strip().str.lower().str.replace(' ', '_') |
| Tarih dönüştürme | df['tarih'] = pd.to_datetime(df['tarih'], errors='coerce', dayfirst=True) |
| Sayı dönüştürme | df['tutar'] = pd.to_numeric(df['tutar'], errors='coerce') |
| Eksik değer işaretleme | df = df.replace({'-': np.nan, 'yok': np.nan, 'N/A': np.nan}) |
| Metin boşluklarını temizleme | df['sehir'] = df['sehir'].str.strip() |
| Koşullu filtreleme | df[(df['bolge'] == 'Marmara') & (df['tutar'] > 1000)] |
| Groupby özet tablosu | df.groupby('bolge').agg(toplam=('tutar','sum'), adet=('tutar','count'), ortalama=('tutar','mean')).reset_index() |
Uyarı: Türkçe karakterlerde büyük/küçük harf çevirirken i, İ, ı, I harfleri beklenmedik sonuç verebilir. Çevirdikten sonra mutlaka value_counts ile kontrol edin.
4. Veri sözlüğü ve temizleme günlüğü
Veri sözlüğü formatı
| Sütun adı | Anlamı | Tip | Olası değerler / birim | Kaynak |
|---|---|---|---|---|
| siparis_tarihi | Siparişin alındığı gün | Tarih | GG.AA.YYYY | Satış sistemi |
| tutar | KDV dahil sipariş bedeli | Sayı | TL | Muhasebe |
| bolge | Müşterinin bölgesi | Metin | Marmara, Ege, İç Anadolu vb. | Müşteri kaydı |
Temizleme günlüğü formatı
| No | Sütun | Sorun | Yapılan işlem | Etkilenen satır | Gerekçe |
|---|---|---|---|---|---|
| 1 | tutar | Metin olarak okunmuş, '-' içeriyor | Eksik olarak işaretlendi, sayıya çevrildi | Satır sayısı yazılır | Hesaplama yapılabilmesi için |
| 2 | sehir | Aynı şehir farklı yazılmış | Tek yazım biçimine eşlendi | Satır sayısı yazılır | Gruplamada bölünmeyi önlemek |
| 3 | tüm tablo | Mükerrer kayıt | İlk kayıt tutuldu, diğerleri silindi | Satır sayısı yazılır | Çift sayımı önlemek |
Günlük, biri “bu rakam neden geçen haftakinden farklı?” diye sorduğunda en güçlü savunmanızdır.
5. Yönetime aktarım: cümle kalıpları ve kısa rapor şablonu
Yönetim kod görmek istemez, karar vermek ister. Bulguyu üç parçada anlatın: ne gördük, ne anlama geliyor, ne yapmalıyız.
- “Analizde [X] bulgusuna ulaştık; bu, [karar/süreç] açısından [şu anlama] geliyor.”
- “Verinin [bir kısmı] eksikti; bu nedenle sonucu temkinli okumanızı öneririm.”
- “[A] ile [B] arasında belirgin bir fark var, ancak nedenini bu veriyle söyleyemiyoruz. Bunun için [ek veri] gerekiyor.”
- “Önerim, önce [küçük bir pilot uygulamayla] denemek ve sonucu birlikte değerlendirmek.”
- “Bu rakamı hangi filtrelerle hesapladığımı temizleme günlüğünde görebilirsiniz.”
Tek sayfalık rapor şablonu
| Bölüm | İçerik |
|---|---|
| Amaç | Hangi soruya cevap arandı? (1-2 cümle) |
| Veri kaynağı | Dosya, dönem, kimden alındı |
| Yapılan temizlik | Günlüğün üç satırlık özeti |
| Ana bulgular | En fazla üç madde, her biri tek cümle |
| Sınırlılıklar | Eksik veri, kapsam dışı kalanlar, emin olunmayan noktalar |
| Öneri ve sonraki adım | Kim, ne zaman, ne yapacak? |
Bu dersi kayıt olmadan izleyebilirsin. İlerlemeni kaydetmek, sertifika almak ve puan tablosuna girmek için ücretsiz üye ol: Kayıt Ol
İpucu: ← ve → tuşlarıyla dersler arasında geçebilirsin.