Pandas ile veri temizlemede en çok kullanılan işlemler
Veri analizinde zamanın büyük kısmı modele değil, veriyi temizlemeye gider. Pandas ile en sık ihtiyaç duyacağın işlemleri tek yerde topladım.
import pandas as pd
df = pd.read_csv("veri.csv")
1. Veriyi tanımak
df.head() # ilk satırlar
df.info() # sütun tipleri ve boş değer sayıları
df.describe() # sayısal özet
df.isna().sum() # sütun başına eksik değer
2. Türkçe karakter ve ayraç sorunları
Excel'den gelen CSV'lerde ayraç genelde ;, ondalık ayraç , olur:
df = pd.read_csv("veri.csv", sep=";", decimal=",", encoding="utf-8")
Karakterler bozuk görünüyorsa encoding="cp1254" (Windows Türkçe) dene.
3. Sütun adlarını düzeltmek
df.columns = (df.columns.str.strip()
.str.lower()
.str.replace(" ", "_"))
4. Eksik değerler
df = df.dropna(subset=["musteri_id"]) # zorunlu alan boşsa sil
df["sehir"] = df["sehir"].fillna("Bilinmiyor") # metinde varsayılan
df["tutar"] = df["tutar"].fillna(df["tutar"].median()) # sayıda medyan
Eksik değeri doldurmadan önce neden eksik olduğunu düşün; bazen eksiklik başlı başına bir bilgidir.
5. Tekrarlanan satırlar
df.duplicated().sum()
df = df.drop_duplicates(subset=["siparis_no"], keep="last")
6. Veri tiplerini düzeltmek
df["tarih"] = pd.to_datetime(df["tarih"], dayfirst=True, errors="coerce")
df["tutar"] = pd.to_numeric(df["tutar"], errors="coerce")
df["kategori"] = df["kategori"].astype("category")
errors="coerce" dönüştürülemeyen değerleri NaT/NaN yapar; sonra bunları ayrıca incele.
7. Metin temizliği
df["sehir"] = df["sehir"].str.strip().str.title()
df["telefon"] = df["telefon"].str.replace(r"\D", "", regex=True)
Türkçe'de str.lower() "I" harfini "ı" yerine "i" yapar; şehir adları gibi alanlarda bunu aklında tut.
8. Aykırı değerler
q1, q3 = df["tutar"].quantile([0.25, 0.75])
iqr = q3 - q1
aykiri = df[(df["tutar"] < q1 - 1.5*iqr) | (df["tutar"] > q3 + 1.5*iqr)]
Aykırı değeri silmeden önce gerçek mi yoksa hata mı olduğuna karar ver.
9. Temiz veriyi kaydetmek
df.to_parquet("temiz.parquet") # tipleri korur, hızlıdır
df.to_csv("temiz.csv", index=False)
Kullandığınız ve listede olmayan bir pratik varsa ekleyin.