np.std() în NumPy

Calculează abaterea standard (np.std) și varianța (np.var); ddof=0 pentru populație, ddof=1 pentru eșantion.

Sintaxă
np.std(a, axis=None, dtype=None, ddof=0, keepdims=False)
np.var(a, axis=None, dtype=None, ddof=0, keepdims=False)

Ce face np.std()

np.var() calculează varianța: media pătratelor distanțelor față de medie. np.std() este rădăcina pătrată a varianței (abaterea standard) și se exprimă în aceeași unitate ca datele, de aceea se citește mai ușor.

Parametrul ddof schimbă numitorul: suma pătratelor se împarte la N - ddof. Implicit ddof=0 (împărțire la N, formula pentru o populație întreagă). Pentru un eșantion din care vrei să estimezi împrăștierea unei populații mai mari se folosește ddof=1 (împărțire la N – 1).

Atenție: pandas (Series.std()) și modulul statistics (stdev) folosesc implicit varianta cu N – 1, deci pot da alt rezultat decât np.std() pe aceleași date.

Parametri

Parametru Descriere
a Datele.
axis Axa pe care se calculează; None = tot tabloul.
ddof „Delta degrees of freedom”: numitorul este N - ddof. Implicit 0.
keepdims Păstrează axa calculată cu lungimea 1.

Ce returnează

Un scalar np.float64 sau un tablou de valori.

Exemple

Exemplul 1: ddof=0 și ddof=1

import numpy as np

note = np.array([7, 8, 9, 10, 6])
print("Media:", note.mean())
print("Varianța (ddof=0):", np.var(note))
print("Varianța (ddof=1):", np.var(note, ddof=1))
print("Abaterea std (ddof=0):", round(float(np.std(note)), 4))
print("Abaterea std (ddof=1):", round(float(np.std(note, ddof=1)), 4))

Rezultat

Media: 8.0
Varianța (ddof=0): 2.0
Varianța (ddof=1): 2.5
Abaterea std (ddof=0): 1.4142
Abaterea std (ddof=1): 1.5811

Exemplul 2: Care elev are note mai constante

Ana și Mihai au aceeași medie, dar notele lui Mihai sunt mult mai împrăștiate.

import numpy as np

note = np.array([
    [8, 8, 9, 7],    # Ana
    [10, 5, 10, 6],  # Mihai
])
print("Medii:", note.mean(axis=1))
print("Abateri std:", note.std(axis=1).round(2))

Rezultat

Medii: [8.   7.75]
Abateri std: [0.71 2.28]

Exemplul 3: Comparație cu modulul statistics

statistics.stdev împarte la N – 1, deci se potrivește cu ddof=1.

import statistics
import numpy as np

temperaturi = [12.5, 14.0, 13.2, 15.8, 11.9]
print(round(statistics.stdev(temperaturi), 4))
print(round(float(np.std(temperaturi, ddof=1)), 4))
print(round(float(np.std(temperaturi)), 4))

Rezultat

1.5156
1.5156
1.3556

Greșeli frecvente

  • Compari rezultatul lui np.std() cu cel din pandas sau Excel (STDEV) și nu se potrivesc: diferența vine din ddof (0 în NumPy, 1 în pandas).
  • Interpretezi varianța în aceeași unitate ca datele. Varianța este în unități la pătrat (lei²); pentru lei folosește abaterea standard.

Comenzi înrudite

  • np.mean(): Calculează media aritmetică (np.mean), mediana (np.median) și media ponderată (np.average cu weights).
  • np.percentile(): Calculează percentile (q între 0 și 100) cu np.percentile sau cuantile (q între 0 și 1) cu np.quantile.
  • np.min() și np.max(): Găsește valoarea minimă și maximă (np.min, np.max), diferența dintre ele (np.ptp) și maximul element cu element (np.maximum).