Ce face unique() / nunique()
unique() returnează valorile diferite dintr-un Series, fiecare o singură dată, în ordinea în care apar prima dată (nu sortate). Rezultatul este un array: pentru numere un array NumPy, pentru text un StringArray. Cu .tolist() îl transformi în listă Python. Funcția pd.unique face același lucru pe un array NumPy, un Index sau un Series.
nunique() numără valorile distincte. Implicit nu numără valorile lipsă (dropna=True), deși unique() le include în rezultat. Pe un DataFrame, nunique() dă numărul de valori distincte pentru fiecare coloană.
Parametri
| Parametru | Descriere |
|---|---|
values |
La pd.unique: un array NumPy, un Index sau un Series. O listă Python simplă nu este acceptată. |
dropna |
La nunique: dacă lasă deoparte valorile lipsă (implicit True). |
axis |
La DataFrame.nunique: 0 pe coloane (implicit), 1 pe rânduri. |
Ce returnează
unique: un array cu valorile distincte. nunique: un număr întreg (pe Series) sau un Series de numere (pe DataFrame).
Exemple
Exemplul 1: Valorile distincte dintr-o coloană
Orașele apar în ordinea primei apariții. tolist() dă o listă Python obișnuită.
import pandas as pd
orase = pd.Series(["Iași", "Cluj", "Iași", "Brașov", "Cluj"])
print(orase.unique())
print(orase.unique().tolist())
print(orase.nunique())
Rezultat
<StringArray>
['Iași', 'Cluj', 'Brașov']
Length: 3, dtype: str
['Iași', 'Cluj', 'Brașov']
3
Exemplul 2: Valori lipsă: unique le arată, nunique nu le numără
import numpy as np
import pandas as pd
note = pd.Series([10, 9, None, 10, 8, None])
print(note.unique())
print(note.nunique())
print(note.nunique(dropna=False))
print(pd.unique(np.array([3, 1, 3, 2, 1])))
Rezultat
[10. 9. nan 8.]
3
4
[3 1 2]
Exemplul 3: nunique pe toate coloanele
Câte valori diferite are fiecare coloană: 4 clienți, 2 orașe, 3 produse.
import pandas as pd
comenzi = pd.DataFrame({
"client": ["Ana", "Mihai", "Ana", "Ioana", "Radu"],
"oraș": ["Iași", "Cluj", "Iași", "Iași", "Cluj"],
"produs": ["carte", "pix", "caiet", "carte", "pix"],
})
print(comenzi.nunique())
Rezultat
client 4
oraș 2
produs 3
dtype: int64
Greșeli frecvente
- Te aștepți ca
unique()să sorteze valorile. Le păstrează în ordinea apariției; sortează după, de exemplu cusorted(s.unique().tolist()). - Folosești
len(s.unique())ca număr de valori distincte și obții cu 1 mai mult decâtnunique():unique()includeNaN,nunique()nu. - Dai o listă Python lui
pd.unique([3, 1, 3]): în pandas 3 primeștiTypeError: unique requires a Series, Index, ExtensionArray, np.ndarray or NumpyExtensionArray got list.Transformă lista înnp.arraysaupd.Series. - Apelezi
df.unique()pe un tabel întreg:AttributeError.uniqueexistă doar peSeries; pe tabel foloseștenunique()saudrop_duplicates().
Comenzi înrudite
value_counts(): Numără de câte ori apare fiecare valoare într-o coloană (sau fiecare combinație de valori pe rânduri), în ordine descrescătoare.pd.Series(): Creează o coloană de valori cu etichete (index): din listă, din dicționar sau dintr-o singură valoare.describe(): Calculează statistici rapide pe coloane: număr, medie, abatere standard, minim, cuartile, maxim; pentru text, valori unice și cea mai frecventă.dropna(): Șterge rândurile (sau coloanele) care au valori lipsă: oricare, doar complet goale sau doar în anumite coloane.
Întrebări & Exemple de Cod:
unique() / nunique()Ai o nelămurire despre utilizarea comenzii
unique() / nunique()sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.