Help me een Matplotlib-visualisatie te maken die dataverschillen in mijn dataset benadrukt
description
Door deze prompt te gebruiken, kunnen gebruikers effectief verschillen in hun gegevens visualiseren, wat betere besluitvorming en snellere identificatie van problemen die aandacht nodig hebben mogelijk maakt. Dit verbetert de data-analyse en helpt bij het behouden van gegevensintegriteit.
prompt
try_prompt
Ik wil me richten op het identificeren en visualiseren van verschillen binnen mijn dataset: {{dataset_beschrijving}}. Deze visualisatie moet duidelijk laten zien waar datapunten afwijken van verwachte waarden of trends, waardoor het g ... more
generate_helper
...
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Hier is een Python-script dat gebruikmaakt van pandas en matplotlib om je verkoopgegevens voor Q1 2023 te analyseren en te visualiseren. Het script identificeert afwijkingen op basis van de afstand tot de gemiddelde waarden en biedt opties voor aanpassing van kleuren, labels en stijlen.
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# Laad je dataset
# Vervang 'verkoopgegevens_q1_2023.csv' door de naam van jouw bestand
df = pd.read_csv('verkoopgegevens_q1_2023.csv')
# Veronderstel dat je dataset kolommen heeft zoals 'Datum', 'Verkoop', 'Product', etc.
# Pas indien nodig de kolomnamen aan
# Voor deze analyse richten we ons op de 'Verkoop' kolom
# Bereken het gemiddelde en de standaarddeviatie
mean_verkoop = df['Verkoop'].mean()
std_verkoop = df['Verkoop'].std()
# Definieer een afwijkingsdrempel (bijvoorbeeld 2 standaarddeviaties)
drempel = 2
# Identificeer datapunten die afwijken
df['Afwijking'] = np.where(
(np.abs(df['Verkoop'] - mean_verkoop) > drempel * std_verkoop),
True,
False
)
# Opties voor visualisatie
color_normal = '#1f77b4' # Standaardkleur voor normale punten
color_afwijking = '#d62728' # Kleur voor afwijkende punten
label_normal = 'Normale verkoop'
label_afwijking = 'Afwijkende verkoop'
stijl_normal = 'o' # Cirkel
stijl_afwijking = 'x' # Kruis
# Maak de plot
plt.figure(figsize=(12, 6))
plt.scatter(
df.index[~df['Afwijking']],
df['Verkoop'][~df['Afwijking']],
c=color_normal,
label=label_normal,
marker=stijl_normal
)
plt.scatter(
df.index[df['Afwijking']],
df['Verkoop'][df['Afwijking']],
c=color_afwijking,
label=label_afwijking,
marker=stijl_afwijking
)
# Voeg labels en titel toe
plt.xlabel('Datapunt Index')
plt.ylabel('Verkoopwaarde')
plt.title('Identificatie van afwijkingen in verkoopgegevens Q1 2023')
plt.legend()
# Optioneel: voeg extra informatie toe
# Bijvoorbeeld, de gemiddelde lijn
plt.axhline(mean_verkoop, color='green', linestyle='--', label='Gemiddelde')
plt.legend()
# Functie om visualisatie aan te passen
def pas_aanpassingen(kleur_normaal='#1f77b4', kleur_afwijking='#d62728',
label_normaal='Normale verkoop', label_afwijking='Afwijkende verkoop',
stijl_normaal='o', stijl_afwijking='x'):
plt.clf()
plt.scatter(
df.index[~df['Afwijking']],
df['Verkoop'][~df['Afwijking']],
c=kleur_normaal,
label=label_normaal,
marker=stijl_normaal
)
plt.scatter(
df.index[df['Afwijking']],
df['Verkoop'][df['Afwijking']],
c=kleur_afwijking,
label=label_afwijking,
marker=stijl_afwijking
)
plt.xlabel('Datapunt Index')
plt.ylabel('Verkoopwaarde')
plt.title('Identificatie van afwijkingen in verkoopgegevens Q1 2023')
plt.axhline(mean_verkoop, color='green', linestyle='--', label='Gemiddelde')
plt.legend()
plt.show()
# Voor gebruik: roep de functie aan met je voorkeuren
# pas_aanpassingen(kleur_normaal='#0000ff', kleur_afwijking='#ff0000', label_normaal='Normaal', label_afwijking='Afwijkend', stijl_normaal='o', stijl_afwijking='x')
```
**Hoe te gebruiken:**
1. Vervang `'verkoopgegevens_q1_2023.csv'` door de naam van jouw datasetbestand.
2. Pas indien nodig de kolomnamen aan in het script.
3. Voer het script uit om de visualisatie te genereren.
4. Gebruik de functie `pas_aanpassingen()` om kleuren, labels en stijlen te wijzigen voor betere duidelijkheid en impact.
Als je verdere maatwerk of specifieke visualisatiewensen hebt, laat het gerust weten!
provider: deepseek
model: deepseek-chat
Hier is een complete Python-oplossing voor het analyseren en visualiseren van afwijkingen in uw verkoopgegevens:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from datetime import datetime
import warnings
warnings.filterwarnings('ignore')
# Stel de stijl in voor betere visualisaties
plt.style.use('seaborn-v0_8')
sns.set_palette("husl")
class VerkoopAnalyzer:
def __init__(self, data):
self.data = data
self.afwijkingen = None
def bereken_verwachtingen(self, methode='trend'):
"""Bereken verwachte waarden op basis van historische trend"""
if methode == 'trend':
# Lineaire trend voorspelling
self.data['Verwachte_Waarde'] = self.data['Verkoop'].expanding().mean()
elif methode == 'maand_gemiddelde':
# Maandelijkse gemiddelden
self.data['Verwachte_Waarde'] = self.data.groupby('Maand')['Verkoop'].transform('mean')
self.data['Afwijking'] = self.data['Verkoop'] - self.data['Verwachte_Waarde']
self.data['Afwijking_Percentage'] = (self.data['Afwijking'] / self.data['Verwachte_Waarde']) * 100
return self.data
def identificeer_uitbijters(self, drempel=2):
"""Identificeer significante afwijkingen"""
z_scores = np.abs((self.data['Verkoop'] - self.data['Verkoop'].mean()) / self.data['Verkoop'].std())
self.data['Is_Uitbijter'] = z_scores > drempel
self.afwijkingen = self.data[self.data['Is_Uitbijter']]
return self.afwijkingen
def genereer_voorbeeld_data():
"""Genereer voorbeeld verkoopdata voor Q1 2023"""
np.random.seed(42)
data = []
for maand in ['Januari', 'Februari', 'Maart']:
for week in range(1, 5):
basis_verkoop = 1000 + week * 100
verkoop = np.random.normal(basis_verkoop, 150)
# Voeg enkele uitbijters toe
if np.random.random() < 0.1:
verkoop *= np.random.choice([1.5, 0.5])
data.append({
'Maand': maand,
'Week': week,
'Verkoop': max(verkoop, 0), # Zorg voor positieve waarden
'Datum': f"2023-{['01','02','03'][['Januari','Februari','Maart'].index(maand)]}-{week*7:02d}"
})
return pd.DataFrame(data)
def create_visualisatie(data, analyzer, kleuren=None, stijl='standaard'):
"""Creëer uitgebreide visualisatie van afwijkingen"""
if kleuren is None:
kleuren = {
'normaal': '#2E86AB',
'uitbijter': '#A23B72',
'verwacht': '#F18F01',
'achtergrond': '#F7F7F7'
}
fig, axes = plt.subplots(2, 2, figsize=(16, 12))
fig.suptitle('Verkoopanalyse Q1 2023 - Afwijkingen Identificatie',
fontsize=16, fontweight='bold', y=0.95)
# 1. Verkoop vs Verwachting trendlijn
ax1 = axes[0, 0]
ax1.plot(data['Datum'], data['Verkoop'],
label='Werkelijke Verkoop',
color=kleuren['normaal'],
linewidth=2,
marker='o')
ax1.plot(data['Datum'], data['Verwachte_Waarde'],
label='Verwachte Trend',
color=kleuren['verwacht'],
linewidth=2,
linestyle='--')
# Markeer uitbijters
uitbijters = data[data['Is_Uitbijter']]
ax1.scatter(uitbijters['Datum'], uitbijters['Verkoop'],
color=kleuren['uitbijter'],
s=100,
zorder=5,
label='Significante Afwijkingen')
ax1.set_title('Verkooptrend vs Verwachting', fontweight='bold')
ax1.set_ylabel('Verkoopbedrag (€)')
ax1.legend()
ax1.grid(True, alpha=0.3)
ax1.tick_params(axis='x', rotation=45)
# 2. Afwijkingen per maand
ax2 = axes[0, 1]
maand_data = data.groupby('Maand').agg({
'Afwijking_Percentage': 'mean',
'Is_Uitbijter': 'sum'
}).reset_index()
bars = ax2.bar(maand_data['Maand'], maand_data['Afwijking_Percentage'],
color=[kleuren['uitbijter'] if x > 0 else kleuren['normaal']
for x in maand_data['Afwijking_Percentage']],
alpha=0.7)
ax2.set_title('Gemiddelde Afwijking per Maand (%)', fontweight='bold')
ax2.set_ylabel('Afwijking Percentage')
# Voeg waarden toe boven de bars
for bar, waarde in zip(bars, maand_data['Afwijking_Percentage']):
ax2.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 0.1,
f'{waarde:.1f}%', ha='center', va='bottom', fontweight='bold')
# 3. Heatmap van afwijkingen
ax3 = axes[1, 0]
pivot_data = data.pivot(index='Week', columns='Maand', values='Afwijking_Percentage')
sns.heatmap(pivot_data, annot=True, cmap='RdBu_r', center=0,
ax=ax3, cbar_kws={'label': 'Afwijking Percentage'})
ax3.set_title('Afwijkingen Heatmap - Per Week en Maand', fontweight='bold')
# 4. Uitbijters analyse
ax4 = axes[1, 1]
if not uitbijters.empty:
uitbijter_details = uitbijters[['Datum', 'Verkoop', 'Verwachte_Waarde', 'Afwijking_Percentage']]
uitbijter_details = uitbijter_details.sort_values('Afwijking_Percentage', ascending=False)
x_pos = range(len(uitbijter_details))
ax4.barh(x_pos, uitbijter_details['Afwijking_Percentage'],
color=kleuren['uitbijter'], alpha=0.7)
ax4.set_yticks(x_pos)
ax4.set_yticklabels(uitbijter_details['Datum'])
ax4.set_xlabel('Afwijking Percentage')
ax4.set_title('Top Afwijkingen - Vereist Onderzoek', fontweight='bold')
# Voeg waarden toe
for i, v in enumerate(uitbijter_details['Afwijking_Percentage']):
ax4.text(v + 1, i, f'{v:.1f}%', va='center', fontweight='bold')
plt.tight_layout()
return fig
def aanpasbare_visualisatie(data, analyzer, instellingen=None):
"""Maak een aanpasbare visualisatie met gebruikersinstellingen"""
standaard_instellingen = {
'kleuren': {
'normaal': '#2E86AB',
'uitbijter': '#A23B72',
'verwacht': '#F18F01',
'achtergrond': '#F7F7F7'
},
'drempel_uitbijter': 2,
'stijl': 'seaborn',
'toon_percentages': True,
'figuur_grootte': (16, 12)
}
if instellingen:
standaard_instellingen.update(instellingen)
# Pas stijl aan
plt.style.use(standaard_instellingen['stijl'])
# Herbereken met aangepaste drempel
analyzer.identificeer_uitbijters(standaard_instellingen['drempel_uitbijter'])
# Maak visualisatie
fig = create_visualisatie(data, analyzer,
kleuren=standaard_instellingen['kleuren'])
return fig, standaard_instellingen
# HOOFDPROGRAMMA
if __name__ == "__main__":
# Stap 1: Genereer of laad uw data
print("Genereer voorbeeld verkoopdata voor Q1 2023...")
verkoop_data = genereer_voorbeeld_data()
# Stap 2: Initialiseer analyzer
analyzer = VerkoopAnalyzer(verkoop_data)
# Stap 3: Bereken verwachtingen en identificeer afwijkingen
verkoop_data = analyzer.bereken_verwachtingen(methode='trend')
afwijkingen = analyzer.identificeer_uitbijters(drempel=2)
print(f"\nAnalyse Resultaten:")
print(f"Totaal datapunten: {len(verkoop_data)}")
print(f"Significante afwijkingen gevonden: {len(afwijkingen)}")
print(f"\nTop 3 afwijkingen voor onderzoek:")
for idx, row in afwijkingen.nlargest(3, 'Afwijking_Percentage').iterrows():
print(f" - {row['Datum']}: {row['Verkoop']:.0f} vs verwacht {row['Verwachte_Waarde']:.0f} "
f"({row['Afwijking_Percentage']:+.1f}%)")
# Stap 4: Standaard visualisatie
print("\nMaak standaard visualisatie...")
fig_standaard, _ = aanpasbare_visualisatie(verkoop_data, analyzer)
plt.show()
# Stap 5: Voorbeeld van aangepaste visualisatie
print("\nMaak aangepaste visualisatie met alternatieve instellingen...")
aangepaste_instellingen = {
'kleuren': {
'normaal': '#1f77b4',
'uitbijter': '#ff7f0e',
'verwacht': '#2ca02c',
'achtergrond': '#f0f0f0'
},
'drempel_uitbijter': 1.5,
'stijl': 'ggplot',
'figuur_grootte': (14, 10)
}
fig_aangepast, instellingen = aanpasbare_visualisatie(verkoop_data, analyzer,
aangepaste_instellingen)
plt.show()
# Export opties
print("\nExporteer resultaten...")
verkoop_data.to_csv('verkoop_analyse_q1_2023.csv', index=False)
afwijkingen.to_csv('significante_afwijkingen.csv', index=False)
print("\nAnalyse voltooid! Bestanden zijn geëxporteerd:")
print(" - verkoop_analyse_q1_2023.csv (volledige dataset met analyse)")
print(" - significante_afwijkingen.csv (punten die onderzoek vereisen)")
# Toon samenvatting
print(f"\nSAMENVATTING:")
print(f"Gemiddelde afwijking: {verkoop_data['Afwijking_Percentage'].mean():.2f}%")
print(f"Standaarddeviatie afwijking: {verkoop_data['Afwijking_Percentage'].std():.2f}%")
print(f"Aanbevolen voor onderzoek: {len(afwijkingen)} datapunten")
```
Deze code biedt:
**Kernfunctionaliteiten:**
- Automatische identificatie van afwijkingen van verwachte trends
- Meerdere visualisatiemethoden (trendlijnen, heatmaps, staafdiagrammen)
- Aanpasbare drempels voor uitbijterdetectie
**Aanpassingsopties:**
- **Kleuren**: Volledig aanpasbare kleurschema's
- **Stijlen**: Verschillende matplotlib-stijlen
- **Drempels**: Aanpasbare gevoeligheid voor afwijkingen
- **Labels**: Duidelijke labeling en annotaties
**Gebruik:**
1. Voer de code direct uit met de voorbeelddata
2. Vervang `genereer_voorbeeld_data()` met uw eigen dataset
3. Pas de instellingen aan via de `aanpasbare_visualisatie` functie
4. Exporteer resultaten voor verder onderzoek
De visualisaties tonen duidelijk waar uw verkoop afwijkt van verwachtingen en markeren gebieden die prioriteit hebben voor onderzoek.

