pd.date_range() în pandas

Date calendaristice pandas 1.0+

Creează un șir de date la intervale egale: fiecare zi, fiecare sfârșit de lună sau fiecare luni dintr-o perioadă.

Sintaxă
pd.date_range(start=None, end=None, periods=None, freq=None, inclusive='both', ...)

Ce face pd.date_range()

pd.date_range() generează un DatetimeIndex, adică o listă ordonată de date. Dai două dintre start, end și periods, plus frecvența freq (implicit "D", câte o zi).

Frecvențe des folosite: "D" (zi), "W-MON" (în fiecare luni; "W" înseamnă duminica), "MS" (început de lună), "ME" (sfârșit de lună), "QE" (sfârșit de trimestru), "YE" (sfârșit de an), "h" (oră). În pandas 3, vechile coduri "M", "H", "A" nu mai sunt acceptate aici.

Rezultatul este util ca index pentru o serie de timp sau pentru a completa zilele lipsă dintr-un tabel.

Parametri

Parametru Descriere
start, end Prima și ultima dată (text sau Timestamp).
periods Câte date se generează.
freq Pasul dintre date: "D", "W-MON", "MS", "ME", "h", "2D" (din două în două zile).
inclusive Dacă start și end intră în rezultat: "both" (implicit), "left", "right", "neither".
name Numele indexului rezultat.

Ce returnează

Un DatetimeIndex.

Exemple

Exemplul 1: Zilele unei săptămâni

import pandas as pd

zile = pd.date_range(start="2026-10-19", end="2026-10-25")
print(zile)
print(len(zile), "zile")

Rezultat

DatetimeIndex(['2026-10-19', '2026-10-20', '2026-10-21', '2026-10-22',
               '2026-10-23', '2026-10-24', '2026-10-25'],
              dtype='datetime64[us]', freq='D')
7 zile

Exemplul 2: Sfârșit de lună și început de lună

import pandas as pd

print(pd.date_range("2026-01-01", periods=4, freq="ME"))
print(pd.date_range("2026-01-01", periods=4, freq="MS"))

Rezultat

DatetimeIndex(['2026-01-31', '2026-02-28', '2026-03-31', '2026-04-30'],
              dtype='datetime64[us]', freq='ME')
DatetimeIndex(['2026-01-01', '2026-02-01', '2026-03-01', '2026-04-01'],
              dtype='datetime64[us]', freq='MS')

Exemplul 3: Fiecare luni din octombrie, ca index pentru ședințe

import pandas as pd

lunea = pd.date_range("2026-10-01", "2026-10-31", freq="W-MON")
sedinte = pd.Series(["Ana", "Mihai", "Elena", "Ioana"], index=lunea, name="prezinta")
print(sedinte)

Rezultat

2026-10-05      Ana
2026-10-12    Mihai
2026-10-19    Elena
2026-10-26    Ioana
Freq: W-MON, Name: prezinta, dtype: str

Greșeli frecvente

  • Folosești freq="M" din tutoriale vechi. În pandas 3 primești ValueError; scrie "ME" (sfârșit de lună) sau "MS" (început de lună).
  • Dai deodată start, end, periods și freq. Doar trei din patru pot fi date; altfel apare ValueError.
  • Crezi că freq="W" înseamnă lunea. "W" este "W-SUN" (duminica); pentru luni scrie "W-MON".

Comenzi înrudite

  • pd.to_datetime(): Transformă text sau numere în date calendaristice (datetime64), ca să poți calcula cu ele și să folosești accesorul .dt.
  • Series.dt (year, month, day_name, strftime, to_period): Accesorul .dt dă acces la anul, luna, ziua sau ziua săptămânii dintr-o coloană de date și le formatează ca text.
  • DataFrame.resample(): Grupează o serie de timp pe intervale (săptămâni, luni) și calculează câte o valoare pe interval: sumă, medie, număr.
  • DataFrame.rolling(): Calculează pe o fereastră mobilă de rânduri, de exemplu media ultimelor 3 luni, ca să netezești variațiile.