Pandas ist bequem, nicht wahr? Ich möchte Daten aus Pandas DataFrame entfernen, die mehr als das 1,5-fache des Quadranten als Ausreißer sind. Versuchen Sie, Ausreißer für jede Spalte zu erkennen und mit NaN zu füllen, anstatt die gesamte Zeile basierend auf dem Wert in einer Spalte zu löschen.
Referenz: [Finden Sie Ausreißer im Quadranten (IQR) während der Korrelationsanalyse (Python) - Ich verkaufe Dienstleistungen und kaufe Häuser](http://www.ie-kau.net/entry/2016/ 04/14 /% E7% 9B% B8% E9% 96% A2% E5% 88% 86% E6% 9E% 90% E3% 81% AE% E6% 99% 82% E3% 81% AB% E5% 9B % 9B% E5% 88% 86% E4% BD% 8D% E7% AF% 84% E5% 9B% B2% 28IQR% 29% E3% 81% A7% E5% A4% 96% E3% 82% 8C% E5 % 80% A4% E3% 82% 92% E8% A6% 8B% E3% 81% A4% E3% 81% 91% E3% 82% 8B% EF% BC% 88Pyt)
drop_outlier.py
def drop_outlier(df):
for i, col in df.iteritems():
#Quadrant
q1 = col.describe()['25%']
q3 = col.describe()['75%']
iqr = q3 - q1 #Quadrantenbereich
#Bezugspunkt für Ausreißer
outlier_min = q1 - (iqr) * 1.5
outlier_max = q3 + (iqr) * 1.5
#Schließt Werte aus, die außerhalb des Bereichs liegen
col[col < outlier_min] = None
col[col > outlier_max] = None
Wenn Sie die Daten in eine maschinelle Lernfunktion wie Scikit-Learn einfügen möchten, füllen Sie die gelöschten Daten mit fillna
usw. aus. Wenn Sie diese Methode verwenden, werden die Ausreißerdaten durch einen anderen Wert ersetzt. Berücksichtigen Sie dies bei der Verwendung von: joy:
df.fillna(method='bfill')
Viel Spaß beim Leben der Pandas.
Recommended Posts