API · SciPy

Fonction SciPy stats.zscore

Ce tutoriel expliquera ce qu'est la fonction stats z-score en utilisant le module Scipy en Python

Sur cette page

Le score z standardise une valeur en mesurant sa distance par rapport à la moyenne des données en unités d’écart type :

z = (X - μ) / σ

Ici, X est une valeur, μ est la moyenne et σ est l’écart type. Un score z décrit la distance à laquelle une valeur se situe par rapport à la moyenne et est utile pour comparer des observations sur la même échelle. Ce guide montre comment calculer les scores z avec SciPy pour des tableaux et un DataFrame pandas.

Utiliser scipy.stats.zscore

La fonction scipy.stats.zscore calcule des scores standardisés à partir d’une entrée de type tableau en utilisant sa moyenne et son écart type. Sa signature d’appel est scipy.stats.zscore(a, axis=0, ddof=0, nan_policy='propagate').

Paramètre Objectif
a Entrée requise de type tableau contenant les observations.
axis Axe le long duquel calculer la moyenne et l’écart type. La valeur par défaut est 0 ; pour un tableau unidimensionnel, elle utilise toutes les valeurs, tandis que pour un tableau multidimensionnel, elle calcule séparément le long de l’axe 0. Utilisez axis=None pour calculer sur toutes les valeurs ensemble.
ddof Degrés de liberté delta utilisés par le calcul de l’écart type. La valeur par défaut 0 utilise l’écart type de la population ; définissez ddof=1 pour l’écart type de l’échantillon.
nan_policy Contrôle la manière dont les valeurs NaN sont traitées. propagate (la valeur par défaut) laisse les NaN affecter les résultats le long de leur axe de calcul ; raise signale une erreur si des NaN sont présents ; omit exclut les NaN du calcul et laisse leurs positions de sortie à NaN.

Seul a est requis. Choisissez axis selon que chaque ligne, chaque colonne ou l’ensemble de l’entrée doit partager une moyenne et un écart type.

Calculer les scores z pour un tableau unidimensionnel

Pour un tableau unidimensionnel, la valeur par défaut axis=0 utilise l’ensemble complet des valeurs. Exécutez cet exemple avec NumPy et SciPy installés :

import numpy as np
from scipy import stats

values = np.array([10, 20, 30, 40, 50])
scores = stats.zscore(values)
print(np.round(scores, 3))

Cet exemple est fourni sous forme de code exécutable ; sa sortie n’a pas été exécutée à cette étape de rédaction. Un score négatif signifie que la valeur est inférieure à la moyenne, un score positif signifie qu’elle est supérieure à la moyenne, et un score de zéro marque la moyenne. L’amplitude donne la distance en unités d’écart type.

Calculer les scores z pour un tableau multidimensionnel

Pour un tableau bidimensionnel, la valeur par défaut axis=0 calcule les scores de chaque colonne à travers ses lignes. Le résultat conserve la forme de l’entrée. Passez axis=1 pour calculer séparément à travers chaque ligne, ou axis=None pour utiliser une moyenne et un écart type pour l’ensemble du tableau.

import numpy as np
from scipy import stats

data = np.array([[1, 10], [2, 20], [3, 30]])
scores = stats.zscore(data, axis=0)
print(np.round(scores, 3))

Le code illustre la standardisation par colonne et n’est pas exécuté ici ; aucune sortie n’est affirmée.

Calculer les scores z pour un DataFrame pandas

DataFrame.apply() applique une fonction à chaque colonne par défaut (axis=0). Appliquer stats.zscore de cette manière standardise chaque colonne indépendamment. Ce DataFrame fixe rend l’entrée reproductible :

import pandas as pd
from scipy import stats

data = pd.DataFrame({"height": [150, 160, 170], "weight": [50, 60, 70]})
scores = data.apply(stats.zscore)
print(scores.round(3))

Cet exemple n’est pas exécuté ici, donc aucun résultat affiché n’est affirmé. Chaque colonne a sa propre moyenne et son propre écart type ; utilisez data.apply(stats.zscore, axis=1) lorsque le calcul souhaité se fait à travers chaque ligne.