Eksik değerler, veri setlerinde yaygın olarak karşılaşılan bir sorundur. Eksik değerlerin varlığı, analiz sonuçlarını önemli ölçüde etkileyebilir. Bu nedenle, veri temizliğinin önemli bir aşaması eksik değerlerle mücadeledir.
Eksik Değerlerle Mücadele Yöntemleri:
1. Eksik Değerlerin Sayısını ve Dağılımını Belirleme:
df.isnull().sum()
fonksiyonu ile her bir değişkendeki eksik değerlerin sayısını bulabilirsiniz.df.isnull().head()
fonksiyonu ile ilk satırlardaki eksik değerlerin dağılımını inceleyebilirsiniz.df.isnull().describe()
fonksiyonu ile eksik değerlerle ilgili istatistiksel bilgiler edinebilirsiniz.df.fillna(value)
fonksiyonu ile eksik değerleri belirli bir değerle doldurmakdf.str.len()
: Metinsel değerlerin uzunluklarını verir. Beklenmedik uzunluktaki değerler hatalı/tutarsız değerlere işaret edebilir.df.str.contains()
: Metinsel değerlerde belirli bir metni arar. Beklenmedik metin içeren değerler hatalı/tutarsız değerlere işaret edebilir.df.str.upper()
: Metinsel değerleri büyük harfe dönüştürür. Büyük/küçük harf ayrımı önemliyse bu fonksiyon hatalı/tutarsız değerleri tespit etmeye yardımcı olabilir.df.corr()
: Değişkenler arasındaki korelasyon katsayılarını verir.np.percentile()
: Bir değişkenin belirli bir persentilini verir.np.nanmean()
fonksiyonu ile eksik değerleri hariç tutarak ortalama hesaplamaknp.nanmedian()
fonksiyonu ile eksik değerleri hariç tutarak medyan hesaplamaknp.isfinite:
Sonlu değerleri kontrol eder. Sonsuz (inf) veya eksi sonsuz (-inf) değerleri hatalı değerlere işaret edebilir.np.isinf:
Sonsuz (inf) değerlerini kontrol eder.np.isneginf:
Eksi sonsuz (-inf) değerlerini kontrol eder.np.modf:
Bir sayının tam ve ondalık kısmını ayırır. Ondalık kısmın beklenmedik bir şekilde büyük olması hatalı/tutarsız değerlere işaret edebilir.
2. Eksik Değerleri Doldurma:
- Ortalama veya Medyan ile Doldurma: Eksik değerleri, ilgili değişkenin ortalaması veya medyanı ile doldurabilirsiniz.
df['column'].fillna(df['column'].mean())
fonksiyonu ile ortalama ile doldurmadf['column'].fillna(df['column'].median())
fonksiyonu ile medyan ile doldurma
- Sıcak Güverte ile Doldurma: Eksik değerleri, benzer özelliklere sahip gözlemlerin değerleri ile doldurabilirsiniz.
- Kütüphaneler: missingno, fancyimpute
- KNN ile Doldurma: K-Nearest Neighbors algoritması ile eksik değerleri tahmin ederek doldurabilirsiniz.
- Kütüphaneler: scikit-learn
3. Eksik Değerleri İçeren Gözlemleri Silme:
Eksik değerlerin oranı düşükse ve rastgele dağılmışsa, eksik değerleri içeren gözlemleri silebilirsiniz.
df.dropna()
fonksiyonu ile tüm eksik değerleri içeren satırları silmedf.dropna(thresh=n)
fonksiyonu ile belirli sayıda eksik değer içeren satırları silme
Hatalı/Tutarsız Değerleri Tespit Etme Yöntemleri:
- Değişkenlerin Değer Aralığını İnceleme: Her bir değişkenin minimum ve maksimum değerlerini inceleyerek hatalı veya tutarsız değerleri tespit edebilirsiniz.
- Değişkenlerin Dağılımını İnceleme: Histogramlar ve boxplotlar gibi görselleştirmeler ile değişkenlerin dağılımını inceleyerek hatalı veya tutarsız değerleri tespit edebilirsiniz.
- Eşsiz Değerleri Listeleme:
df.unique()
fonksiyonu ile her bir değişkenden farklı değerleri listeleyerek hatalı veya tutarsız değerleri tespit edebilirsiniz.
Hatalı/Tutarsız Değerleri Düzeltme Yöntemleri:
- Hatalı değerleri doğru değerlerle değiştirme:
df.replace(to_replace, value)
fonksiyonu ile hatalı değerleri doğru değerlerle değiştirebilirsiniz. - Tutarsız değerleri standartlaştırma: Örneğin, bir tarih değişkenindeki farklı formatları tek bir formata dönüştürebilirsiniz.
- Hatalı/tutarsız değerleri içeren gözlemleri silme: Eksik değerlerde olduğu gibi, hatalı/tutarsız değerlerin oranı düşükse ve rastgele dağılmışsa, bu gözlemleri silebilirsiniz.
Eksik Değerleri Görselleştirme:
- Isı Haritası: Veri setindeki eksik değerlerin dağılımını görselleştirmek için ısı haritası kullanılabilir. Eksik değerlerin yoğun olduğu alanlar, veri setinin hangi bölümlerinin daha fazla dikkat gerektirdiğini gösterir.
- Eksik Değer Grafiği: Her bir değişkendeki eksik değerlerin sayısını gösteren bir grafik çizilebilir. Bu grafik, hangi değişkenlerin eksik değerlere karşı daha hassas olduğunu gösterir.
- Yoğunluk Grafiği: Eksik değerlerin dağılımını ve diğer değişkenlerle olan ilişkisini göstermek için yoğunluk grafiği kullanılabilir.
- Etki Grafiği: Eksik veya hatalı/tutarsız değerlerin analiz sonuçları üzerindeki etkisini görselleştirmek için etki grafiği kullanılabilir.
- Etki grafiği (impact plot) eksik veriler konusunda önemli olabilir çünkü eksik verilerin rastgele olup olmadığını, veri setinizin genel yapısını ve eksik verilerin diğer değişkenlerle olan ilişkilerini anlamanıza yardımcı olabilir. Eksik veri analizi ve etki grafiği çizimi, veri setinizin eksik değerlerle nasıl başa çıkılacağını belirlemenize yardımcı olabilir. İşte bu konudaki önemli noktalar:
- Eksik Verilerin Rastgele Olup Olmadığını Anlama:
- Eğer eksik veriler rastgele dağılmışsa, etki grafiğinin eksik veriye duyarlı olması pek olası değildir. Ancak, eksik verilerin belirli bir deseni veya yapısal bir nedeni varsa, etki grafiğinde bu durumu gözlemleyebilirsiniz.
- Eksik Verilerin Diğer Değişkenlerle İlişkisini İnceleme:
- Eksik verilerin, diğer değişkenlerle ilişkisi olup olmadığını anlamak için etki grafiği çizebilirsiniz. Bu, eksik değerlerin başka bir değişkenin değerlerine bağlı olup olmadığını anlamanıza yardımcı olabilir. Özellikle, bir değişkenin eksik olma olasılığının başka bir değişkenin değerine bağlı olduğu durumlar ortaya çıkabilir.
- Eksik Verilerin Toplantı Yöntemi ile İlgili Bilgi:
- Eksik veriler, özellikle anketler veya belirli bir toplama yöntemi ile elde edilen veri setlerinde, toplama sürecinin nasıl gerçekleştirildiğiyle ilgili bilgi sağlayabilir. Etki grafiği, eksik verilerin belirli bir deseni varsa bu deseni görselleştirmenize yardımcı olabilir.
- Eksik Verilerin Modelleme İle Etkileşimini Anlama:
- Eksik verilerin, modele eklenip eklenmediğine bağlı olarak model sonuçlarına nasıl etki ettiğini görmek için etki grafiğini kullanabilirsiniz. Modelinizde eksik verileri nasıl ele aldığınız önemli bir konu olabilir.
Hatalı Değerleri Görselleştirme:
- Histogramlar: Değişkenlerin dağılımını görselleştirmek için kullanılabilir. Hatalı değerler, histogramda beklenmedik tepe noktaları olarak görülebilir.
- Boxplotlar: Değişkenlerin medyan, minimum, maksimum ve çeyreklik değerlerini görselleştirmek için kullanılabilir. Hatalı değerler, boxplotta beklenmedik şekilde uzak noktalar olarak görülebilir.
- Eğri Çizgiler: Zaman serisi verileri için eğri çizgiler çizerek hatalı değerleri tespit edebilirsiniz.
Eksik ve hatalı/tutarsız değerlerle mücadele, veri temizliğinin en önemli aşamalarından biridir. Bu aşamada kullanılan yöntemler, veri setinin özelliklerine ve analiz amacına göre seçilmelidir.
Örnek Senaryo: Online Mağaza Ürün İncelemeleri
XYZ Online Mağaza, kullanıcıların ürünleri incelediği bir platforma sahiptir. Ancak, bu incelemelerde eksik değerler ve hatalı/tutarsız verilerle karşılaşmıştır. Şirket, bu veri setini temizlemek ve analiz etmek için aşağıdaki yöntemleri kullanmayı planlamaktadır:
- Eksik Değerlerin Sayısını ve Dağılımını Belirleme:
df.isnull().sum()
fonksiyonu kullanılarak her bir ürün incelemesi sütunundaki eksik değerlerin sayısı belirlenecek.df.isnull().head()
fonksiyonu ile ilk birkaç satırdaki eksik değerlerin dağılımı incelenecek.
- Eksik Değerleri Doldurma:
- Ürün incelemelerindeki eksik puanları, aynı kategoriye sahip diğer incelemelerin puan ortalaması ile doldurmayı planlıyoruz. Bunu yapmak için
df['Puan'].fillna(df.groupby('Kategori')['Puan'].transform('mean'), inplace=True)
yöntemini kullanacağız.
- Ürün incelemelerindeki eksik puanları, aynı kategoriye sahip diğer incelemelerin puan ortalaması ile doldurmayı planlıyoruz. Bunu yapmak için
- Hatalı/Tutarsız Değerleri Tespit Etme Yöntemleri:
- Değer aralıklarını kontrol etmek için
df.describe()
fonksiyonu kullanılacak. - Metinsel değerlerin uzunluklarını kontrol etmek için
df['İnceleme Metni'].str.len()
kullanılacak.
- Değer aralıklarını kontrol etmek için
- Hatalı/Tutarsız Değerleri Düzeltme:
- Metinsel değerlerdeki büyük/küçük harf ayrımını düzeltmek için
df['İnceleme Metni'] = df['İnceleme Metni'].str.lower()
kullanılacak. - Tarih formatlarını standartlaştırmak için
pd.to_datetime(df['Tarih'], errors='coerce')
kullanılacak.
- Metinsel değerlerdeki büyük/küçük harf ayrımını düzeltmek için
- Eksik Değerleri Görselleştirme:
- Isı haritası ile eksik değerlerin dağılımı görselleştirilecek.
- Eksik değer grafiği ile her bir inceleme kategorisindeki eksik değerlerin sayısı gösterilecek.
- Etki Grafiği ile Analiz:
- Eksik veya hatalı/tutarsız değerlerin analiz sonuçları üzerindeki etkisini görselleştirmek için etki grafiği çizilecek.
- Özellikle, bir ürünün eksik inceleme puanının, aynı kategorideki diğer ürünlerin puanlarına bağlı olup olmadığı incelenecek.
Eksik ve hatalı/tutarsız değerlerle mücadele, veri temizliği sürecinin kritik bir parçasını oluşturur. Bu aşamada doğru yöntemlerin seçilmesi, veri analizinde elde edilen sonuçların güvenilir ve anlamlı olmasını sağlar. Veri temizliği, herhangi bir analiz veya modelleme çalışması öncesinde dikkatle uygulanmalı ve veri setinin özel gereksinimlerine göre uyarlanmalıdır.