Python'da aykırı değerler nasıl kaldırılır


Aykırı değer , bir veri kümesindeki diğer değerlerden anormal derecede uzak olan bir gözlemdir. Aykırı değerler sorunlu olabilir çünkü analizin sonuçlarını etkileyebilirler.

Bu eğitimde Python’da aykırı değerlerin nasıl tanımlanıp kaldırılacağı açıklanmaktadır.

Python’da Aykırı Değerler Nasıl Belirlenir?

Aykırı değerleri kaldırabilmeniz için öncelikle neyi aykırı değer olarak değerlendireceğinize karar vermelisiniz. Bunu yapmanın iki yaygın yolu vardır:

1. Çeyrekler arası aralığı kullanın.

Çeyrekler arası aralık (IQR), bir veri setindeki 75. yüzdelik dilim (Q3) ile 25. yüzdelik dilim (Q1) arasındaki farktır. Değerlerin ortalama %50’sinin dağılımını ölçer.

Bir gözlemi, üçüncü çeyreğin (Q3) çeyrekler arası aralığın 1,5 katı üzerinde veya birinci çeyreğin (Q1) altında çeyrekler arası aralığın 1,5 katı olması durumunda aykırı değer olarak tanımlayabilirsiniz.

Aykırı Değerler = Gözlemler > Ç3 + 1,5*IQR veya Ç1 – 1,5*IQR

2. Z-puanlarını kullanın.

Z-puanı, belirli bir değerin ortalamadan kaç standart sapma olduğunu gösterir. Z-puanını hesaplamak için aşağıdaki formülü kullanırız:

z = (X – μ) / σ

Altın:

  • X tek bir ham veri değeridir
  • μ nüfus ortalamasıdır
  • σ popülasyon standart sapmasıdır

Bir gözlemin z-puanı -3’ten küçük veya 3’ten büyükse aykırı değer olarak tanımlayabilirsiniz.

Aykırı Değerler = Z-puanları > 3 veya < -3 olan gözlemler

Python’da Aykırı Değerler Nasıl Kaldırılır

Neyin aykırı değer olduğunu düşündüğünüze karar verdikten sonra bunları tanımlayıp veri kümesinden kaldırabilirsiniz. Bunun nasıl yapılacağını göstermek için aşağıdaki pandalar DataFrame’i kullanacağız:

 import numpy as np
import pandas as pd 
import scipy.stats as stats

#create dataframe with three columns 'A', 'B', 'C'
np.random.seed(10)
data = pd.DataFrame(np.random.randint(0, 10, size=(100, 3)), columns=['A', 'B', 'C'])

#view first 10 rows
data[:10]

           ABC
0 13.315865 7.152790 -15.454003
1 -0.083838 6.213360 -7.200856
2 2.655116 1.085485 0.042914
3 -1.746002 4.330262 12.030374
4 -9.650657 10.282741 2.286301
5 4.451376 -11.366022 1.351369
6 14.845370 -10.798049 -19.777283
7 -17.433723 2.660702 23.849673
8 11.236913 16.726222 0.991492
9 13.979964 -2.712480 6.132042

Daha sonra z-puanı yöntemini veya çeyrekler arası aralık yöntemini kullanarak aykırı değerleri tanımlayabilir ve kaldırabiliriz:

Z-puanı yöntemi:

 #find absolute value of z-score for each observation
z = np.abs(stats.zscore(data))

#only keep rows in dataframe with all z-scores less than absolute value of 3 
data_clean = data[(z<3).all(axis=1)]

#find how many rows are left in the dataframe 
data_clean.shape

(99.3)

Çeyrekler arası aralık yöntemi:

 #find Q1, Q3, and interquartile range for each column
Q1 = data.quantile(q=.25)
Q3 = data.quantile(q=.75)
IQR = data.apply(stats.iqr)

#only keep rows in dataframe that have values within 1.5*IQR of Q1 and Q3
data_clean = data[~((data < (Q1-1.5*IQR)) | (data > (Q3+1.5*IQR))).any(axis=1)]

#find how many rows are left in the dataframe 
data_clean.shape

(89.3)

Za skoru yönteminin bir gözlemi aykırı değer olarak tanımlayıp kaldırdığını, çeyrekler arası aralık yönteminin ise toplamda 11 gözlemi aykırı değer olarak tanımlayıp çıkardığını görebiliriz.

Aykırı değerler ne zaman kaldırılır

Verilerinizde bir veya daha fazla aykırı değer mevcutsa öncelikle bunların veri girişi hatasından kaynaklanmadığından emin olmalısınız. Bazen bir kişi verileri kaydederken yanlış veri değerini girer.

Aykırı değerin bir veri girişi hatasının sonucu olduğu ortaya çıkarsa, ona veri kümesinin ortalaması veya medyanı gibi yeni bir değer atamaya karar verebilirsiniz.

Değer gerçekten aykırı bir değerse ve genel analiziniz üzerinde önemli bir etkisi olacaksa onu kaldırmayı seçebilirsiniz. Son raporunuzda veya analizinizde aykırı bir değeri kaldırdığınızı mutlaka belirtin.

Ek kaynaklar

Aynı anda birden fazla değişkenle çalışıyorsanız aykırı değerleri tespit etmek için Mahalanobis mesafesini kullanmak isteyebilirsiniz.

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir