Skip to content

Cum să agregezi date cu pandas

DodaTech Updated 2025-01-15 2 min read

In this tutorial, you'll learn about Cum să agregezi date cu pandas. We cover key concepts, practical examples, and best practices.

Agregarea datelor în pandas folosește GroupBy, aggregate și transform pentru a calcula statistici pe grupuri — sume, medii, maxime — într-o singură linie de cod.

The Problem

Analiza datelor necesită aproape întotdeauna calcularea de metrici pe grupuri: vânzări per categorie, medie per oraș, total per client. O abordare manuală cu bucle este lentă, greoaie și predispusă la erori.

The Wrong Way

import pandas as pd

df = pd.DataFrame({
    "categorie": ["A", "A", "B", "B", "A"],
    "valoare": [100, 200, 300, 400, 500]
})

grupuri = {}
for cat in df["categorie"].unique():
    subset = df[df["categorie"] == cat]
    grupuri[cat] = subset["valoare"].sum()
print(grupuri)

Problemă: Abordarea manuală este lentă pentru seturi mari și nu se scalează la operații multiple.

The Right Way

import pandas as pd

df = pd.DataFrame({
    "categorie": ["A", "A", "B", "B", "A"],
    "valoare": [100, 200, 300, 400, 500]
})

rezultat = df.groupby("categorie").agg({
    "valoare": ["sum", "mean", "count", "max"]
})
print(rezultat)

Output:

        valoare               
            sum mean count max
categorie                     
A           800  267     3  500
B           700  350     2  400

Step-by-Step Fix

1. Grupează datele

Folosește df.groupby("coloana") pentru a defini criteriul de grupare.

2. Aplică agregări multiple cu .agg()

rezultat = df.groupby(["categorie", "oras"]).agg(
    total_vanzari=("valoare", "sum"),
    medie=("valoare", "mean"),
    numar_comenzi=("id", "count")
)

3. Folosește transform() pentru a păstra dimensiunea originală

df["medie_categorie"] = df.groupby("categorie")["valoare"].transform("mean")

transform() returnează un Series cu aceeași lungime ca DataFrame-ul original, util pentru a adăuga coloane fără a reduce rândurile.

Prevention Tips

  • Folosește .agg() cu dicționar pentru agregări diferite pe coloane diferite
  • Preferă transform() în loc de merge() când vrei să păstrezi rândurile originale
  • Lansează reset_index() după groupby pentru a transforma indexul în coloană

Common Mistakes

  1. GroupBy fără .agg() — returnează un obiect GroupBy, nu un DataFrame
  2. as_index=False uitat — coloana de grupare devine index, nu coloană
  3. Transform în loc de aggregate (sau invers)transform păstrează dimensiunea, agg o reduce
  4. Agregare pe coloana greșită — verifică df.dtypes înainte
  5. Lanț de groupby-uri inutil — un singur .agg() cu dicționar e suficient

FAQ

### Care e diferența dintre .agg() și .transform()?

.agg() returnează un rezultat redus (un rând per grup). .transform() returnează același număr de rânduri ca originalul.

### Pot grupa după mai multe coloane?

Da, df.groupby(["categorie", "oras"]) creează un MultiIndex pe rânduri.

### Cum redenumesc coloanele după agregare?

Folosește .agg(nou_nume=("coloana", "funcție")) — sintaxa numită.

Construit de dezvoltătorii Doda Browser, DodaZIP și Durga Antivirus Pro. Instrumentele DodaTech se integrează perfect cu pandas pentru productivitate și securitate sporite.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro