Help mij mijn Pandas DataFrame te analyseren en visualiseren
description
Maakt het mogelijk voor gebruikers om dieper inzicht te krijgen in hun data via aangepaste verkennende analyses en visualisaties, waarmee trends en afwijkingen geïdentificeerd worden die betere besluitvorming ondersteunen. Deze prompt richt zich op het genereren van inzichten en praktische codevoorbeelden, wat het waardevol maakt voor datawetenschappers en analisten, en gaat verder dan alleen prestatieoptimalisatie.
prompt
Ik heb een Pandas DataFrame met de volgende gegevens: <voer een beschrijving of voorbeeld van je DataFrame in>. Help mij met het genereren van inzichtgevende visualisaties en het uitvoeren van verk ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een gestructureerde aanpak om je DataFrame te analyseren en inzichtelijke visualisaties te maken, inclusief uitleg en codevoorbeelden in Python met Pandas en Matplotlib/Seaborn.
---
### 1. Data voorbewerken en verkennen
**Doel:** Controleer de data, maak kolommen klaar voor analyse.
```python
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# Laden van je DataFrame (vervang dit door je eigen data-inleescode)
# df = pd.read_csv('jouw_data.csv')
# Datum kolom omzetten naar datetime
df['Datum'] = pd.to_datetime(df['Datum'])
# Bekijk eerste records en info
print(df.head())
print(df.info())
```
**Uitleg:**
- Datums lezen als datetime maakt tijdgebaseerde analyses makkelijker.
- Eerste inspectie helpt om datatypes te bevestigen en missing waarden te identificeren.
---
### 2. Tijdreeksanalyse van sales
**Doel:** Identificeer algemene sales trends over de tijd.
```python
# Groeperen per dag (indien nodig)
daily_sales = df.groupby('Datum')['Sales'].sum()
# Plotten van de totale sales over tijd
plt.figure(figsize=(14,6))
daily_sales.plot()
plt.title('Totale Sales per Dag')
plt.xlabel('Datum')
plt.ylabel('Sales')
plt.show()
```
**Uitleg:**
- Samenvatting per dag geeft inzicht in de algemene trend en seizoensinvloeden.
---
### 3. Seizoensinvloeden en maandelijkse trends
```python
# Maand en jaar toevoegen voor seizoensanalyse
df['Jaar'] = df['Datum'].dt.year
df['Maand'] = df['Datum'].dt.month
# Maandelijkse totalen
monthly_sales = df.groupby(['Jaar', 'Maand'])['Sales'].sum().reset_index()
# Plot
plt.figure(figsize=(14,6))
sns.lineplot(data=monthly_sales, x='Maand', y='Sales', hue='Jaar', marker='o')
plt.title('Maandelijkse Sales per Jaar')
plt.xlabel('Maand')
plt.ylabel('Sales')
plt.show()
```
**Uitleg:**
- Vergelijk maandelijkse trends per jaar om seizoenpatronen te ontdekken.
---
### 4. Relatie tussen Marketinguitgaven en Sales
**Doel:** Correlatie en verband onderzoeken.
```python
# Dagelijkse totalen marketinguitgaven en sales
daily_data = df.groupby('Datum').agg({'Sales':'sum', 'Marketinguitgaven':'sum'}).reset_index()
# Correlatie berekenen
corr = daily_data['Sales'].corr(daily_data['Marketinguitgaven'])
print(f'Correlatie tussen sales en marketinguitgaven: {corr:.2f}')
# Scatterplot met regressielijn
plt.figure(figsize=(8,6))
sns.regplot(x='Marketinguitgaven', y='Sales', data=daily_data)
plt.title('Sales vs. Marketinguitgaven')
plt.xlabel('Marketinguitgaven')
plt.ylabel('Sales')
plt.show()
```
**Uitleg:**
- Een hoge correlatie wijst op een mogelijk verband; regressie toont de aard van de relatie.
---
### 5. Product- en Regio-analyse
**Doel:** Verschillen in sales per product en regio begrijpen.
```python
# Top 10 producten op basis van totale sales
top_products = df.groupby('Product')['Sales'].sum().sort_values(ascending=False).head(10)
# Barplot
plt.figure(figsize=(12,6))
sns.barplot(x=top_products.values, y=top_products.index)
plt.title('Top 10 Producten op Basis van Sales')
plt.xlabel('Sales')
plt.ylabel('Product')
plt.show()
# Sales per regio
region_sales = df.groupby('Regio')['Sales'].sum()
# Pie chart regio's
plt.figure(figsize=(8,8))
region_sales.plot.pie(autopct='%1.1f%%')
plt.title('Verdeling van Sales over Regio\'s')
plt.ylabel('')
plt.show()
```
**Uitleg:**
- Identificeer bestsellers en belangrijke markten.
---
### 6. Detectie van afwijkingen (Outliers)
```python
# Boxplot voor sales
plt.figure(figsize=(8,6))
sns.boxplot(x='Sales', data=df)
plt.title('Sales Distributie')
plt.show()
# Zware afwijkingen kunnen verder onderzocht worden
```
**Uitleg:**
- Outliers kunnen wijzen op speciale gebeurtenissen of datafouten.
---
### 7. Seizoenspatronen en maandelijkse verschillen
```python
# Voeg weeknummer toe
df['Week'] = df['Datum'].dt.isocalendar().week
# Gemiddelde sales per week
weekly_sales = df.groupby('Week')['Sales'].mean()
plt.figure(figsize=(14,6))
sns.lineplot(x=weekly_sales.index, y=weekly_sales.values)
plt.title('Gemiddelde Weekly Sales')
plt.xlabel('Weeknummer')
plt.ylabel('Gemiddelde Sales')
plt.show()
```
**Uitleg:**
- Helpt patronen binnen het jaar te ontdekken.
---
### Samenvatting
Met deze stappen krijg je inzicht in:
- Trends en seizoensinvloeden
- De relatie tussen marketinguitgaven en sales
- Product- en regio-verschillen
- afwijkingen en outliers
- Weekly en monthly patronen
Wil je meer specifieke analyses of hulp bij het interpreteren van de resultaten?
provider: deepseek
model: deepseek-chat
Absoluut! Hier is een stapsgewijze handleiding voor verkennende data-analyse (EDA) en visualisaties specifiek voor jouw use case. Ik zal de code in het Nederlands toelichten.
### Stap 1: Importeer benodigde libraries
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from datetime import datetime
# Stel de stijl in voor de plots
plt.style.use('default')
sns.set_palette("husl")
```
**Uitleg:** We importeren de noodzakelijke libraries voor data manipulatie (pandas, numpy) en visualisatie (matplotlib, seaborn).
### Stap 2: Laad en verkenn de data
```python
# Laad je DataFrame (vervang 'df' met jouw variabelenaam)
# df = pd.read_csv('jouw_bestand.csv')
# Bekijk basisinformatie
print("Data vorm:", df.shape)
print("\nKolom types:")
print(df.dtypes)
print("\nEerste paar rijen:")
df.head()
```
**Uitleg:** We beginnen met het begrijpen van de structuur van onze data - hoeveel rijen/kolommen, datatypes en een eerste blik op de inhoud.
### Stap 3: Data preprocessing
```python
# Zet Datum kolom om naar datetime format
df['Datum'] = pd.to_datetime(df['Datum'])
# Controleer op ontbrekende waarden
print("Ontbrekende waarden per kolom:")
print(df.isnull().sum())
# Voeg tijdgerelateerde features toe voor trendanalyse
df['Maand'] = df['Datum'].dt.month
df['Kwartaal'] = df['Datum'].dt.quarter
df['Jaar'] = df['Datum'].dt.year
df['Dag_van_week'] = df['Datum'].dt.dayofweek # 0=maandag, 6=zondag
```
**Uitleg:** We zorgen dat de datum correct wordt geïnterpreteerd en voegen extra tijdsdimensies toe voor gedetailleerdere analyse.
### Stap 4: Totale trends over tijd
```python
# Maandelijkse trends voor sales en marketing
maandelijkse_data = df.groupby(['Jaar', 'Maand']).agg({
'Sales': 'sum',
'Marketinguitgaven': 'sum'
}).reset_index()
plt.figure(figsize=(14, 6))
plt.plot(maandelijkse_data.index, maandelijkse_data['Sales'],
label='Sales', linewidth=2)
plt.plot(maandelijkse_data.index, maandelijkse_data['Marketinguitgaven'],
label='Marketinguitgaven', linewidth=2)
plt.title('Maandelijkse Sales vs Marketinguitgaven Trend')
plt.xlabel('Tijdsperiode')
plt.ylabel('Bedrag')
plt.legend()
plt.grid(True, alpha=0.3)
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
```
**Uitleg:** Deze lijngrafiek toont de evolutie van zowel sales als marketinguitgaven over tijd, waardoor we seizoenspatronen en trends kunnen identificeren.
### Stap 5: Correlatie-analyse
```python
# Bereken correlatie tussen sales en marketinguitgaven
correlatie = df['Sales'].corr(df['Marketinguitgaven'])
print(f"Correlatie tussen Sales en Marketinguitgaven: {correlatie:.3f}")
# Gedetailleerde correlatie-analyse per regio
correlatie_per_regio = df.groupby('Regio').apply(
lambda x: x['Sales'].corr(x['Marketinguitgaven'])
)
print("\nCorrelatie per regio:")
print(correlatie_per_regio)
# Scatter plot met regressielijn
plt.figure(figsize=(10, 6))
sns.regplot(x='Marketinguitgaven', y='Sales', data=df,
scatter_kws={'alpha':0.5}, line_kws={'color':'red'})
plt.title(f'Relatie tussen Marketinguitgaven en Sales (Correlatie: {correlatie:.3f})')
plt.xlabel('Marketinguitgaven')
plt.ylabel('Sales')
plt.show()
```
**Uitleg:** We onderzoeken de statistische relatie tussen marketinguitgaven en sales. Een positieve correlatie suggereert dat marketing effectief is.
### Stap 6: Analyse per product en regio
```python
# Sales distributie per product
plt.figure(figsize=(12, 6))
df.groupby('Product')['Sales'].sum().sort_values(ascending=False).plot(
kind='bar', color='skyblue')
plt.title('Totale Sales per Product')
plt.xlabel('Product')
plt.ylabel('Totale Sales')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
# Marketing effectiviteit per regio
regio_analyse = df.groupby('Regio').agg({
'Sales': 'sum',
'Marketinguitgaven': 'sum'
}).assign(Sales_per_Euro=lambda x: x['Sales'] / x['Marketinguitgaven'])
print("Marketing effectiviteit per regio (Sales per Euro marketing):")
print(regio_analyse['Sales_per_Euro'].sort_values(ascending=False))
```
**Uitleg:** We identificeren welke producten het best presteren en welke regio's de hoogste return on marketing investment hebben.
### Stap 7: Seizoenspatronen en weekdag analyse
```python
# Seizoenspatronen per maand
maandelijkse_sales = df.groupby('Maand')['Sales'].mean()
plt.figure(figsize=(10, 5))
maandelijkse_sales.plot(kind='bar', color='lightgreen')
plt.title('Gemiddelde Sales per Maand (Seizoenspatroon)')
plt.xlabel('Maand')
plt.ylabel('Gemiddelde Sales')
plt.xticks(rotation=0)
plt.tight_layout()
plt.show()
# Sales per dag van de week
dag_sales = df.groupby('Dag_van_week')['Sales'].mean()
plt.figure(figsize=(8, 4))
dag_sales.plot(kind='bar', color='orange')
plt.title('Gemiddelde Sales per Weekdag')
plt.xlabel('Dag van de week (0=Maandag, 6=Zondag)')
plt.ylabel('Gemiddelde Sales')
plt.xticks(rotation=0)
plt.tight_layout()
plt.show()
```
**Uitleg:** We analyseren seizoensgebonden patronen en verschillen tussen weekdagen, wat cruciaal is voor marketing timing.
### Stap 8: Uitgebreide correlatie matrix
```python
# Creëer een correlatie matrix voor numerieke variabelen
numerieke_data = df[['Sales', 'Marketinguitgaven', 'Maand', 'Dag_van_week']]
correlatie_matrix = numerieke_data.corr()
plt.figure(figsize=(8, 6))
sns.heatmap(correlatie_matrix, annot=True, cmap='coolwarm',
center=0, square=True)
plt.title('Correlatie Matrix')
plt.tight_layout()
plt.show()
```
**Uitleg:** Een heatmap geeft een snel overzicht van alle relaties tussen numerieke variabelen.
### Stap 9: Anomalie detectie
```python
# Identificeer uitschieters in sales
Q1 = df['Sales'].quantile(0.25)
Q3 = df['Sales'].quantile(0.75)
IQR = Q3 - Q1
onder_grens = Q1 - 1.5 * IQR
boven_grens = Q3 + 1.5 * IQR
uitschieters = df[(df['Sales'] < onder_grens) | (df['Sales'] > boven_grens)]
print(f"Aantal uitschieters in sales: {len(uitschieters)}")
# Boxplot voor sales distributie
plt.figure(figsize=(8, 6))
sns.boxplot(y=df['Sales'])
plt.title('Distributie van Sales met Uitschieters')
plt.ylabel('Sales')
plt.show()
```
**Uitleg:** We identificeren afwijkende waarden die nader onderzoek vereisen, zoals onverwachte pieken of dalen in sales.
### Stap 10: ROI Analyse
```python
# Bereken marketing ROI over tijd
df['Marketing_ROI'] = df['Sales'] / df['Marketinguitgaven']
# ROI trendanalyse
maandelijkse_roi = df.groupby(['Jaar', 'Maand'])['Marketing_ROI'].mean().reset_index()
plt.figure(figsize=(14, 6))
plt.plot(maandelijkse_roi.index, maandelijkse_roi['Marketing_ROI'],
color='purple', linewidth=2)
plt.title('Marketing ROI Trend over Tijd')
plt.xlabel('Tijdsperiode')
plt.ylabel('ROI (Sales per Euro Marketing)')
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()
```
**Uitleg:** We berekenen de return on investment van marketingactiviteiten, een cruciale KPI voor budgetallocatie.
### Samenvatting van inzichten:
1. **Tijdelijke trends**: Identificeer seizoenspatronen en lange-termijn trends
2. **Marketing effectiviteit**: Meet de impact van marketing op sales
3. **Regionale verschillen**: Ontdek welke regio's het best presteren
4. **Productprestaties**: Identificeer top- en underperformers
5. **Optimalisatie kansen**: Gebruik de inzichten voor betere budgetallocatie
Deze analyse geeft je een solide basis om data-gedreven beslissingen te nemen over marketingstrategie en budgettering!
error: Generation failed [deepseek] prompt_id=1376 locale=es err=DeepSeek connection/timeout