Pandas : comment calculer l’écart type pour chaque ligne



Vous pouvez utiliser la syntaxe de base suivante pour calculer l’écart type des valeurs pour chaque ligne d’un DataFrame pandas :

df.std(axis=1, numeric_only=True)

L’argument axis=1 indique aux pandas d’effectuer le calcul pour chaque ligne (au lieu de chaque colonne) et numeric_only=True indique aux pandas de ne prendre en compte que les colonnes numériques lors de l’exécution du calcul.

L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.

Exemple : calculer l’écart type pour chaque ligne dans Pandas

Supposons que nous ayons le DataFrame pandas suivant qui contient des informations sur les points marqués par divers joueurs de basket-ball au cours de quatre matchs différents :

import pandas as pd

#create DataFrame
df = pd.DataFrame({'player': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],
                   'game1': [18, 22, 19, 14, 14, 11, 20, 28],
                   'game2': [5, 7, 7, 9, 12, 9, 9, 4],
                   'game3': [11, 8, 10, 6, 6, 5, 9, 12],
                   'game4': [9, 8, 8, 9, 14, 15, 10, 11]})
                   
#view DataFrame
print(df)

  player  game1  game2  game3  game4
0      A     18      5     11      9
1      B     22      7      8      8
2      C     19      7     10      8
3      D     14      9      6      9
4      E     14     12      6     14
5      F     11      9      5     15
6      G     20      9      9     10
7      H     28      4     12     11

On peut utiliser la syntaxe suivante pour calculer l’écart type des points marqués par chaque joueur :

#calculate standard deviation for each row
df.std(axis=1, numeric_only=True)

0     5.439056
1     7.182154
2     5.477226
3     3.316625
4     3.785939
5     4.163332
6     5.354126
7    10.144785
dtype: float64

Voici comment interpréter le résultat :

  • L’écart type des points marqués par le joueur A est de 5,439 .
  • L’écart type des points marqués par le joueur B est de 7,182 .
  • L’écart type des points marqués par le joueur C est de 5,477 .

Et ainsi de suite.

Notez que la fonction std() calcule l’écart type de l’échantillon par défaut.

Si vous souhaitez plutôt calculer l’écart type de la population, vous devez utiliser l’argument ddof=0 :

#calculate population standard deviation for each row
df.std(axis=1, ddof=0, numeric_only=True)

0    4.747351
1    5.881366
2    4.807037
3    3.384910
4    3.983518
5    3.915150
6    4.892772
7    8.091179
dtype: float64

Connexes : Écart type de la population par rapport à l’échantillon : quand utiliser chacun

Pour attribuer les valeurs d’écart type à une nouvelle colonne, vous pouvez utiliser la syntaxe suivante :

#add new column to display standard deviation for each row
df['points_std'] = df.std(axis=1, numeric_only=True)

#view updated DataFrame
print(df)

  player  game1  game2  game3  game4  points_std
0      A     18      5     11      9    5.439056
1      B     22      7      8      8    7.182154
2      C     19      7     10      8    5.477226
3      D     14      9      6      9    3.316625
4      E     14     12      6     14    3.785939
5      F     11      9      5     15    4.163332
6      G     20      9      9     10    5.354126
7      H     28      4     12     11   10.144785

L’écart type des valeurs pour chaque ligne des colonnes game1 , game2 , game3 et game4 est désormais affiché dans la colonne points_std .

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans les pandas :

Comment obtenir la première rangée de Pandas DataFrame
Comment supprimer la première ligne dans Pandas DataFrame
Comment insérer une ligne dans un DataFrame Pandas

Ajouter un commentaire

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