Maison >développement back-end >Tutoriel Python >Comment puis-je identifier et supprimer les valeurs aberrantes d'un DataFrame Pandas à l'aide des scores Z ?
Identifier et exclure les valeurs aberrantes dans un DataFrame pandas
Dans un DataFrame pandas avec plusieurs colonnes, l'identification et l'exclusion des valeurs aberrantes en fonction de valeurs de colonne spécifiques peuvent améliorer l’exactitude et la fiabilité des données. Les valeurs aberrantes, ou valeurs extrêmes qui s'écartent considérablement de la majorité des données, peuvent fausser les résultats de l'analyse et conduire à des conclusions incorrectes.
Pour filtrer efficacement les valeurs aberrantes, une approche robuste consiste à s'appuyer sur des techniques statistiques. Une méthode consiste à utiliser le score Z, une mesure du nombre d’écarts types d’une valeur par rapport à la moyenne. Les lignes dont les scores Z dépassent un seuil prédéfini peuvent être considérées comme des valeurs aberrantes.
Utilisation de sciPy.stats.zscore
La bibliothèque sciPy fournit la fonction zscore() pour calculer Z -scores pour chaque colonne d'un DataFrame. Voici une solution élégante pour détecter et exclure les valeurs aberrantes :
import pandas as pd import numpy as np from scipy import stats df = pd.DataFrame({'Vol': [1200, 1220, 1215, 4000, 1210]}) outlier_threshold = 3 # Compute Z-scores for the 'Vol' column zscores = np.abs(stats.zscore(df['Vol'])) # Create a mask to identify rows with outliers outlier_mask = zscores > outlier_threshold # Exclude rows with outliers df_without_outliers = df[~outlier_mask]
Cette approche identifie efficacement les lignes aberrantes et les supprime du DataFrame.
Gestion de plusieurs colonnes
En cas de plusieurs colonnes, la détection des valeurs aberrantes peut être appliquée à une colonne spécifique ou à toutes les colonnes simultanément :
# Outliers in at least one column outlier_mask = (np.abs(stats.zscore(df)) < outlier_threshold).all(axis=1) # Remove rows with outliers in any column df_without_outliers = df[~outlier_mask]
# Outliers in a specific column ('Vol') zscores = np.abs(stats.zscore(df['Vol'])) outlier_mask = zscores > outlier_threshold # Remove rows with outliers in the 'Vol' column df_without_outliers = df[~outlier_mask]
En employant des méthodes statistiques telles que les calculs du score Z, il est possible de détecter et d'exclure efficacement les valeurs aberrantes dans un DataFrame pandas, garantissant ainsi des données d'analyse plus propres et plus fiables.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!