slogan3

Bouw een Seaborn Visualisatie met Meerdere Data-Transformaties

description

Met deze prompt kan ik complexe data voorbereiden en transformeren binnen één Seaborn visualisatie, wat diepgaandere inzichten mogelijk maakt zonder aparte preprocessing stappen. Het bespaart tijd en verhoogt de flexibiliteit ten opzichte van standaard visualisaties.

prompt

Help me een Seaborn visualisatie te maken waarin ik meerdere datatransformaties kan toepassen voordat ik de grafiek genereer. Beschrijving van mijn dataset: <beschrijf kort je dataset>. Welke transformaties wil ik toepassen: <bijvoorbeeld normalisatie, aggregatie, filtering>. Kies het type gr ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Hier is een voorbeeld van hoe je een Seaborn-visualisatie kunt maken met meerdere datatransformaties, gebaseerd op jouw specificaties: ```python import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # Stap 1: Laad je dataset # vervang 'jouw_dataset.csv' door je eigen bestand df = pd.read_csv('jouw_dataset.csv') # Stap 2: Filter op regio Noord # veronderstel dat er een kolom 'Regio' is df_noord = df[df['Regio'] == 'Noord'] # Stap 3: Normaliseer de verkoopcijfers (Bedrag) # normalisatie tussen 0 en 1 df_noord['Bedrag_norm'] = (df_noord['Bedrag'] - df_noord['Bedrag'].min()) / (df_noord['Bedrag'].max() - df_noord['Bedrag'].min()) # Stap 4: Variabelen voor de heatmap # bijvoorbeeld leeftijd en inkomen, zorg dat deze kolommen bestaan # indien niet, moet je deze toevoegen of berekenen # voor dit voorbeeld gaan we ervan uit dat er kolommen 'Leeftijd' en 'Inkomen' zijn # Stap 5: Maak een pivot tabel voor de heatmap # bijvoorbeeld op leeftijd en inkomen, met de genormaliseerde bedragen pivot_table = df_noord.pivot_table( index='Leeftijd', columns='Inkomen', values='Bedrag_norm', aggfunc='mean' ) # Stap 6: Plot de heatmap plt.figure(figsize=(12,8)) sns.set_theme(style='whitegrid') # stijl kiezen ax = sns.heatmap( pivot_table, cmap='YlGnBu', # gekozen kleurenpalet annot=True, # annotaties tonen fmt=".2f" # formaat van annotaties ) # Extra: voeg een titel toe ax.set_title('Gemiddelde genormaliseerde Bedragen per Leeftijd en Inkomen in Noord') plt.show() ``` **Toelichting:** - Je kunt meerdere datatransformaties toepassen, zoals filteren en normaliseren. - De heatmap visualiseert de relatie tussen leeftijd en inkomen, met genormaliseerde bedragen. - Het kleurenpalet is ingesteld op 'YlGnBu', maar je kunt dit aanpassen. - Annotaties tonen de exacte waarden boven elke cel. Wil je nog aanvullende transformaties of aanpassingen?
provider: deepseek
model: deepseek-chat
Er zijn enkele tegenstrijdigheden in je verzoek die ik moet ophelderen voor een goede Seaborn-helpmiddel: **Probleemanalyse:** - Je dataset heeft kolommen: Datum, Bedrag, Categorie - Maar je wilt visualiseren: Leeftijd, Inkomen (die niet in je dataset lijken te staan) - Je wilt filteren op "regio Noord" maar "regio" staat niet in je kolommen - Heatmap is niet geschikt voor waarden boven punten annoteren **Aanbevolen oplossing:** Gebruik een scatterplot met regressielijn in plaats van heatmap, of pas je dataset aan. ```python import seaborn as sns import matplotlib.pyplot as plt import pandas as pd from sklearn.preprocessing import StandardScaler # Voorbeeld dataset aanpassing (vervang met je eigen data) data = pd.DataFrame({ 'Datum': pd.date_range('2023-01-01', periods=100), 'Bedrag': np.random.normal(1000, 200, 100), 'Categorie': np.random.choice(['Noord', 'Zuid', 'Oost', 'West'], 100), 'Leeftijd': np.random.randint(20, 65, 100), # Aangemaakt voor demonstratie 'Inkomen': np.random.normal(50000, 15000, 100) # Aangemaakt voor demonstratie }) # Transformaties # 1. Filter op regio Noord filtered_data = data[data['Categorie'] == 'Noord'] # 2. Normaliseer verkoopcijfers (aangenomen dat 'Bedrag' verkoopcijfers zijn) scaler = StandardScaler() filtered_data['Bedrag_genormaliseerd'] = scaler.fit_transform(filtered_data[['Bedrag']]) # Visualisatie plt.figure(figsize=(10, 6)) scatter = sns.scatterplot( data=filtered_data, x='Leeftijd', y='Inkomen', size='Bedrag_genormaliseerd', hue='Bedrag_genormaliseerd', palette='viridis', sizes=(20, 200) ) # Annotaties toevoegen for i, row in filtered_data.iterrows(): plt.annotate(f"{row['Bedrag']:.0f}", (row['Leeftijd'], row['Inkomen']), xytext=(5, 5), textcoords='offset points', fontsize=8) plt.title('Relatie tussen Leeftijd en Inkomen (Regio Noord)') plt.xlabel('Leeftijd') plt.ylabel('Inkomen') plt.legend(title='Genormaliseerd Bedrag') sns.set_style("whitegrid") plt.show() ``` **Alternatief voor heatmap:** Als je echt een heatmap wilt, overweeg dan: ```python # Maak een pivot table voor heatmap pivot_data = filtered_data.pivot_table( values='Bedrag_genormaliseerd', index='Leeftijd', columns='Inkomen', aggfunc='mean' ) plt.figure(figsize=(12, 8)) sns.heatmap(pivot_data, annot=True, fmt='.2f', cmap='YlGnBu') plt.title('Heatmap van Genormaliseerde Verkoopcijfers (Regio Noord)') plt.show() ``` **Opmerking:** Je moet je dataset eerst aanpassen zodat deze de kolommen 'Leeftijd' en 'Inkomen' bevat, of specificeer welke bestaande kolommen je wilt gebruiken.