Hoe uitschieters in python te verwijderen


Een uitschieter is een waarneming die abnormaal ver verwijderd is van andere waarden in een dataset. Uitschieters kunnen problematisch zijn omdat ze de resultaten van een analyse kunnen beïnvloeden.

In deze tutorial wordt uitgelegd hoe u uitschieters in Python kunt identificeren en verwijderen.

Hoe uitschieters in Python te identificeren

Voordat u uitbijters kunt verwijderen, moet u eerst beslissen wat u als een uitbijter beschouwt. Er zijn twee veel voorkomende manieren om dit te doen:

1. Gebruik het interkwartielbereik.

De interkwartielafstand (IQR) is het verschil tussen het 75e percentiel (Q3) en het 25e percentiel (Q1) in een dataset. Het meet de verdeling van de gemiddelde 50% van de waarden.

Je kunt een waarneming als uitschieter definiëren als deze 1,5 maal de interkwartielafstand boven het derde kwartiel (Q3) of 1,5 maal de interkwartielafstand onder het eerste kwartiel (Q1) ligt.

Uitschieters = Waarnemingen > Q3 + 1,5*IQR of Q1 – 1,5*IQR

2. Gebruik z-scores.

Een z-score vertelt u hoeveel standaarddeviaties een bepaalde waarde afwijkt van het gemiddelde. We gebruiken de volgende formule om een z-score te berekenen:

z = (X – μ) / σ

Goud:

  • X is een enkele onbewerkte gegevenswaarde
  • μ is het populatiegemiddelde
  • σ is de standaarddeviatie van de populatie

U kunt een waarneming als uitschieter definiëren als de z-score kleiner dan -3 of groter dan 3 is.

Uitschieters = Waarnemingen met z-scores > 3 of < -3

Hoe uitschieters in Python te verwijderen

Zodra u hebt besloten wat u als een uitbijter beschouwt, kunt u deze identificeren en uit een dataset verwijderen. Om te illustreren hoe dit te doen, zullen we de volgende panda’s DataFrame gebruiken:

 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

We kunnen vervolgens uitschieters definiëren en verwijderen met behulp van de z-score-methode of de interkwartielbereikmethode:

Z-score-methode:

 #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)

Interkwartielbereikmethode:

 #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)

We kunnen zien dat de za-scoremethode één observatie als uitschieter identificeerde en verwijderde, terwijl de interkwartielbereikmethode in totaal 11 observaties als uitschieters identificeerde en verwijderde.

Wanneer uitschieters verwijderen?

Als er één of meer uitschieters in uw gegevens aanwezig zijn, moet u er eerst voor zorgen dat deze niet het gevolg zijn van een gegevensinvoerfout. Soms voert een individu eenvoudigweg de verkeerde gegevenswaarde in terwijl hij de gegevens opslaat.

Als de uitbijter het resultaat blijkt te zijn van een gegevensinvoerfout, kunt u besluiten om er een nieuwe waarde aan toe te kennen, zoals het gemiddelde of de mediaan van de dataset.

Als de waarde echt een uitschieter is, kunt u ervoor kiezen deze te verwijderen als deze een aanzienlijke impact heeft op uw algehele analyse. Zorg ervoor dat u in uw eindrapport of analyse vermeldt dat u een uitbijter hebt verwijderd.

Aanvullende bronnen

Als u met meerdere variabelen tegelijk werkt, wilt u wellicht de Mahalanobis-afstand gebruiken om uitschieters te detecteren.

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert