Comment normaliser les colonnes dans un DataFrame Pandas
Souvent, vous souhaiterez peut-être normaliser les valeurs de données d’une ou plusieurs colonnes dans un DataFrame pandas.
Ce tutoriel explique deux façons de procéder :
1. Normalisation Min-Max
- Objectif : Convertit chaque valeur de données en une valeur comprise entre 0 et 1.
- Formule : Nouvelle valeur = (valeur – min) / (max – min)
2. Normalisation moyenne
- Objectif : met à l’échelle les valeurs de telle sorte que la moyenne de toutes les valeurs soit 0 et std. dév. est 1.
- Formule : Nouvelle valeur = (valeur – moyenne) / (écart type)
Voyons un exemple de la façon d’utiliser chaque méthode sur un DataFrame pandas.
Exemple 1 : normalisation min-max
Supposons que nous ayons le DataFrame pandas suivant :
import pandas as pd #create DataFrame df = pd.DataFrame({'points': [25, 12, 15, 14, 19], 'assists': [5, 7, 7, 9, 12], 'rebounds': [11, 8, 10, 6, 6]}) #view DataFrame print(df) points assists rebounds 0 25 5 11 1 12 7 8 2 15 7 10 3 14 9 6 4 19 12 6
Nous pouvons utiliser le code suivant pour appliquer une normalisation min-max à chaque colonne du DataFrame :
(df-df.min())/(df.max()-df.min()) points assists rebounds 0 1.000000 0.000000 1.0 1 0.000000 0.285714 0.4 2 0.230769 0.285714 0.8 3 0.153846 0.571429 0.0 4 0.538462 1.000000 0.0
La valeur max dans chaque colonne est désormais égale à 1 et la valeur min dans chaque colonne est désormais égale à 0 , toutes les autres valeurs étant comprises entre 0 et 1.
Exemple 2 : normalisation moyenne
Supposons encore une fois que nous ayons le DataFrame pandas suivant :
import pandas as pd #create DataFrame df = pd.DataFrame({'points': [25, 12, 15, 14, 19], 'assists': [5, 7, 7, 9, 12], 'rebounds': [11, 8, 10, 6, 6]}) #view DataFrame print(df) points assists rebounds 0 25 5 11 1 12 7 8 2 15 7 10 3 14 9 6 4 19 12 6
Nous pouvons utiliser le code suivant pour appliquer une normalisation moyenne à chaque colonne du DataFrame :
(df-df.mean())/df.std() points assists rebounds 0 1.554057 -1.133893 1.227881 1 -0.971286 -0.377964 -0.087706 2 -0.388514 -0.377964 0.789352 3 -0.582772 0.377964 -0.964764 4 0.388514 1.511858 -0.964764
Les valeurs de chaque colonne sont désormais normalisées de telle sorte que la moyenne des valeurs de chaque colonne soit 0 et l’écart type des valeurs de chaque colonne soit 1.
Si un point de données particulier a une valeur normalisée supérieure à 0, cela indique que le point de données est supérieur à la moyenne de sa colonne. À l’inverse, une valeur normalisée inférieure à 0 indique que le point de données est inférieur à la moyenne de sa colonne.
Ressources additionnelles
Pandas : comment regrouper et agréger sur plusieurs colonnes
Comment filtrer un DataFrame Pandas sur plusieurs conditions
Comment compter les valeurs manquantes dans un DataFrame Pandas