Exercice 76 / 100

Stats — Descriptives Python

Calcule les stats descriptives (moyenne, médiane, écart-type, quartiles) d'une série de données avec scipy et numpy

Les statistiques descriptives résument un échantillon. Avec scipy + numpy, on accède à toutes les mesures classiques + des indicateurs de forme (skewness, kurtosis).

Import

import numpy as np from scipy import stats

Tendance centrale

np.mean(data) moyenne np.median(data) médiane stats.mode(data, keepdims=True).mode[0] mode (valeur la plus fréquente)

Dispersion

np.std(data, ddof=1) écart-type d'échantillon (divise par n-1) np.var(data, ddof=1) variance d'échantillon stats.iqr(data) IQR = Q3 - Q1 (interquartile range) np.ptp(data) étendue (max - min)

ddof=1 (degrees of freedom = 1) est la convention pour les échantillons. Sans ddof, NumPy divise par n (population). Pour des données réelles : presque toujours ddof=1.

Forme de la distribution

stats.skew(data) asymétrie > 0 : queue à droite (distribution étalée vers les grandes valeurs) < 0 : queue à gauche = 0 : symétrique (loi normale = 0)
Le signe de skew dit de quel côté la distribution s'étale : à zéro elle est symétrique, au-dessus la queue part vers les grandes valeurs, en dessous vers les petites
stats.kurtosis(data) aplatissement (Fisher : 0 = normale) > 0 : queues plus épaisses qu'une normale (valeurs extrêmes plus fréquentes) < 0 : queues plus fines

Exemple complet

data = np.array([23, 25, 28, 30, 32, 35, 22, 27, 31, 29, 26, 33, 24, 28, 30])
print('Moyenne:', np.mean(data)) print('Médiane:', np.median(data)) print('Mode:', stats.mode(data, keepdims=True).mode[0]) print('Écart-type:', np.std(data, ddof=1)) print('Skewness:', stats.skew(data)) print('Kurtosis:', stats.kurtosis(data)) print('IQR:', stats.iqr(data))

Si skewness ≈ 0 et kurtosis ≈ 0, la distribution est proche d'une normale. Sinon, certains tests statistiques (t-test) peuvent être moins fiables.

exercise.py

Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →