slogan3

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
disclaimerOnPageApi image_legal_disclaimer...

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.