Cum să agregezi date cu pandas
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 demerge()când vrei să păstrezi rândurile originale - Lansează
reset_index()dupăgroupbypentru a transforma indexul în coloană
Common Mistakes
- GroupBy fără
.agg()— returnează un obiect GroupBy, nu un DataFrame as_index=Falseuitat — coloana de grupare devine index, nu coloană- Transform în loc de aggregate (sau invers) —
transformpăstrează dimensiunea,aggo reduce - Agregare pe coloana greșită — verifică
df.dtypesînainte - Lanț de groupby-uri inutil — un singur
.agg()cu dicționar e suficient
FAQ
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