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

try_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 ... more
generate_helper
disclaimerOnPageApi image_legal_disclaimer...

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 ```