Ce face describe()
describe() dă un tabel de statistici pentru coloanele numerice: count (câte valori completate), mean (media), std (abaterea standard), min, cuartilele 25%, 50% (mediana), 75% și max. Coloanele de text sunt ignorate implicit.
Cu include="all" intră toate coloanele; pentru text apar unique (câte valori diferite), top (valoarea cea mai frecventă) și freq (de câte ori apare). Cu include="str" primești doar coloanele de text. Celulele care nu au sens pentru un tip de coloană rămân NaN.
Parametrul percentiles schimbă percentilele afișate (mediana apare mereu). Metoda merge și pe un singur Series.
Parametri
| Parametru | Descriere |
|---|---|
percentiles |
Lista percentilelor, între 0 și 1, de exemplu [0.1, 0.9]. Implicit [0.25, 0.5, 0.75]. |
include |
Ce tipuri de coloane intră: "all", "number", "str" sau o listă de tipuri. |
exclude |
Ce tipuri de coloane se lasă deoparte. |
Ce returnează
Un DataFrame cu statisticile (sau un Series, când pornești de la un Series).
Exemple
Exemplul 1: Statistici pentru coloanele numerice
Coloana nume este text, deci nu apare. Media vârstei este 16.8, iar media notelor 8.9.
import pandas as pd
df = pd.DataFrame({
"nume": ["Ana", "Mihai", "Ioana", "Radu", "Elena"],
"vârstă": [17, 16, 17, 18, 16],
"nota": [9.5, 8.0, 10.0, 7.5, 9.5],
})
print(df.describe())
Rezultat
vârstă nota
count 5.00000 5.000000
mean 16.80000 8.900000
std 0.83666 1.083974
min 16.00000 7.500000
25% 16.00000 8.000000
50% 17.00000 9.500000
75% 17.00000 9.500000
max 18.00000 10.000000
Exemplul 2: Toate coloanele sau doar textul
Iași apare de 3 ori din 5, deci este top, cu freq 3. round(2) scurtează zecimalele.
import pandas as pd
pd.set_option("display.width", 100)
df = pd.DataFrame({
"oraș": ["Iași", "Cluj", "Iași", "Brașov", "Iași"],
"vânzări": [1200, 1500, 950, 1100, 1430],
})
print(df.describe(include="all").round(2))
print(df.describe(include="str"))
Rezultat
oraș vânzări
count 5 5.00
unique 3 NaN
top Iași NaN
freq 3 NaN
mean NaN 1236.00
std NaN 228.54
min NaN 950.00
25% NaN 1100.00
50% NaN 1200.00
75% NaN 1430.00
max NaN 1500.00
oraș
count 5
unique 3
top Iași
freq 3
Exemplul 3: Percentile proprii, pe un Series
Cu percentiles=[0.1, 0.9] apar percentilele 10% și 90%, plus mediana (50%).
import pandas as pd
salarii = pd.Series([3800, 4200, 4500, 5200, 6100, 7400, 12500], name="salariu")
print(salarii.describe(percentiles=[0.1, 0.9]))
Rezultat
count 7.000000
mean 6242.857143
std 3021.510187
min 3800.000000
10% 4040.000000
90% 9440.000000
max 12500.000000
Name: salariu, dtype: float64
Greșeli frecvente
- Te miri că o coloană nu apare în
describe(). Este de tip text (de multe ori din cauza unei valori greșite în fișier); verifică cudf.dtypes. - Iei
countdrept numărul de rânduri.countnumără doar valorile completate; valorile lipsă nu intră. - Compari doar media când datele au valori extreme. Un salariu foarte mare trage media în sus; uită-te și la mediană (
50%).
Comenzi înrudite
DataFrame.info(): Afișează un rezumat al tabelului: numărul de rânduri, coloanele, câte valori completate are fiecare, tipurile și memoria.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.dtypes / select_dtypes(): dtypes arată tipul fiecărei coloane; select_dtypes păstrează doar coloanele de anumite tipuri (numere, text, date).DataFrame.groupby(): Împarte tabelul în grupuri după una sau mai multe coloane, ca să calculezi totaluri, medii sau numărări pentru fiecare grup.