Ontwikkel een Seaborn Visualisatie voor Tijdreeksdata met Trend- en Seizoensanalyse
description
Met deze prompt kan de gebruiker effectief tijdreeksdata visualiseren en analyseren met Seaborn, inclusief het ontdekken van trends en seizoenspatronen. De mogelijkheid om voortschrijdende gemiddelden en seizoenscorrecties toe te voegen maakt diepgaandere inzichten mogelijk. Dit gaat verder dan standaard visualisaties door specifieke focus op tijdselementen en relevante analyseopties.
prompt
Help me een Seaborn visualisatie te maken voor mijn tijdreeksdataset om trends en seizoenspatronen te analyseren. Beschrijving van mijn dataset: <beschrijf je tijdreeksdataset>. Welke tijdsvariabele gebruik ik: <geef de kolomnaam van de tijdsvariabele>. Welke meetwaarden wil ik visualiseren: <noem de relevan ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een voorbeeld van hoe je een Seaborn-lijngrafiek kunt maken om je temperatuur- en neerslaggegevens te visualiseren, inclusief een 30-daags voortschrijdend gemiddelde, met groene lijnen en annotaties bij pieken.
```python
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# Voorbeeld: Laad je dataset
# df = pd.read_csv('jouw_dataset.csv', parse_dates=['datum'])
# Zorg dat 'datum' als datetime is geïnterpreteerd
# df['datum'] = pd.to_datetime(df['datum'])
# Bereken het 30-daags voortschrijdend gemiddelde voor temperatuur en neerslag
df['temp_rolling'] = df['temperatuur'].rolling(window=30).mean()
df['neerslag_rolling'] = df['neerslag'].rolling(window=30).mean()
# Plotten van de temperatuur
plt.figure(figsize=(14, 6))
sns.lineplot(data=df, x='datum', y='temperatuur', label='Temperatuur', color='green')
sns.lineplot(data=df, x='datum', y='temp_rolling', label='Voorschrijdend Gemiddelde (30 dagen)', color='darkgreen')
# Annotaties bij pieken in temperatuur
peak_temp = df.loc[df['temperatuur'].idxmax()]
plt.annotate('Warmste dag', xy=(peak_temp['datum'], peak_temp['temperatuur']),
xytext=(peak_temp['datum'], peak_temp['temperatuur']+2),
arrowprops=dict(facecolor='black', shrink=0.05),
fontsize=9, color='black')
# Plotten van neerslag
plt.figure(figsize=(14, 6))
sns.lineplot(data=df, x='datum', y='neerslag', label='Neerslag', color='blue')
sns.lineplot(data=df, x='datum', y='neerslag_rolling', label='Voorschrijdend Gemiddelde (30 dagen)', color='darkblue')
# Annotaties bij pieken in neerslag
peak_neerslag = df.loc[df['neerslag'].idxmax()]
plt.annotate('Max neerslag', xy=(peak_neerslag['datum'], peak_neerslag['neerslag']),
xytext=(peak_neerslag['datum'], peak_neerslag['neerslag']+5),
arrowprops=dict(facecolor='black', shrink=0.05),
fontsize=9, color='black')
# Stijl en labels
plt.title('Temperatuur en Neerslag in Amsterdam (5 jaar)', fontsize=16)
plt.xlabel('Datum')
plt.ylabel('Waarde')
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.show()
```
**Kort samengevat:**
- Gebruik `lineplot` voor lijngrafieken.
- Voeg een 30-daags voortschrijdend gemiddelde toe voor zowel temperatuur als neerslag.
- Gebruik groene lijnen voor temperatuur en donkere groen voor het gemiddelde.
- Annotaties bij de hoogste temperatuur en maximale neerslag.
- Pas de plotformattering aan naar wens.
Mocht je nog vragen of wensen hebben, laat het gerust weten!
provider: deepseek
model: deepseek-chat
Absoluut! Hier is een stapsgewijze handleiding om de gevraagde visualisatie te maken met Seaborn en pandas in Python.
### Stap 1: Importeer de benodigde bibliotheken
```python
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from datetime import datetime
```
### Stap 2: Stel de stijl in en prepareer je data
```python
# Stel Seaborn stijl in
sns.set_style("whitegrid")
sns.set_palette("viridis")
# Laad je dataset (vervang 'jouw_dataset.csv' met je bestand)
df = pd.read_csv('jouw_dataset.csv')
# Zet de datumkolom om naar datetime en stel in als index
df['datum'] = pd.to_datetime(df['datum'])
df.set_index('datum', inplace=True)
# Sorteer op datum voor tijdreeksanalyse
df = df.sort_index()
```
### Stap 3: Bereken het 30-daags voortschrijdend gemiddelde
```python
# Voeg voortschrijdend gemiddelde toe voor temperatuur
df['temp_30d_avg'] = df['temperatuur'].rolling(window=30).mean()
# Optioneel: ook voor neerslag als je dat wilt
df['neerslag_30d_avg'] = df['neerslag'].rolling(window=30).mean()
```
### Stap 4: Creëer de visualisatie
```python
# Maak een figuur met subplots
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(15, 10))
# Temperatuur plot
sns.lineplot(data=df, x=df.index, y='temperatuur', ax=ax1,
color='lightgreen', alpha=0.7, label='Dagelijkse Temperatuur')
sns.lineplot(data=df, x=df.index, y='temp_30d_avg', ax=ax1,
color='darkgreen', linewidth=2.5, label='30-daags Gemiddelde')
# Neerslag plot
sns.lineplot(data=df, x=df.index, y='neerslag', ax=ax2,
color='lightblue', alpha=0.7, label='Dagelijkse Neerslag')
sns.lineplot(data=df, x=df.index, y='neerslag_30d_avg', ax=ax2,
color='darkblue', linewidth=2.5, label='30-daags Gemiddelde')
# Annotatie voor temperatuur pieken
temp_peaks = df.nlargest(5, 'temperatuur')
for idx, row in temp_peaks.iterrows():
ax1.annotate(f'{row["temperatuur"]}°C',
xy=(idx, row['temperatuur']),
xytext=(10, 10), textcoords='offset points',
arrowprops=dict(arrowstyle='->', color='darkred'),
fontweight='bold')
# Annotatie voor neerslag pieken
neerslag_peaks = df.nlargest(5, 'neerslag')
for idx, row in neerslag_peaks.iterrows():
ax2.annotate(f'{row["neerslag"]}mm',
xy=(idx, row['neerslag']),
xytext=(10, 10), textcoords='offset points',
arrowprops=dict(arrowstyle='->', color='darkred'),
fontweight='bold')
# Stel labels en titels in
ax1.set_title('Temperatuur Trends in Amsterdam (5 Jaar)', fontsize=16, fontweight='bold')
ax1.set_ylabel('Temperatuur (°C)')
ax1.legend()
ax2.set_title('Neerslag Trends in Amsterdam (5 Jaar)', fontsize=16, fontweight='bold')
ax2.set_ylabel('Neerslag (mm)')
ax2.set_xlabel('Datum')
ax2.legend()
# Rotatie van x-as labels voor betere leesbaarheid
plt.xticks(rotation=45)
# Layout aanpassen
plt.tight_layout()
plt.show()
```
### Stap 5: Optionele seizoensanalyse
```python
# Voor seizoenspatronen: maandelijkse gemiddelden
maandelijkse_data = df.resample('M').mean()
plt.figure(figsize=(12, 6))
sns.heatmap(maandelijkse_data.pivot_table(index=maandelijkse_data.index.month,
columns=maandelijkse_data.index.year,
values='temperatura'),
cmap='YlOrRd', annot=True, fmt='.1f')
plt.title('Maandelijkse Temperatuurpatronen per Jaar')
plt.xlabel('Jaar')
plt.ylabel('Maand')
plt.show()
```
### Belangrijke aanpassingen die je mogelijk moet maken:
1. **Kolomnamen**: Controleer of 'temperatuur' en 'neerslag' overeenkomen met je daadwerkelijke kolomnamen
2. **Datumformaat**: Pas `pd.to_datetime()` aan naar het formaat in je dataset
3. **Piekdetectie**: Je kunt de annotatiecriteria aanpassen (bijv. alleen pieken boven bepaalde drempelwaarden)
Deze code geeft je een complete analyse met:
- Groene lijnen zoals gevraagd
- 30-daags voortschrijdend gemiddelde
- Annotaties bij extreme pieken
- Duidelijke seizoenspatronen zichtbaar
- Professionele opmaak met Seaborn
Succes met je analyse!