ConsigneCalcule 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 npfrom scipy import statsnp.mean(data) moyennenp.median(data) médianestats.mode(data, keepdims=True).mode[0] mode (valeur la plus fréquente)np.std(data, ddof=1) écart-type d'échantillon (divise par n-1)np.var(data, ddof=1) variance d'échantillonstats.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.
stats.skew(data) asymétrie > 0 : queue à droite (distribution étalée vers les grandes valeurs) < 0 : queue à gauche = 0 : aucun étalement d'un côté plutôt que de l'autre (toute distribution symétrique donne 0, la loi normale comprise, mais un 0 ne prouve pas la symétrie)stats.kurtosis(data) aplatissement (Fisher : 0 = normale) > 0 : queues plus épaisses qu'une normale (valeurs extrêmes plus fréquentes) < 0 : queues plus finesdata = 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.
Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →