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 ?

Comment puis-je identifier et supprimer les valeurs aberrantes d'un DataFrame Pandas à l'aide des scores Z ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-30 12:39:14632parcourir

How Can I Identify and Remove Outliers from a Pandas DataFrame Using Z-scores?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn