Ce face np.percentile()
Percentila q este valoarea sub care se află q% din date. Percentila 50 este mediana, iar percentilele 25 și 75 sunt quartilele. np.percentile() primește q între 0 și 100, iar np.quantile() face același calcul cu q între 0 și 1 (de exemplu 0.25).
q poate fi un singur număr sau o listă; pentru o listă primești un tablou cu câte o valoare pentru fiecare q. Când percentila cade între două valori, implicit (method='linear') se face interpolare liniară între ele. Alte metode, ca 'lower', 'higher' sau 'nearest', returnează o valoare existentă din date.
np.quantile() a apărut în NumPy 1.15; np.percentile() există de mult mai demult. Parametrul method a înlocuit vechiul interpolation în NumPy 1.22.
Parametri
| Parametru | Descriere |
|---|---|
a |
Datele. |
q |
Percentila (0–100) la percentile sau cuantila (0–1) la quantile; un număr sau o listă. |
axis |
Axa pe care se calculează; None = tot tabloul. |
method |
Cum se alege valoarea între două puncte: 'linear' (implicit), 'lower', 'higher', 'nearest', 'midpoint' și altele. |
keepdims |
Păstrează axa calculată cu lungimea 1. |
Ce returnează
Un scalar sau un tablou; dacă q este o listă, prima axă a rezultatului corespunde valorilor din q.
Exemple
Exemplul 1: Quartilele timpilor de livrare
import numpy as np
minute = np.array([22, 35, 28, 40, 31, 25, 50, 33, 29, 27])
q1, mediana, q3 = np.percentile(minute, [25, 50, 75])
print("Q1:", q1, "Mediana:", mediana, "Q3:", q3)
print("90% dintre livrări sub", np.percentile(minute, 90), "minute")
Rezultat
Q1: 27.25 Mediana: 30.0 Q3: 34.5
90% dintre livrări sub 41.0 minute
Exemplul 2: quantile și percentile dau același rezultat
import numpy as np
note = np.array([4, 5, 6, 7, 7, 8, 9, 10])
print(np.percentile(note, 25))
print(np.quantile(note, 0.25))
print(np.quantile(note, 0.25, method="lower"))
Rezultat
5.75
5.75
5
Exemplul 3: Percentile pe fiecare rând
Rândurile sunt Iași și Cluj; mediana se calculează separat pentru fiecare oraș.
import numpy as np
chirii = np.array([
[1800, 2100, 2500, 1900, 3000], # Iași
[2600, 2900, 3500, 2700, 4200], # Cluj
])
print(np.percentile(chirii, 50, axis=1))
print(np.quantile(chirii, [0.25, 0.75], axis=1))
Rezultat
[2100. 2900.]
[[1900. 2700.]
[2500. 3500.]]
Greșeli frecvente
- Dai lui
np.quantile()valori între 0 și 100 (de exemplu 25): primeștiValueError, pentru că acoloqtrebuie să fie între 0 și 1. - Te aștepți ca percentila să fie mereu o valoare din date. Cu metoda implicită
'linear'se face interpolare; pentru o valoare existentă foloseștemethod='lower'sau'nearest'. - Folosești vechiul parametru
interpolation=: este depreciat din NumPy 1.22. Foloseștemethod=.
Comenzi înrudite
np.mean(): Calculează media aritmetică (np.mean), mediana (np.median) și media ponderată (np.average cu weights).np.std(): Calculează abaterea standard (np.std) și varianța (np.var); ddof=0 pentru populație, ddof=1 pentru eșantion.np.sort(): Sortează elementele unui tablou: np.sort returnează o copie, a.sort() sortează pe loc; ordinea descrescătoare cu [::-1].np.nan și funcțiile nan*: Lucrul cu valori lipsă: np.nan, np.isnan și funcțiile nansum, nanmean, nanmin, nanmax care ignoră NaN.