Comment standardiser les données en Python : avec des exemples



Standardiser un ensemble de données signifie mettre à l’échelle toutes les valeurs de l’ensemble de données de telle sorte que la valeur moyenne soit 0 et l’écart type soit 1.

Nous utilisons la formule suivante pour normaliser les valeurs dans un ensemble de données :

x nouveau = (x jex ) / s

où:

  • x i : la ième valeur de l’ensemble de données
  • x : La moyenne de l’échantillon
  • s : l’écart type de l’échantillon

Nous pouvons utiliser la syntaxe suivante pour normaliser rapidement toutes les colonnes d’un DataFrame pandas en Python :

(df-df.mean())/df.std()

Les exemples suivants montrent comment utiliser cette syntaxe dans la pratique.

Exemple 1 : standardiser toutes les colonnes de DataFrame

Le code suivant montre comment standardiser toutes les colonnes d’un DataFrame pandas :

import pandas as pd

#create data frame
df = pd.DataFrame({'y': [8, 12, 15, 14, 19, 23, 25, 29],
                   'x1': [5, 7, 7, 9, 12, 9, 9, 4],
                   'x2': [11, 8, 10, 6, 6, 5, 9, 12],
                   'x3': [2, 2, 3, 2, 5, 5, 7, 9]})

#view data frame
df

	y	x1	x2	x3
0	8	5	11	2
1	12	7	8	2
2	15	7	10	3
3	14	9	6	2
4	19	12	6	5
5	23	9	5	5
6	25	9	9	7
7	29	4	12	9

#standardize the values in each column
df_new = (df-df.mean())/df.std()

#view new data frame
df_new

	        y	       x1	       x2	       x3
0	-1.418032	-1.078639	 1.025393	-0.908151
1	-0.857822	-0.294174	-0.146485	-0.908151
2	-0.437664	-0.294174	 0.634767	-0.525772
3	-0.577717	 0.490290	-0.927736	-0.908151
4	 0.122546	 1.666987	-0.927736	 0.238987
5	 0.682756	 0.490290	-1.318362	 0.238987
6	 0.962861	 0.490290	 0.244141	 1.003746
7	 1.523071	-1.470871	 1.416019	 1.768505

On peut vérifier que la moyenne et l’écart type de chaque colonne sont respectivement égaux à 0 et 1 :

#view mean of each column
df_new.mean()

y     0.000000e+00
x1    2.775558e-17
x2   -4.163336e-17
x3    5.551115e-17
dtype: float64

#view standard deviation of each column
df_new.std()

y     1.0
x1    1.0
x2    1.0
x3    1.0
dtype: float64

Exemple 2 : normaliser des colonnes spécifiques de DataFrame

Parfois, vous souhaiterez peut-être uniquement normaliser des colonnes spécifiques dans un DataFrame.

Par exemple, pour de nombreux algorithmes d’apprentissage automatique, vous souhaiterez peut-être uniquement standardiser les variables prédictives avant d’ajuster un certain modèle aux données.

Le code suivant montre comment standardiser des colonnes spécifiques dans un DataFrame pandas :

import pandas as pd

#create data frame
df = pd.DataFrame({'y': [8, 12, 15, 14, 19, 23, 25, 29],
                   'x1': [5, 7, 7, 9, 12, 9, 9, 4],
                   'x2': [11, 8, 10, 6, 6, 5, 9, 12],
                   'x3': [2, 2, 3, 2, 5, 5, 7, 9]})

#view data frame
df

	y	x1	x2	x3
0	8	5	11	2
1	12	7	8	2
2	15	7	10	3
3	14	9	6	2
4	19	12	6	5
5	23	9	5	5
6	25	9	9	7
7	29	4	12	9

#define predictor variable columns
df_x = df[['x1', 'x2', 'x3']]

#standardize the values for each predictor variable
df[['x1', 'x2', 'x3']] = (df_x-df_x.mean())/df_x.std()

#view new data frame
df

         y	       x1	       x2	       x3
0	8	-1.078639	 1.025393	-0.908151
1	12	-0.294174	-0.146485	-0.908151
2	15	-0.294174	 0.634767	-0.525772
3	14	 0.490290	-0.927736	-0.908151
4	19	 1.666987	-0.927736	 0.238987
5	23	 0.490290	-1.318362	 0.238987
6	25	 0.490290	 0.244141	 1.003746
7	29	-1.470871	 1.416019	 1.768505

Notez que la colonne « y » reste inchangée, mais les colonnes « x1 », « x2 » et « x3 » sont toutes standardisées.

Nous pouvons vérifier que la moyenne et l’écart type de chaque colonne de variables prédictives sont respectivement égaux à 0 et 1 :

#view mean of each predictor variable column
df[['x1', 'x2', 'x3']].mean()

x1    2.775558e-17
x2   -4.163336e-17
x3    5.551115e-17
dtype: float64

#view standard deviation of each predictor variable column
df[['x1', 'x2', 'x3']].std()

x1    1.0
x2    1.0
x3    1.0
dtype: float64

Ressources additionnelles

Comment normaliser les colonnes dans un DataFrame Pandas
Comment supprimer les valeurs aberrantes en Python
Standardisation ou normalisation : quelle est la différence ?

Ajouter un commentaire

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