Ontwikkel Seaborn Visualisaties voor Geavanceerde Categorie- en Groeperingsanalyses
description
Met deze prompt kan ik complexe categorische data in mijn dataset overzichtelijk visualiseren, waardoor ik diepere inzichten verkrijg in subgroepen en segmentaties. Dit lost problemen op zoals het ontbreken van overzicht bij meerdere categorieën en maakt analyses visueel duidelijker dan standaard grafieken.
prompt
Help me bij het maken van Seaborn visualisaties die complexe categorische groeperingen en subcategorieën in mijn dataset inzichtelijk maken. Beschrijving van mijn dataset: <beschrijf je dataset met nadruk op categorische variabelen>. Welke categorische variabelen wil ik groeperen of seg ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een voorbeeldcode om je verkoopdata te visualiseren met Seaborn, inclusief de door jou gevraagde kenmerken:
```python
import seaborn as sns
import matplotlib.pyplot as plt
# Stel je voor dat je dataset in een DataFrame 'df' staat
# Zet de stijl op pastelkleurige thema's zonder grid
sns.set_theme(style="whitegrid", palette="pastel")
plt.style.use('None') # Grid uitzetten
# Maak een FacetGrid per Regio
g = sns.catplot(
data=df,
x='Productcategorie',
y='Verkoopwaarde',
hue='Klanttype', # indien je extra segmentatie wilt
col='Regio', # facet grid per Regio
kind='bar',
height=4,
aspect=1
)
# Pas de titels en labels aan
g.set_axis_labels("Productcategorie", "Verkoopwaarde")
g.set_titles(col_template="{col_name}")
plt.show()
```
**Uitleg:**
- `sns.set_theme()` zorgt voor een pastelkleurenpalet en geen grid.
- `sns.catplot()` met `col='Regio'` maakt een facet grid per regio.
- `kind='bar'` gebruikt een barplot om de verkoopwaarde per productcategorie te tonen.
- `hue='Klanttype'` segmentatie wordt toegevoegd om subcategorieën te visualiseren.
- Grid wordt uitgeschakeld door de stijl aan te passen.
Mocht je liever een countplot willen gebruiken om bijvoorbeeld het aantal verkopen per categorie te laten zien, dan zou je `kind='count'` gebruiken en de y-waarde weglaten.
Laat me weten of je nog verdere aanpassingen wenst!
provider: deepseek
model: deepseek-chat
Absoluut! Hier is een uitgebreid stappenplan en codevoorbeeld in het Nederlands om je te helpen krachtige, inzichtelijke visualisaties te maken met Seaborn.
### Stappenplan & Code
De volgende code maakt een *facet grid* van barplots, gegroepeerd per regio en productcategorie, met een nette opmaak volgens jouw voorkeuren.
```python
# Importeer de benodigde bibliotheken
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
# Stel de esthetische stijl van Seaborn in naar 'whitegrid' en gebruik pastelkleuren
sns.set_theme(style="whitegrid", palette="pastel")
# Laad je dataset (vervang 'jouw_dataset.csv' met het juiste pad en bestandsnaam)
# df = pd.read_csv('jouw_dataset.csv')
# Voorbeeld: Maak een kleine dataset aan voor het geval je geen bestand hebt
# data = {
# 'Regio': ['Noord', 'Noord', 'Zuid', 'Zuid', 'Oost', 'Oost', 'West', 'West'],
# 'Productcategorie': ['Elektronica', 'Meubels', 'Elektronica', 'Meubels', 'Elektronica', 'Meubels', 'Elektronica', 'Meubels'],
# 'Klanttype': ['Particulier', 'Zakelijk', 'Particulier', 'Zakelijk', 'Particulier', 'Zakelijk', 'Particulier', 'Zakelijk'],
# 'Verkoopwaarde': [5000, 3000, 4500, 3500, 6000, 2000, 5500, 4000]
# }
# df = pd.DataFrame(data)
# 1. VISUALISATIE: Totale verkoopwaarde per Productcategorie, uitgesplitst per Regio
# Dit maakt een raster (facet grid) van staafdiagrammen.
# Creëer een figuur en een raster van subplots
g = sns.FacetGrid(df, col="Regio", col_wrap=2, height=4, sharey=False)
# Map een barplot naar elk deel van het raster
g.map_dataframe(sns.barplot, x="Productcategorie", y="Verkoopwaarde", hue="Klanttype", errorbar=None)
# Voeg titels en labels toe
g.set_axis_labels("Productcategorie", "Totale Verkoopwaarde")
g.set_titles("{col_name}")
g.add_legend(title="Klanttype")
# Optioneel: verwijder de gridlijnen voor een schonere look (zoals gevraagd)
plt.gcf().suptitle('Totale Verkoopwaarde per Productcategorie en Klanttype, uitgesplitst per Regio', fontsize=16)
sns.despine(left=True) # Verwijder de randen voor een minimalistische look
plt.tight_layout()
plt.show()
# 2. VISUALISATIE: Aantal verkopen (Countplot) per Productcategorie, uitgesplitst per Regio
# Dit is handig om de volumeverschillen te zien, niet alleen de waarde.
g = sns.FacetGrid(df, col="Regio", col_wrap=2, height=4, sharey=False)
g.map_dataframe(sns.countplot, x="Productcategorie", hue="Klanttype")
g.set_axis_labels("Productcategorie", "Aantal Verkopen")
g.set_titles("{col_name}")
g.add_legend(title="Klanttype")
plt.gcf().suptitle('Aantal Verkopen per Productcategorie en Klanttype, uitgesplitst per Regio', fontsize=16)
sns.despine(left=True)
plt.tight_layout()
plt.show()
```
### Uitleg bij de Code:
1. **Stijl & Kleuren**: `sns.set_theme(style="whitegrid", palette="pastel")` stelt de gewenste pastelkleuren in en gebruikt een witte achtergrond met grid. `sns.despine()` wordt gebruikt om het grid later weer te verwijderen voor een clean look, zoals je aangaf.
2. **FacetGrid**: De `sns.FacetGrid` is de kern van je vraag. De parameter `col="Regio"` creëert een apart subplot voor elke unieke waarde in de `Regio` kolom. `col_wrap=2` zorgt ervoor dat de subplots in rijen van 2 worden weergegeven.
3. **Barplot vs. Countplot**:
* **Barplot**: De eerste visualisatie gebruikt `sns.barplot` met `y="Verkoopwaarde"`. Dit *aggregeert* (sommeert standaard) de verkoopwaarden voor elke combinatie van Productcategorie en Klanttype binnen een Regio. Je ziet dus de **totale omzet**.
* **Countplot**: De tweede visualisatie gebruikt `sns.countplot`. Deze telt simpelweg het **aantal verkopen** (rijen in je dataset) voor elke combinatie. Dit geeft inzicht in populariteit of volume, onafhankelijk van de waarde.
4. **Hue-segmentatie**: In beide gevallen wordt de parameter `hue="Klanttype"` gebruikt. Dit splitst elke staaf in de diagrammen verder op volgens het Klanttype, waardoor je nóg een laag van detail krijgt. De legende wordt automatisch toegevoegd.
5. **Titels en Labels**: `set_axis_labels` en `set_titles` zorgen voor duidelijke aslabels en titels voor elk subplot. `suptitle` voegt een overkoepelende titel toe aan de hele figuur.
### Aanbevelingen voor Verdere Analyse:
* **Order**: Je kunt de volgorde van categorieën controleren met de `order` parameter (bijv. `order=["Noord", "Oost", "Zuid", "West"]`) en `hue_order` in `sns.barplot` en `sns.countplot`.
* **Aggregatiefunctie**: Standaard sommeert `barplot` de `y`-waarde. Je kunt dit wijzigen, bijvoorbeeld naar het gemiddelde, met de `estimator` parameter: `estimator=np.mean`.
* **Andere Plots**: Voor deze data zou een `boxplot` of `violinplot` ook zeer interessant kunnen zijn om de *verdeling* van de verkoopwaarden per categorie te zien, niet alleen de som of het aantal.
Hopelijk geeft dit je een uitstekende basis om mee verder te werken