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

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *