Skip to content

Cum să lucrezi cu serii temporale în pandas

DodaTech Updated 2025-01-15 2 min read

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

  1. Coloana "data" rămâne string — operațiile temporale nu funcționează
  2. Fără sort_index() — rolling și resample dau rezultate greșite pe date nesortate
  3. Resample cu funcția greșită.sum() pentru valori cumulative, .mean() pentru medii
  4. asfreq() vs resample()asfreq() arată toate datele, resample().sum() agregă
  5. Fără tratarea găurilorfillna() după asfreq() pentru date lipsă

FAQ

### Ce este DatetimeIndex?

Un index specializat pentru date temporale care permite operații ca resample, rolling, shift și diferențiere.

### Cum fac o medie mobilă pe 7 zile?

Folosește df["valoare"].rolling(window="7D").mean() — fereastra se bazează pe timp, nu pe număr de rânduri.

### Cum completez datele lipsă într-o serie temporală?

Folosește df.resample("D").asfreq().fillna(method="ffill") pentru forward fill.

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