Pandas est pratique, n'est-ce pas? Je souhaite supprimer les données de Pandas DataFrame qui représentent plus de 1,5 fois le quadrant des valeurs aberrantes. Au lieu de supprimer la ligne entière en fonction de la valeur d'une colonne, essayez de détecter les valeurs aberrantes pour chaque colonne et remplissez-les avec NaN.
Référence: [Trouver des valeurs aberrantes dans le quadrant (IQR) lors de l'analyse de corrélation (Python) - Je vends des services et j'achète des maisons](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 #Gamme de quadrants
#Point de référence pour les valeurs aberrantes
outlier_min = q1 - (iqr) * 1.5
outlier_max = q3 + (iqr) * 1.5
#Exclut les valeurs hors limites
col[col < outlier_min] = None
col[col > outlier_max] = None
Si vous souhaitez placer les données dans une fonction d'apprentissage automatique telle que scikit-learn, remplissez les données supprimées avec fillna
, etc. Si vous utilisez cette méthode, les données aberrantes seront remplacées par une autre valeur, alors tenez-en compte lors de son utilisation: joy:
df.fillna(method='bfill')
Ayez une vie de Pandas amusante.
Recommended Posts