🧪 Python ile Veri Bilimi Dünyasına Giriş
Veri bilimi, günümüzün en popüler ve etkili alanlarından biri haline geldi. Python ise, veri bilimi projeleri için en çok tercih edilen programlama dillerinden biri. Bunun en büyük nedenlerinden biri, Python'ın sunduğu zengin kütüphane ekosistemi. Bu ekosistemin en önemli üyelerinden biri de
Pandas. Bu yazıda, Pandas kütüphanesini kullanarak veri bilimi projelerinde nasıl testler yapabileceğimizi inceleyeceğiz.
🧬 Pandas Kütüphanesi Nedir?
Pandas, Python programlama dili için yüksek performanslı, kullanımı kolay veri yapıları ve veri analiz araçları sağlayan açık kaynaklı bir kütüphanedir. Özellikle, sayısal tabloları ve zaman serisi verilerini manipüle etmek ve analiz etmek için tasarlanmıştır.
- 🐍 Veri Yapıları: Pandas, Series (tek boyutlu etiketli dizi) ve DataFrame (iki boyutlu etiketli tablo) olmak üzere iki temel veri yapısı sunar.
- 🧮 Veri Analizi: Veri temizleme, dönüştürme, birleştirme, gruplandırma ve görselleştirme gibi çeşitli veri analizi işlemlerini kolaylaştırır.
- 💾 Veri Giriş/Çıkış: Çeşitli formatlardaki verileri (CSV, Excel, SQL, JSON vb.) okuma ve yazma yeteneği sağlar.
⚙️ Neden Pandas ile Test Yapmalıyız?
Veri bilimi projelerinde, verinin doğruluğu ve tutarlılığı kritik öneme sahiptir. Pandas ile test yaparak, veri setlerimizin beklentilerimizi karşıladığından emin olabiliriz.
- ✅ Veri Kalitesi: Eksik veya hatalı verileri tespit ederek veri kalitesini artırır.
- 🎯 Beklenen Davranış: Veri işleme adımlarının beklenen sonuçları üretip üretmediğini doğrular.
- 🛡️ Hata Ayıklama: Kodumuzdaki hataları erken aşamada tespit ederek geliştirme sürecini hızlandırır.
🧪 Pandas ile Test Yöntemleri
Pandas ile test yaparken kullanabileceğimiz çeşitli yöntemler bulunmaktadır. İşte bazı örnekler:
🚦 Basit Kontroller
En basit testler, veri setinin belirli özelliklerini kontrol etmekle başlar. Örneğin:
- 📏 Boyut Kontrolü: DataFrame'in beklenen sayıda satır ve sütuna sahip olup olmadığını kontrol edin.
Örnek:
python
import pandas as pd
def test_dataframe_boyutu(df, beklenen_satir_sayisi, beklenen_sutun_sayisi):
assert df.shape == (beklenen_satir_sayisi, beklenen_sutun_sayisi), "DataFrame boyutu beklenenden farklı!"
# Örnek DataFrame
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6]}
df = pd.DataFrame(data)
# Test
test_dataframe_boyutu(df, 3, 2)
- ℹ️ Veri Tipi Kontrolü: Sütunların beklenen veri tiplerine sahip olup olmadığını kontrol edin.
Örnek:
python
import pandas as pd
def test_sutun_veri_tipleri(df, beklenen_veri_tipleri):
for sutun, beklenen_tip in beklenen_veri_tipleri.items():
assert df[sutun].dtype == beklenen_tip, f"{sutun} sütununun veri tipi beklenenden farklı!"
# Örnek DataFrame
data = {'col1': [1, 2, 3], 'col2': ['a', 'b', 'c']}
df = pd.DataFrame(data)
# Test
beklenen_veri_tipleri = {'col1': 'int64', 'col2': 'object'}
test_sutun_veri_tipleri(df, beklenen_veri_tipleri)
- 💯 Eksik Değer Kontrolü: Eksik değerlerin (NaN) sayısını veya oranını kontrol edin.
Örnek:
python
import pandas as pd
def test_eksik_deger_sayisi(df, beklenen_eksik_deger_sayisi):
toplam_eksik_deger_sayisi = df.isnull().sum().sum()
assert toplam_eksik_deger_sayisi == beklenen_eksik_deger_sayisi, "Eksik değer sayısı beklenenden farklı!"
# Örnek DataFrame
data = {'col1': [1, 2, None], 'col2': [4, None, 6]}
df = pd.DataFrame(data)
# Test
test_eksik_deger_sayisi(df, 2)
🧪 Karmaşık Testler
Daha karmaşık testler, veri setindeki ilişkileri ve dönüşümleri doğrulamayı içerir. Örneğin:
- 📈 İstatistiksel Kontroller: Sütunların ortalama, medyan, standart sapma gibi istatistiksel değerlerini kontrol edin.
Örnek:
python
import pandas as pd
import numpy as np
def test_ortalama_deger(df, sutun, beklenen_ortalama, tolerans=0.01):
gercek_ortalama = df[sutun].mean()
assert np.isclose(gercek_ortalama, beklenen_ortalama, atol=tolerans), f"{sutun} sütununun ortalaması beklenenden farklı!"
# Örnek DataFrame
data = {'col1': [1, 2, 3, 4, 5]}
df = pd.DataFrame(data)
# Test
test_ortalama_deger(df, 'col1', 3.0)
- 🔄 Dönüşüm Kontrolleri: Veri dönüşümü sonrası beklenen sonuçları kontrol edin. Örneğin, bir sütunu normalleştirdikten sonra değerlerin 0 ile 1 arasında olduğundan emin olun.
Örnek:
python
import pandas as pd
def test_normalizasyon(df, sutun):
min_deger = df[sutun].min()
max_deger = df[sutun].max()
assert min_deger >= 0 and max_deger <= 1, f"{sutun} sütunu normalleştirilmemiş!"
# Örnek DataFrame
data = {'col1': [10, 20, 30, 40, 50]}
df = pd.DataFrame(data)
# Normalizasyon
df['col1'] = (df['col1'] - df['col1'].min()) / (df['col1'].max() - df['col1'].min())
# Test
test_normalizasyon(df, 'col1')
- 🤝 İlişki Kontrolleri: Farklı sütunlar arasındaki ilişkileri kontrol edin. Örneğin, bir sütunun değerinin diğer bir sütunun değerine bağlı olarak değişip değişmediğini kontrol edin.
Örnek:
python
import pandas as pd
def test_sutunlar_arasi_iliskiler(df, sutun1, sutun2, beklenen_iliski_fonksiyonu):
for index, row in df.iterrows():
assert beklenen_iliski_fonksiyonu(row[sutun1]) == row[sutun2], f"{sutun1} ve {sutun2} arasındaki ilişki beklenenden farklı!"
# Örnek DataFrame
data = {'col1': [1, 2, 3, 4, 5], 'col2': [2, 4, 6, 8, 10]}
df = pd.DataFrame(data)
# Beklenen ilişki: col2 = col1 * 2
def beklenen_iliski(x):
return x * 2
# Test
test_sutunlar_arasi_iliskiler(df, 'col1', 'col2', beklenen_iliski)
📚 Test Kütüphaneleri ile Entegrasyon
Pandas testlerini daha da geliştirmek için
pytest veya
unittest gibi test kütüphanelerini kullanabilirsiniz. Bu kütüphaneler, testlerinizi düzenlemenize, çalıştırmanıza ve raporlamanıza yardımcı olur.
- 🧪 pytest: Basit ve esnek bir test çerçevesidir. Pandas testlerinizi yazmak ve çalıştırmak için kolayca kullanılabilir.
- 🛠️ unittest: Python'ın yerleşik test çerçevesidir. Daha karmaşık test senaryoları için uygundur.
🎯 Sonuç
Pandas kütüphanesi, veri bilimi projelerinde veri analizi ve manipülasyonu için güçlü bir araçtır. Pandas ile test yaparak, veri setlerinizin doğruluğunu ve tutarlılığını sağlayabilir, kodunuzdaki hataları erken aşamada tespit edebilirsiniz. Bu da daha güvenilir ve başarılı veri bilimi projeleri geliştirmenize yardımcı olur.