Ce face DataFrame.resample()
resample() este un fel de groupby pentru date calendaristice: împarte rândurile pe intervale de timp, după regula rule, apoi aplici o funcție de agregare ca sum(), mean(), count() sau agg().
Tabelul trebuie să aibă un DatetimeIndex (de exemplu după set_index("data")) sau să indici coloana de date cu on="data". Fără ele apare TypeError.
Reguli frecvente: "D" (zi), "W" (săptămână terminată duminica), "ME" (lună, eticheta este ultima zi), "MS" (lună, eticheta este prima zi), "QE" (trimestru), "YE" (an). Intervalele fără date apar și ele în rezultat, cu 0 la sum() și cu valoare lipsă la mean().
Parametri
| Parametru | Descriere |
|---|---|
rule |
Lungimea intervalului: "D", "W", "ME", "MS", "QE", "YE", "h". |
on |
Numele coloanei de date, dacă datele nu sunt în index. |
closed |
Ce capăt al intervalului este inclus: "left" sau "right". |
label |
Cu ce capăt se etichetează intervalul în rezultat. |
Ce returnează
Un obiect Resampler; după sum(), mean() etc. primești un DataFrame sau o Series cu câte un rând pe interval.
Exemple
Exemplul 1: Vânzări zilnice adunate pe luni
Datele sunt puse în index cu set_index; cu "ME" fiecare lună este etichetată cu ultima ei zi.
import pandas as pd
vanzari = pd.DataFrame({
"data": pd.to_datetime(["2026-01-03", "2026-01-17", "2026-02-02", "2026-02-20", "2026-03-11"]),
"lei": [150, 90, 300, 120, 80],
}).set_index("data")
print(vanzari.resample("ME").sum())
Rezultat
lei
data
2026-01-31 240
2026-02-28 420
2026-03-31 80
Exemplul 2: Coloana de date indicată cu on=
Media pe săptămână, fără să muți coloana în index. Cu "W", fiecare săptămână este etichetată cu duminica în care se termină.
import pandas as pd
df = pd.DataFrame({
"data": pd.date_range("2026-10-01", periods=6, freq="3D"),
"lei": [100, 140, 90, 200, 160, 120],
})
print(df)
print(df.resample("W", on="data")["lei"].mean())
Rezultat
data lei
0 2026-10-01 100
1 2026-10-04 140
2 2026-10-07 90
3 2026-10-10 200
4 2026-10-13 160
5 2026-10-16 120
data
2026-10-04 120.0
2026-10-11 145.0
2026-10-18 140.0
Freq: W-SUN, Name: lei, dtype: float64
Exemplul 3: Mai multe calcule pe lună
import pandas as pd
comenzi = pd.Series([40, 60, 25, 75, 50],
index=pd.to_datetime(["2026-04-02", "2026-04-15", "2026-05-01", "2026-05-09", "2026-05-30"]))
print(comenzi.resample("MS").agg(["count", "sum", "mean"]))
Rezultat
count sum mean
2026-04-01 2 100 50.0
2026-05-01 3 150 50.0
Greșeli frecvente
- Apelezi
resamplepe un tabel cu index numeric. ApareTypeError: Only valid with DatetimeIndex...; foloseșteset_index("data")sauon="data". - Coloana de date este încă text. Transformă-o întâi cu
pd.to_datetime(). - Folosești regula
"M"din exemple vechi. În pandas 3 nu mai este acceptată: scrie"ME"sau"MS". - Te miri de rândurile cu 0 sau lipsă:
resamplecreează toate intervalele dintre prima și ultima dată, inclusiv cele fără date.
Comenzi înrudite
DataFrame.groupby(): Împarte tabelul în grupuri după una sau mai multe coloane, ca să calculezi totaluri, medii sau numărări pentru fiecare grup.agg() / aggregate(): Aplică mai multe funcții de agregare deodată, diferite pe coloane, cu nume alese de tine pentru coloanele rezultatului.DataFrame.rolling(): Calculează pe o fereastră mobilă de rânduri, de exemplu media ultimelor 3 luni, ca să netezești variațiile.pd.date_range(): Creează un șir de date la intervale egale: fiecare zi, fiecare sfârșit de lună sau fiecare luni dintr-o perioadă.
Întrebări & Exemple de Cod:
DataFrame.resample()Ai o nelămurire despre utilizarea comenzii
DataFrame.resample()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.