Nou Generator de prompt AI — scrie prompturi mai bune pentru ChatGPT, Claude și Gemini →

pd.qcut() în pandas

Împarte valorile în grupe cu același număr de elemente, după cuantile: q=4 dă cuartile, q=10 dă decile.

Sintaxă
pd.qcut(x, q, labels=None, retbins=False, precision=3, duplicates='raise')

Ce face pd.qcut()

pd.qcut() alege singur limitele intervalelor astfel încât fiecare grupă să aibă aproximativ același număr de valori. Cu q=4 primești cuartile: cele mai mici 25% din valori, următoarele 25% și așa mai departe.

q poate fi și o listă de cuantile, de exemplu [0, 0.5, 0.9, 1] pentru „jumătatea de jos”, „până la 90%” și „primele 10%”. Cu labels dai nume grupelor; cu retbins=True primești și limitele calculate.

Dacă multe valori sunt egale, unele limite pot coincide și apare ValueError: Bin edges must be unique. Atunci folosește mai puține grupe sau duplicates="drop".

Parametri

Parametru Descriere
x Valorile de împărțit: o listă sau o Series de numere.
q Numărul de grupe (4 = cuartile) sau lista de cuantile între 0 și 1.
labels Numele grupelor sau False pentru numere 0, 1, 2…
retbins True: returnează și limitele intervalelor.
duplicates "raise" (implicit) sau "drop" pentru limitele care se repetă.

Ce returnează

O Series de tip category; cu retbins=True, un tuplu (categorii, limite).

Exemple

Exemplul 1: Cuartile pentru vânzările agenților

8 agenți împărțiți în 4 grupe: câte 2 în fiecare.

import pandas as pd

df = pd.DataFrame({"agent": ["Ana", "Mihai", "Elena", "Radu", "Ioana", "Dan", "Maria", "Vlad"],
                   "lei": [1200, 3400, 800, 2500, 4100, 1900, 3000, 1500]})
df["cuartila"] = pd.qcut(df["lei"], q=4, labels=["Q1", "Q2", "Q3", "Q4"])
print(df.sort_values("lei"))
print(df["cuartila"].value_counts(sort=False))

Rezultat

   agent   lei cuartila
2  Elena   800       Q1
0    Ana  1200       Q1
7   Vlad  1500       Q2
5    Dan  1900       Q2
3   Radu  2500       Q3
6  Maria  3000       Q3
1  Mihai  3400       Q4
4  Ioana  4100       Q4
cuartila
Q1    2
Q2    2
Q3    2
Q4    2
Name: count, dtype: int64

Exemplul 2: Cuantile alese și limitele calculate

import pandas as pd

punctaje = pd.Series([55, 62, 70, 71, 78, 80, 85, 88, 93, 99])
grupe, limite = pd.qcut(punctaje, q=[0, 0.5, 0.9, 1],
                        labels=["jumătatea de jos", "până la 90%", "primii 10%"], retbins=True)
print(limite)
print(grupe.value_counts(sort=False))

Rezultat

[55.  79.  93.6 99. ]
jumătatea de jos    5
până la 90%         4
primii 10%          1
Name: count, dtype: int64

Exemplul 3: Diferența față de pd.cut

Pe aceleași valori, cut face intervale de lungime egală (grupe inegale ca număr), iar qcut face grupe egale ca număr.

import pandas as pd

venituri = pd.Series([2000, 2200, 2500, 2600, 3000, 3200, 9000, 15000])
print(pd.cut(venituri, bins=4).value_counts(sort=False).tolist())
print(pd.qcut(venituri, q=4).value_counts(sort=False).tolist())

Rezultat

[6, 0, 1, 1]
[2, 2, 2, 2]

Greșeli frecvente

  • Aplici qcut pe o coloană cu multe valori egale și primești ValueError: Bin edges must be unique. Folosește duplicates="drop" sau mai puține grupe.
  • Confunzi q cu limitele: q=[0, 50, 100] nu înseamnă valori, ci cuantile, care trebuie să fie între 0 și 1.
  • Dai alt număr de etichete decât numărul de grupe; apare ValueError.

Comenzi înrudite

  • pd.cut(): Împarte valori numerice în intervale stabilite de tine (de exemplu grupe de vârstă) și pune fiecărei valori eticheta intervalului.
  • 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.
  • DataFrame.groupby(): Împarte tabelul în grupuri după una sau mai multe coloane, ca să calculezi totaluri, medii sau numărări pentru fiecare grup.
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: pd.qcut()

Ai o nelămurire despre utilizarea comenzii pd.qcut() 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.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.