Cum să lucrezi cu serii temporale în pandas
In this tutorial, you'll learn about Cum să lucrezi cu serii temporale în pandas. We cover key concepts, practical examples, and best practices.
Seriile temporale în pandas se manipulează cu DatetimeIndex, resample și rolling — instrumente esențiale pentru analiza datelor pe intervale de timp, de la tick-uri financiare la loguri de server.
The Problem
Datele cu timestamp-uri (vânzări zilnice, loguri de server, prețuri financiare) nu pot fi analizate eficient fără indexare temporală. Operații ca "media pe săptămâni", "fill la zile lipsă" sau "medie mobilă pe 7 zile" sunt imposibile cu metode standard.
The Wrong Way
import pandas as pd
df = pd.DataFrame({
"data": ["2025-01-01", "2025-01-03", "2025-01-07"],
"valoare": [100, 200, 300]
})
# Încerci să faci o medie mobilă, dar coloana "data" e string, nu datetime
df["medie_mobila"] = df["valoare"].rolling(3).mean()
print(df)
Problemă: Coloana "data" nu e index temporal, iar rolling() nu știe de intervale.
The Right Way
import pandas as pd
df = pd.DataFrame({
"data": ["2025-01-01", "2025-01-03", "2025-01-07"],
"valoare": [100, 200, 300]
})
# Convertim la datetime și setăm ca index
df["data"] = pd.to_datetime(df["data"])
df = df.set_index("data")
# Resample la zile și umple găurile
df_zilnic = df.resample("D").asfreq().fillna(0)
# Medie mobilă pe 3 zile
df_zilnic["medie_mobila"] = df_zilnic["valoare"].rolling(window=3).mean()
print(df_zilnic)
Output:
valoare medie_mobila
data
2025-01-01 100 NaN
2025-01-02 0 NaN
2025-01-03 200 100.0
2025-01-04 0 100.0
2025-01-05 0 66.7
2025-01-06 0 0.0
2025-01-07 300 100.0
Step-by-Step Fix
1. Convertește coloana de date la datetime
df["data"] = pd.to_datetime(df["data"], format="%Y-%m-%d")
2. Setează ca index
df = df.set_index("data").sort_index()
3. Aplică resample și rolling
# Resample la săptămâni cu sumă
df_saptamanal = df.resample("W").sum()
# Medie mobilă pe 7 zile
df["ma_7"] = df["valoare"].rolling("7D").mean()
# Diferență față de ziua precedentă
df["diferenta"] = df["valoare"].diff()
Prevention Tips
- Convertește întotdeauna coloana de date la
datetimeînainte de analiză - Folosește
sort_index()după setarea indexului temporal - Folosește ferestre bazate pe timp (
"7D","1h") în loc de număr de observații
Common Mistakes
- Coloana "data" rămâne string — operațiile temporale nu funcționează
- Fără
sort_index()— rolling și resample dau rezultate greșite pe date nesortate - Resample cu funcția greșită —
.sum()pentru valori cumulative,.mean()pentru medii asfreq()vsresample()—asfreq()arată toate datele,resample().sum()agregă- Fără tratarea găurilor —
fillna()dupăasfreq()pentru date lipsă
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