DatetimeIndex en periodebereiken
Maak een DatetimeIndex met pd.date_range, parse datumstrings en stel een tijdkolom in als index voor tijdgebaseerde toegang.
DatetimeIndex en periodebereiken is een gratis Pandas & NumPy Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Pandas & NumPy Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Pandas & NumPy Academy bevat in totaal 4 lessen.
Waarom Pandas speciale tijdhulpmiddelen heeft
Voor tijdreeksgegevens is meer nodig dan datums alleen als tekenreeksen opslaan. Je moet op tijd sorteren, datumbereiken selecteren, opnieuw samplen naar verschillende frequenties en onderdelen zoals de maand en weekdag ophalen. Pandas maakt dit mogelijk met de DatetimeIndex — een index die uit datetime64-waarden bestaat — waarmee gespecialiseerde tijdsbewuste bewerkingen beschikbaar komen die niet mogelijk zijn met gewone gehelegetal- of tekenreeksindexen.
Een DatetimeIndex maken met pd.date_range()
pd.date_range(start, end, freq) genereert een reeks gelijkmatig verdeelde datums. De parameter freq geeft het interval op met offsetaliassen: 'D' voor dag, 'h' voor uur, 'ME' voor maandeinde, 'W' voor week en 'YE' voor jaareinde. Je kunt end of periods (het aantal tijdstempels) opgeven — niet beide.
import pandas as pd
# Daily dates for January 2024
dates = pd.date_range(start='2024-01-01', end='2024-01-07', freq='D')
print(dates)
# DatetimeIndex(['2024-01-01', '2024-01-02', '2024-01-03',
# '2024-01-04', '2024-01-05', '2024-01-06', '2024-01-07'],
# dtype='datetime64[ns]', freq='D')
# 12 month-end dates
months = pd.date_range(start='2024-01-31', periods=12, freq='ME')
print(months[:3])Een DatetimeIndex instellen voor een DataFrame
Om tijdsbewuste bewerkingen mogelijk te maken, stel je de datumkolom in als de index van het DataFrame met set_index(), nadat je deze met pd.to_datetime() hebt omgezet naar datetime64. Zodra de index een DatetimeIndex is, kun je gedeeltelijke tekenreeksindexering (df['2024-01']), snijden op datumbereiken en alle tijdsbewuste methoden gebruiken.
df = pd.DataFrame({
'date': ['2024-01-01', '2024-01-02', '2024-01-03'],
'value': [10, 15, 12]
})
df['date'] = pd.to_datetime(df['date'])
df = df.set_index('date')
print(df)
# value
# date
# 2024-01-01 10
# 2024-01-02 15
# 2024-01-03 12
print(type(df.index)) # DatetimeIndexGedeeltelijke tekenreeksindexering
Een van de handigste functies van een DatetimeIndex is gedeeltelijke tekenreeksindexering. Je kunt rijen selecteren op jaar, maand of datum door een gedeeltelijke datumtekenreeks door te geven aan .loc[]. Zo retourneert df.loc['2024-01'] alle rijen uit januari 2024 en retourneert df.loc['2024'] alle rijen uit 2024. Je hoeft kolomwaarden niet expliciet te vergelijken.
# Create a larger date-indexed Series
s = pd.Series(
range(365),
index=pd.date_range('2024-01-01', periods=365, freq='D')
)
# Select all of January 2024
print(s.loc['2024-01'].shape) # (31,)
# Select a specific date range
print(s.loc['2024-03-01':'2024-03-07'])pd.to_datetime() voor het ontleden
pd.to_datetime() zet tekenreeksen, gehele getallen (Unix-tijdstempels) of datumkolommen met gemengde indelingen om naar datetime64. Geef format door om het exacte patroon op te geven als datums een niet-standaardindeling hebben (bijvoorbeeld '%d/%m/%Y'). Gebruik errors='coerce' om waarden die niet kunnen worden ontleed om te zetten naar NaT (Not a Time), in plaats van een fout te veroorzaken.
# Parse standard ISO format
print(pd.to_datetime('2024-06-15'))
# Parse non-standard format
print(pd.to_datetime('15/06/2024', format='%d/%m/%Y'))
# Handle mixed/bad data gracefully
mixed = pd.to_datetime(['2024-01-01', 'bad_date', '2024-06-15'],
errors='coerce')
print(mixed) # NaT for 'bad_date'De .dt-toegang voor datumtijdonderdelen
Wanneer een DataFrame-kolom (niet de index) datetime64-waarden bevat, geeft de .dt-toegang vectorieel toegang tot alle eigenschappen en methoden voor datumtijdwaarden in die kolom. Gebruik deze om zonder lussen .dt.year, .dt.month, .dt.day, .dt.day_of_week, .dt.hour enzovoort op te halen. Als de datumtijd de index is, gebruik je rechtstreeks df.index.year.
df_col = pd.DataFrame({'date': pd.date_range('2024-01-01', periods=5, freq='D'),
'value': [10, 15, 12, 18, 14]})
df_col['year'] = df_col['date'].dt.year
df_col['month'] = df_col['date'].dt.month
df_col['dow'] = df_col['date'].dt.day_of_week # 0=Monday
df_col['week'] = df_col['date'].dt.isocalendar().week
print(df_col.head())Periodebereiken met pd.period_range()
Een PeriodIndex vertegenwoordigt tijdintervallen in plaats van specifieke tijdstempels. Met pd.period_range(start, periods, freq) maak je maand-, kwartaal- of jaarperioden. Een periode zoals Period('2024-01', 'M') vertegenwoordigt de volledige maand januari 2024, niet alleen de begindatum. Een PeriodIndex is nuttig voor fiscale rapportage, waarbij je in kwartalen of maanden denkt.
# Monthly periods
periods = pd.period_range('2024-01', periods=6, freq='M')
print(periods)
# PeriodIndex(['2024-01', '2024-02', '2024-03',
# '2024-04', '2024-05', '2024-06'],
# dtype='period[M]')
# Quarterly periods
quarters = pd.period_range('2024Q1', periods=4, freq='Q')
print(quarters) # [2024Q1, 2024Q2, 2024Q3, 2024Q4]Converteren tussen tijdstempel en periode
Je kunt een DatetimeIndex met to_period(freq) converteren naar een PeriodIndex en met to_timestamp() weer terug converteren. Converteren naar perioden is nuttig wanneer je rijen wilt labelen met een maand of kwartaal in plaats van een specifieke dag. Hierdoor worden groeperen en samenvoegen intuïtiever voor kalendergebaseerde analyses.
daily_idx = pd.date_range('2024-01-15', periods=5, freq='D')
print('DatetimeIndex:', daily_idx[:3])
# Convert to monthly periods
monthly_idx = daily_idx.to_period('M')
print('PeriodIndex:', monthly_idx[:3])
# PeriodIndex(['2024-01', '2024-01', ...], dtype='period[M]')
# Convert back to timestamps (start of period)
print(monthly_idx.to_timestamp()[:3])Omgaan met tijdzones
Praktische tijdreeksen bevatten vaak informatie over tijdzones. Pandas ondersteunt tijdzonebewuste DatetimeIndex-objecten via tz_localize() (een tijdzone koppelen aan naïeve tijdstempels) en tz_convert() (converteren tussen tijdzones). Werk intern altijd in UTC en converteer alleen voor de weergave naar lokale tijd, om fouten door onduidelijkheid rond zomertijd te voorkomen.
naive = pd.date_range('2024-01-01', periods=3, freq='D')
print('Naive:', naive.tz)
# Attach timezone (localize)
utc = naive.tz_localize('UTC')
print('UTC:', utc)
# Convert to New York time
ny = utc.tz_convert('America/New_York')
print('NY:', ny[:2])De DatetimeIndex controleren en sorteren
Voor tijdreeksbewerkingen zoals opnieuw samplen en snijden moet de DatetimeIndex gesorteerd zijn (monotoon oplopend). Controleer dit met df.index.is_monotonic_increasing en sorteer indien nodig met df.sort_index(). Een ongesorteerde DatetimeIndex kan leiden tot stille fouten of onverwachte resultaten bij opnieuw samplen en vensterfuncties.
import numpy as np
df_unsorted = pd.DataFrame(
{'value': [10, 15, 12]},
index=pd.to_datetime(['2024-01-03', '2024-01-01', '2024-01-02'])
)
print('Sorted:', df_unsorted.index.is_monotonic_increasing) # False
df_sorted = df_unsorted.sort_index()
print('After sort:', df_sorted.index.is_monotonic_increasing) # True
print(df_sorted)Praktisch patroon: een tijdreeks-DataFrame maken
Hier zie je een volledig patroon voor het maken van een DataFrame met een tijdindex uit onbewerkte gegevens: datums ontleden, de index instellen, sorteren en de frequentie van de index controleren. Deze configuratie vormt de basis voor alle tijdreeksanalyses in volgende lessen — opnieuw samplen, voortschrijdende gemiddelden en vertragingskenmerken steunen allemaal op een schone, gesorteerde DatetimeIndex.
import numpy as np
# Simulate loading raw data
np.random.seed(42)
dates = pd.date_range('2024-01-01', periods=30, freq='D')
df_ts = pd.DataFrame({'sales': np.random.randint(100, 500, 30)}, index=dates)
df_ts.index.name = 'date'
print('Shape:', df_ts.shape)
print('Freq:', df_ts.index.freq)
print('Sorted:', df_ts.index.is_monotonic_increasing)
print(df_ts.head())Snelle controle
Test je begrip van DatetimeIndex en periodebereiken uit deze les.
Samenvatting van de les
In deze les heb je geleerd hoe je een DatetimeIndex maakt met pd.date_range() en datums ontleedt met pd.to_datetime(), hoe je gedeeltelijke tekenreeksindexering gebruikt voor intuïtieve datumselectie, wat het verschil is tussen de typen Timestamp en Period en hoe je met tijdzones omgaat. Hierna onderzoeken we opnieuw samplen om de frequentie van een tijdreeks te wijzigen.
Leer Python met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 30
- Lessen
- 120
Veelgestelde vragen
Is de les “DatetimeIndex en periodebereiken” gratis?
Ja — de volledige tekst van “DatetimeIndex en periodebereiken” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Pandas & NumPy Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Pandas & NumPy Academy bevat in totaal 4 lessen.
Wat leer ik in “DatetimeIndex en periodebereiken”?
Maak een DatetimeIndex met pd.date_range, parse datumstrings en stel een tijdkolom in als index voor tijdgebaseerde toegang. Je oefent met Pandas & NumPy Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Pandas & NumPy Academy te beginnen?
Ervaring vooraf is niet nodig. Pandas & NumPy Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.
Hoe lang duurt de les “DatetimeIndex en periodebereiken”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Pandas & NumPy Academy?
Ja. Elke les over Pandas & NumPy Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- DatetimeIndex en periodebereiken
- Tijdreeksen resamplen
- Verschuivingen en lag-features
- Tijdkenmerken extraheren