← Blog
10 Ağustos 2026· otomatik üretildi

Python ile Veri Temizleme: Pratik İpuçları

Ham veri nadiren kullanıma hazır gelir. Python'un güçlü kütüphaneleriyle veri temizleme sürecinizi hızlandıracak pratik ipuçlarını keşfedin.

#Python#veri temizleme#pandas#veri bilimi

Veri analizi projelerinde zamanın büyük bir kısmı —kimi araştırmalara göre %80'e kadar— veriyi analiz etmekle değil, onu kullanılabilir hâle getirmekle geçer. Ham veri; eksik değerler, tutarsız biçimler, tekrarlayan satırlar ve aykırı noktalarla dolu olabilir. Python, bu kaotik tabloyu düzene sokmak için inanılmaz derecede zengin bir araç seti sunar. Gelin, günlük iş akışıma en çok giren pratik ipuçlarını paylaşayım.

1. Önce Veriye Genel Bakış Atın

Temizliğe başlamadan önce ne ile uğraştığınızı anlamanız şart. Pandas ile birkaç satırda temel bir tablo oluşturabilirsiniz:


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()) # Eksik değer sayıları
print(df.describe())     # Temel istatistikler

Bu dört komut, sonraki adımlarınız için bir yol haritası çıkarır. Hangi sütunlarda eksik veri yoğun, hangi tiplerde uyumsuzluk var — hepsi burada görünür.

2. Eksik Değerlerle Başa Çıkın

Eksik veriyi körü körüne silmek yerine, önce neden eksik olduğunu anlamaya çalışın. Sonrasında aşağıdaki stratejilerden birini seçin:

  • Silme: Eksiklik oranı düşükse (< %5) satırı veya sütunu düşürebilirsiniz.

  df.dropna(subset=["kritik_sutun"], inplace=True)
  • Doldurma (Imputation): Sayısal verilerde medyan, kategorik verilerde mod genellikle güvenli bir tercihtir.

  df["fiyat"].fillna(df["fiyat"].median(), inplace=True)
  df["kategori"].fillna(df["kategori"].mode()[0], inplace=True)
  • İleri/Geri Doldurma: Zaman serisi verilerinde ffill veya bfill hayat kurtarır.

  df["sicaklik"].fillna(method="ffill", inplace=True)

3. Veri Tiplerini Düzeltin

CSV dosyaları her şeyi metin olarak okuyabilir. Tarihler object, sayılar string gelebilir. Bunları doğru tipe çevirmek hem belleği hem de işlem hızını ciddi ölçüde iyileştirir:


df["tarih"] = pd.to_datetime(df["tarih"], errors="coerce")
df["miktar"] = pd.to_numeric(df["miktar"], errors="coerce")
df["durum"] = df["durum"].astype("category")

errors="coerce" parametresi, dönüştürülemeyen değerleri NaN'a çevirir; bu sayede sessiz hatalar yerine görünür eksiklikler elde edersiniz.

4. Tekrarlayan Satırlardan Kurtulun

Veri birleştirme veya sistem hataları sonucu oluşan mükerrer kayıtlar analizinizi bozabilir:


print(df.duplicated().sum())    # Kaç tane var?
df.drop_duplicates(inplace=True)

Bazen tam satır değil, belirli bir anahtar sütun bazında tekrar kontrol etmek gerekir:


df.drop_duplicates(subset=["musteri_id", "siparis_no"], inplace=True)

5. Metin Verilerini Standartlaştırın

Kategorik sütunlardaki "istanbul", "İstanbul", " istanbul " gibi varyasyonlar gruplamayı mahveder. Basit bir temizlik rutini şöyle görünür:


df["sehir"] = (
    df["sehir"]
    .str.strip()
    .str.lower()
    .str.replace("i̇", "i")  # Türkçe karakter hassasiyeti!
)

6. Aykırı Değerleri Tespit Edin

IQR (çeyrekler arası aralık) yöntemi, dağılımdan bağımsız ve sağlam bir yaklaşımdır:


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_temiz = df[(df["gelir"] >= alt_sinir) & (df["gelir"] <= ust_sinir)]

Aykırı değerleri silmeden önce mutlaka görselleştirin; bazen o "aykırı" noktalar aslında en değerli bilgiyi taşır.

Son Söz

Veri temizleme; tek seferlik bir görev değil, tekrar eden ve belgelenmeye değer bir süreçtir. Yaptığınız her adımı bir fonksiyona sarın, pipeline'ınıza ekleyin ve versiyonlayın. Temiz veri, sağlıklı modelin ve güvenilir kararın temelidir. Sorularınız veya farklı deneyimleriniz varsa yorumlarda buluşalım.