Python ile veri temizleme & hazırlama (data-wrangling)

Furko

Astsubay Başçavuş
Admin
Katılım
24 Kasım 2025
Mesajlar
981
Reaksiyon puanı
56
**Python ile Veri Temizleme & Hazırlama (Data Wrangling)**

Veri, modern dünyanın en değerli varlıklarından biridir; ancak ham veri genellikle karmaşık, eksik ve hatalıdır. Analiz ve modelleme süreçlerinden önce verinin bu tür kusurlardan arındırılması ve doğru formata getirilmesi, "veri temizleme" veya daha geniş kapsamıyla "data wrangling" olarak adlandırılır. Python, esnekliği, zengin kütüphane ekosistemi ve kullanım kolaylığı sayesinde bu zorlu görevi yerine getirmek için veri bilimcilerin ve analistlerin vazgeçilmez aracı haline gelmiştir. Bu makale, Python'ı kullanarak veri temizleme ve hazırlamanın temel adımlarını ve en iyi uygulamalarını detaylandıracaktır. Doğru bir data wrangling süreci, sonraki analizlerin güvenilirliğini ve model performansını doğrudan etkileyen kritik bir adımdır.

### Veri Temizlemenin Önemi ve Data Wrangling Nedir?

Ham veriler genellikle düzensiz, eksik veya hatalı bilgiler içerir. Bu durum, doğrudan analiz edildiğinde yanlış sonuçlara veya hatalı makine öğrenimi modellerine yol açabilir. Bu nedenle, verinin kullanılabilir hale getirilmesi hayati önem taşır. Data wrangling, ham veriyi daha uygun ve analiz edilebilir bir formata dönüştürme sürecidir. Başka bir deyişle, bu süreç, veri toplandıktan sonra uygulanan ilk ve en kritik adımlardan biridir. Python ile yapılan data wrangling, özellikle Pandas kütüphanesi sayesinde, bu dönüşümleri son derece etkili ve verimli bir şekilde gerçekleştirmemizi sağlar. Ek olarak, temizlenmiş veriler üzerinde yapılan görselleştirmeler ve istatistiksel analizler çok daha anlamlı sonuçlar üretir. Sonuç olarak, kaliteli bir data wrangling süreci, veri odaklı kararların doğruluğunu temelden güçlendirir.

### Eksik Verilerle Başa Çıkma Stratejileri

Eksik veriler, her veri setinde karşılaşabileceğimiz yaygın bir sorundur ve analizin bütünlüğünü bozabilir. Python'da Pandas kütüphanesi, eksik verileri (NaN) tanımlamak ve yönetmek için güçlü araçlar sunar. Örneğin, `isnull()` veya `isna()` metotlarını kullanarak eksik değerleri kolayca tespit edebilirsiniz. Bu değerlerle başa çıkmanın birkaç stratejisi vardır: en basit yöntemlerden biri, eksik değer içeren satırları veya sütunları `dropna()` metoduyla kaldırmaktır. Ancak bu, önemli miktarda veri kaybına neden olabilir. Alternatif olarak, `fillna()` metodu ile eksik değerleri ortalama, medyan, mod gibi istatistiksel bir değerle doldurmak mümkündür. Bununla birlikte, daha karmaşık durumlarda, tahminleyici modeller kullanarak veya önceki/sonraki değerleri kullanarak eksik verileri doldurma teknikleri de kullanılabilir. Her stratejinin veri setinize ve analiz amacınıza göre dikkatlice değerlendirilmesi önemlidir.

### Anormal ve Aykırı Değerlerin Tespiti ve Yönetimi

Aykırı değerler veya anomaliler, veri setindeki genel eğilimden önemli ölçüde sapan gözlemlerdir. Bu tür değerler, veri girişi hatalarından kaynaklanabileceği gibi, gerçek ama nadir olayları da temsil edebilir. Python, aykırı değerleri tespit etmek için çeşitli istatistiksel ve görselleştirme yöntemleri sunar. Örneğin, kutu grafikleri (boxplot) veya saçılım grafikleri (scatterplot) ile aykırı değerleri görsel olarak belirleyebilirsiniz. İstatistiksel yöntemler arasında Z-skoru, IQR (Interquartile Range) tabanlı tespitler ve makine öğrenimi algoritmaları bulunur. Tespit edildikten sonra aykırı değerleri yönetmek için birkaç yaklaşım mevcuttur: bazı durumlarda, aykırı değerleri veri setinden tamamen çıkarmak (`drop`) en uygun çözüm olabilir. Başka bir deyişle, bu değerleri eşik değerlerle sınırlamak (capping) veya dönüştürmek (logaritmik dönüşüm gibi) de mümkündür. Hangi yöntemin seçileceği, aykırı değerlerin nedenine ve analizin hedefine bağlıdır.

### Veri Formatı ve Tipi Tutarsızlıklarını Giderme

