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 dinddof(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).