← Blog
29 Eylül 2026· otomatik üretildi

Python ile Veri Temizleme: Pratik İpuçları

Gerçek dünya verisi her zaman dağınık gelir. Python ile veri temizleme sürecini hızlandıracak pratik ipuçlarını bu yazıda bir araya topladım.

#Python#Veri Temizleme#Pandas#Veri Bilimi

Veri bilimi projelerinde zamanın büyük bölümü — kimi araştırmalara göre %80'i — veriyi analize hazır hale getirmekle geçer. Model kurmak, güzel grafikler çizmek kadar "çekici" olmasa da veri temizleme, projenin temel taşıdır. Yanlış ya da eksik verilerle kurduğunuz en şık model bile sizi yanıltır. Bu yazıda Python'da sıkça kullandığım pratik ipuçlarını paylaşıyorum.

1. Önce Veriyi Tanıyın

Temizliğe başlamadan önce veriyi genel hatlarıyla görmek şart. Birkaç satır kod bu işi halleder:


import pandas as pd

df = pd.read_csv("veri.csv")
print(df.shape)        # Satır ve sütun sayısı
print(df.dtypes)       # Veri tipleri
print(df.isnull().sum()) # Sütun bazlı eksik değer sayısı
df.describe()          # Temel istatistikler

Bu dört çıktı, nerede durduğunuzu net biçimde gösterir. Sütunların veri tipi yanlışsa (örneğin tarih sütunu object olarak geliyorsa) temizlik yapmadan önce tip dönüşümlerini yapın.

2. Eksik Değerlerle Başa Çıkmak

Eksik değerleri silmek her zaman en doğru yol değildir. Şu yaklaşımları duruma göre değerlendirin:

  • Silme: Satırın %30'undan fazlası boşsa gönül rahatlığıyla silin.
  • Medyan/Mod ile doldurma: Sayısal sütunlarda medyan, kategorik sütunlarda mod güvenli bir başlangıç noktasıdır.
  • İleri/geri doldurma (ffill/bfill): Zaman serisi verilerinde oldukça işe yarar.

# Sayısal sütunu medyanla doldur
df["fiyat"].fillna(df["fiyat"].median(), inplace=True)

# Zaman serisi için ileri doldurma
df["sıcaklık"].fillna(method="ffill", inplace=True)

3. Yinelenen Satırları Temizlemek

Birden fazla kaynaktan gelen veriler sıklıkla tekrar eden kayıtlar içerir. Pandas bunu tek satırda çözer:


df.drop_duplicates(inplace=True)

Bazı durumlarda yalnızca belirli sütunlara göre tekilleştirme yapmak gerekebilir:


df.drop_duplicates(subset=["müşteri_id", "sipariş_tarihi"], inplace=True)

4. Aykırı Değerleri (Outlier) Yakalamak

Aykırı değerler hem istatistiksel analizleri hem de makine öğrenmesi modellerini olumsuz etkiler. IQR yöntemi hızlı ve güvenilirdir:


Q1 = df["gelir"].quantile(0.25)
Q3 = df["gelir"].quantile(0.75)
IQR = Q3 - Q1

alt_sinir = Q1 - 1.5 * IQR
ust_sinir = Q3 + 1.5 * IQR

df = df[(df["gelir"] >= alt_sinir) & (df["gelir"] <= ust_sinir)]

Aykırı değerleri silmeden önce iş kurallarına danışın; bazen o değerler hata değil, gerçek bir anomalidir.

5. Metin Verilerini Standartlaştırmak

Metin sütunlarında küçük büyük harf farkları, baştaki/sondaki boşluklar ve tutarsız yazımlar veri kalitesini ciddi biçimde düşürür:


df["şehir"] = df["şehir"].str.strip().str.lower()
df["şehir"] = df["şehir"].str.replace("i̇stanbul", "istanbul")  # Karakter sorunu düzeltme

Düzenli ifadeler (regex) daha karmaşık temizlikler için güçlü bir seçenektir:


import re
df["telefon"] = df["telefon"].str.replace(r"\D", "", regex=True)  # Yalnızca rakam bırak

6. Veri Tiplerini Doğru Atamak

Tip dönüşümleri bellek kullanımını ve işlem süresini doğrudan etkiler:


df["tarih"] = pd.to_datetime(df["tarih"], format="%Y-%m-%d")
df["kategori"] = df["kategori"].astype("category")  # Bellek tasarrufu

---

Sonuç

Veri temizleme, "bir kere yap bitir" türünden bir iş değildir; veri geliştikçe pipeline'ınızın da gelişmesi gerekir. Yukarıdaki adımları işlevlere (function) dönüştürüp tekrar kullanılabilir bir temizleme modülü oluşturmak, uzun vadede hem zaman hem de hata payı açısından büyük fark yaratır. Temiz veri, iyi modelin yarısıdır.