Veri tiplerinin ve formatlarının tutarsızlığı, genellikle veri toplama sürecindeki hatalardan veya farklı kaynaklardan gelen verilerin birleştirilmesinden kaynaklanır. Örneğin, sayısal olması gereken bir sütunun metin (object) tipi olarak okunması, matematiksel işlemleri engeller. Python'ın Pandas kütüphanesi, bu tür tutarsızlıkları gidermek için `astype()` gibi güçlü araçlar sunar. Bu metod, bir sütunun veri tipini kolayca tam sayıya (`int`), ondalıklı sayıya (`float`) veya tarih-saat formatına (`datetime`) dönüştürmenize olanak tanır. Ek olarak, tarih sütunları genellikle farklı formatlarda (`DD-MM-YYYY`, `MM/DD/YY`) gelebilir; `pd.to_datetime()` fonksiyonu bu farklılıkları standart bir formata dönüştürmek için idealdir. String tabanlı sütunlarda gereksiz boşluklar, büyük/küçük harf farklılıkları veya özel karakterler bulunabilir. Bu nedenle, `.str.strip()`, `.str.lower()`, `.str.replace()` gibi metotlar kullanılarak metin verileri temizlenebilir ve standardize edilebilir.

### Veri Tekrarının Önlenmesi ve Benzersiz Değerlerin Yönetimi

Veri setindeki yinelenen kayıtlar, analiz sonuçlarını yanıltabilir ve gereksiz yer kaplayabilir. Özellikle birden fazla kaynaktan veri birleştirildiğinde veya manuel giriş hataları olduğunda veri tekrarı sıkça görülür. Python'da Pandas kütüphanesi, yinelenen satırları tespit etmek ve kaldırmak için etkili yöntemler sunar. `duplicated()` metodu, hangi satırların tekrarlandığını boolean bir seri olarak döndürürken, `drop_duplicates()` metodu bu yinelenen satırları veri setinden kaldırır. Bu fonksiyonu belirli sütunlara göre veya tüm sütunları dikkate alarak çalıştırabilirsiniz. Ek olarak, kategorik verilerde aynı anlama gelen ancak farklı yazılan değerler (örneğin, "USA", "U.S.A.", "United States") bulunabilir. Bu tür tutarsızlıkları gidermek, veri setinizin kalitesini artırır ve analizlerin doğruluğunu sağlar. Başka bir deyişle, bu değerleri tek bir standart forma dönüştürmek (örneğin, hepsini "ABD" yapmak) veri temizliğinin önemli bir parçasıdır.

### Veri Birleştirme, Dönüştürme ve Zenginleştirme

Veri temizleme sürecinin bir parçası olarak, farklı kaynaklardan gelen verileri birleştirmek, verileri analiz için daha uygun bir yapıya dönüştürmek ve yeni özellikler oluşturarak veri setini zenginleştirmek sıkça gereken adımlardır. Python'da Pandas kütüphanesi, `merge()`, `concat()` ve `join()` gibi fonksiyonlarla birden fazla DataFrame'i anahtar sütunlar veya indeksler üzerinden kolayca birleştirmenizi sağlar. Bu, farklı tablolardaki ilişkili bilgileri bir araya getirerek daha kapsamlı bir görünüm elde etmenize olanak tanır. Ek olarak, `pivot_table()` ve `melt()` gibi metotlar verinin yapısını değiştirmek, geniş formattan dar formata veya tersine dönüştürmek için kullanılır. Bu dönüşümler, belirli analiz türleri için veriyi daha erişilebilir hale getirir. Son olarak, mevcut sütunlardan yeni özellikler türetmek (örneğin, doğum tarihinden yaş hesaplamak veya iki sütunu birleştirerek yeni bir kategori oluşturmak) veri setini zenginleştirerek model performansını artırabilir.

### Data Wrangling Sürecini Otomatikleştirmek ve İyi Uygulamalar

Data wrangling, genellikle tekrarlayan ve zaman alıcı bir süreçtir. Bu nedenle, bu adımları otomatikleştirmek hem zaman kazandırır hem de insan hatasını azaltır. Python'da fonksiyonlar ve sınıflar kullanarak veri temizleme ve hazırlama adımlarını modüler hale getirebilirsiniz. Örneğin, sıkça kullandığınız temizleme işlemlerini bir fonksiyona sararak, farklı veri setleri üzerinde tek bir çağrı ile uygulayabilirsiniz. Daha büyük projelerde, veri işleme boru hatları (data pipelines) oluşturmak, sürecin her adımını düzenli ve izlenebilir kılar. Bununla birlikte, iyi bir data wrangling süreci sadece kodu yazmaktan ibaret değildir; aynı zamanda süreç boyunca alınan kararları belgelemek de önemlidir. Hangi eksik değer stratejisinin uygulandığı, hangi aykırı değerlerin kaldırıldığı gibi bilgiler, projenin sürdürülebilirliği ve anlaşılabilirliği için kritiktir. Tutarlılık, modülerlik ve dokümantasyon, etkili bir data wrangling pratiğinin temel taşlarıdır.
 
Geri
Üst Alt