slogan3

Help me modelleren en transformeren van Pandas DataFrames met geavanceerde datetime-functies

description

Met deze prompt kan de gebruiker geavanceerde tijdgerelateerde data manipuleren in Pandas, wat essentieel is voor tijdreeksanalyse, rapportage en data cleaning. Het helpt complexe datetime-uitdagingen op te lossen die niet worden behandeld in standaard data transformatie prompts, waardoor gebruikers efficiënter en nauwkeuriger met tijddata kunnen werken.

prompt

Ik heb een Pandas DataFrame met tijdgerelateerde gegevens: <voer een beschrijving of voorbeeld van je DataFrame in>. Help me geavanceerde datetime-transformaties uit te voeren zoals het converteren van tijdzones, ext ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
no_answer_for_language
error: Generation failed [openai] prompt_id=3650 locale=nl err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3650 locale=en err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3650 locale=de err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3650 locale=fr err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3650 locale=pt err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3650 locale=es err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3650 locale=zh err=OpenAI connection/timeout
provider: deepseek
model: deepseek-chat
Zeker, hier is een uitgebreide uitleg met Python-voorbeelden voor geavanceerde datetime-transformaties in Pandas: ```python import pandas as pd import numpy as np from datetime import datetime, timedelta # Voorbeeld DataFrame aanmaken data = { 'timestamp': [ '2023-03-15 08:30:00+00:00', '2023-03-15 12:45:00+00:00', '2023-06-20 18:20:00+00:00', '2023-09-10 22:10:00+00:00', None, # Ontbrekende timestamp '2023-12-05 03:30:00+00:00' ], 'temperatuur': [15.2, 18.7, 22.3, 19.8, 21.1, 12.5], 'locatie': ['Amsterdam', 'Rotterdam', 'Utrecht', 'Den Haag', 'Eindhoven', 'Groningen'] } df = pd.DataFrame(data) print("Originele DataFrame:") print(df) ``` **1. Tijdzoneconversie en datetime parsing** ```python # Converteer string naar datetime object met tijdzone df['timestamp'] = pd.to_datetime(df['timestamp'], utc=True) # Converteer naar Nederlandse tijdzone (CET/CEST) df['timestamp_nl'] = df['timestamp'].dt.tz_convert('Europe/Amsterdam') print("\nNa tijdzoneconversie:") print(df[['timestamp', 'timestamp_nl']]) ``` *Waarom nuttig*: Zorgt voor consistente tijdweergave voor Nederlandse analyse en rapportering. **2. Extraheren van tijdseenheden** ```python # Extraheer verschillende tijdcomponenten df['jaar'] = df['timestamp_nl'].dt.year df['kwartaal'] = df['timestamp_nl'].dt.quarter df['maand'] = df['timestamp_nl'].dt.month df['weeknummer'] = df['timestamp_nl'].dt.isocalendar().week df['dag_van_het_jaar'] = df['timestamp_nl'].dt.dayofyear df['uur_van_de_dag'] = df['timestamp_nl'].dt.hour df['is_weekend'] = df['timestamp_nl'].dt.dayofweek >= 5 print("\nGeëxtraheerde tijdseenheden:") print(df[['timestamp_nl', 'kwartaal', 'weeknummer', 'is_weekend']]) ``` *Waarom nuttig*: Maakt seizoensanalyse mogelijk (kwartalen), week-over-week vergelijkingen, en patroonherkenning per tijdseenheid. **3. Omgaan met ontbrekende tijdstempels** ```python # Identificeer ontbrekende waarden print(f"Aantal ontbrekende timestamps: {df['timestamp'].isna().sum()}") # Strategie 1: Forward fill (vullen met vorige waarde) df['timestamp_ffill'] = df['timestamp'].fillna(method='ffill') # Strategie 2: Interpolatie op basis van andere kolommen # Voor complexere scenario's waarbij tijd lineair relateert tot andere variabelen # Strategie 3: Markeren en apart behandelen df['timestamp_ontbreekt'] = df['timestamp'].isna() print("\nNa behandeling ontbrekende waarden:") print(df[['timestamp', 'timestamp_ffill', 'timestamp_ontbreekt']]) ``` *Waarom nuttig*: Behoudt data-integriteit en voorkomt bias in tijdreeksanalyse. **4. Filteren op complexe tijdsintervallen** ```python # Filter op specifiek kwartaal q2_data = df[df['timestamp_nl'].dt.quarter == 2] print("\nData voor Q2 2023:") print(q2_data) # Filter op werkdagen tijdens kantooruren werkdagen_kantooruren = df[ (df['timestamp_nl'].dt.dayofweek < 5) & # Maandag-vrijdag (df['timestamp_nl'].dt.hour >= 9) & # Na 9:00 (df['timestamp_nl'].dt.hour < 17) # Voor 17:00 ] # Filter op specifiek datumbereik start_date = pd.Timestamp('2023-06-01', tz='Europe/Amsterdam') end_date = pd.Timestamp('2023-08-31', tz='Europe/Amsterdam') zomer_data = df[df['timestamp_nl'].between(start_date, end_date)] # Dynamisch filteren op afgelopen 30 dagen laatste_30_dagen = df[df['timestamp_nl'] > (pd.Timestamp.now(tz='Europe/Amsterdam') - timedelta(days=30))] ``` *Waarom nuttig*: Maakt gerichte analyse mogelijk voor specifieke business cases en seizoenseffecten. **5. Geavanceerde groepering en aggregatie** ```python # Groepeer per kwartaal en bereken gemiddelde temperatuur kwartaal_gemiddelden = df.groupby(df['timestamp_nl'].dt.to_period('Q'))['temperatuur'].mean() print("\nGemiddelde temperatuur per kwartaal:") print(kwartaal_gemiddelden) # Groepeer per uur van de dag voor alle dagen uurly_patterns = df.groupby(df['timestamp_nl'].dt.hour)['temperatuur'].agg(['mean', 'std', 'count']) print("\nTemperatuurpatroon per uur:") print(uurly_patterns) ``` **6. Tijdverschillen berekenen** ```python # Bereken tijd sinds vorige meting df['tijd_sinds_vorig'] = df['timestamp_nl'].diff() df['minuten_sinds_vorig'] = df['tijd_sinds_vorig'].dt.total_seconds() / 60 print("\nTijdverschillen tussen metingen:") print(df[['timestamp_nl', 'minuten_sinds_vorig']]) ``` Deze technieken zijn essentieel voor: - Seizoensgebonden trendanalyse - Anomaliedetectie in tijdreeksen - Prestatiemonitoring over tijd - Capaciteitsplanning op basis van tijdpatronen - Correcte tijdzone-afhankelijke rapportage Let op: Zorg dat je `pytz` of `zoneinfo` geïnstalleerd hebt voor tijdzone-ondersteuning: ```bash pip install pytz ```