Cursus
Heb je je ooit afgevraagd hoe je verdelingen van numerieke data in Python beter kunt weergeven? Dan is je beste keuze om te leren werken met boxplots! Boxplots zijn een geweldige manier om verdelingen tussen meerdere groepen te vergelijken.
In deze tutorial behandelen we wat boxplots zijn, de verschillende manieren om ze in Python te maken en een aantal veelvoorkomende beginnersfouten.
Wat zijn Python-boxplots?
Boxplots, ook wel box-and-whiskerplots genoemd, zijn een standaard manier om data weer te geven op basis van een vijfpuntensamenvatting: minimum, eerste kwartiel (Q1), mediaan, derde kwartiel (Q3) en maximum.
Boxplots zijn vooral handig om outliers te identificeren en om inzicht te krijgen in de spreiding en scheefheid van de data. Ze worden ook gebruikt bij het vergelijken van meerdere groepen of bij het visualiseren van de verdeling van één variabele.
Onderdelen van een boxplot
Een typische boxplot bestaat uit verschillende onderdelen als onderdeel van de “anatomie”:
- Mediaan: Dit is de middelste waarde van de data, weergegeven door een lijn in de box.
- Boxen: Deze stellen de interkwartielafstand (IQR) van de data voor, het bereik tussen Q1 en Q3. De onderste en bovenste randen stellen respectievelijk Q1 en Q3 voor.
- Snorharen (whiskers): Dit zijn verticale lijnen die vanaf beide uiteinden van de box doorlopen en het minimum en maximum weergeven, exclusief eventuele outliers.
- Outliers: Dit zijn punten buiten de snorharen die als ongebruikelijk of extreem worden beschouwd ten opzichte van de rest van de data.
- Kappen (caps): Dit zijn horizontale lijntjes aan de uiteinden van de snorharen, die het minimum en maximum voorstellen, inclusief eventuele outliers.
Deze onderdelen samen geven de boxplot statistische betekenis en maken het gemakkelijk om visueel te vergelijken tussen verschillende datagroepen.
Python is een geavanceerde tool die ons kan helpen boxplots te maken. In de volgende secties bespreken we verschillende methoden om dat te doen.
Python-boxplots: stapsgewijze gids
Nu we de basis van boxplots kennen, kijken we hoe je ze maakt met Python. Meerdere Python-bibliotheken, zoals Matplotlib, Seaborn en Plotly, ondersteunen het maken van boxplots.
1. Benodigde bibliotheken installeren
Om boxplots in Python te maken, moet je eerst de benodigde bibliotheken installeren. De belangrijkste bibliotheken zijn Matplotlib, Seaborn en Plotly.
Hier is de code om ze te installeren:
pip install matplotlib
pip install seaborn
pip install plotly==5.22.0
2. Bibliotheken importeren en data laden
Na installatie is de volgende stap om deze bibliotheken in je Python-omgeving te importeren.
Zorg er ook voor dat je de datasets laadt die je voor je boxplots gaat gebruiken, indien van toepassing.
#imports Matplotlib library and assigns shorthand 'plt'
import matplotlib.pyplot as plt
#imports Seaborn library and assigns shorthand 'sns'
import seaborn as sns
#imports Plotly library and assigns shorthand 'px'
import plotly.express as px
3. Boxplots maken met Matplotlib
Dankzij de veelzijdigheid van Python heb je maar weinig code nodig om een eenvoudige boxplot te maken. Laten we beginnen met de meest gebruikte bibliotheek, Matplotlib.
1. Enkele Matplotlib-boxplot
Om een boxplot te maken met Matplotlib, importeer je de benodigde bibliotheken:
import matplotlib.pyplot as plt
import numpy as np
Vervolgens bereiden we een eenvoudige dataset voor:
# Generates some random dataset
np.random.seed(10)
data = np.random.normal(0, 1, 100)
Tot slot maken we de daadwerkelijke boxplot en tonen we deze:
# Creates a boxplot
plt.boxplot(data) plt.title('Basic Boxplot') plt.show()
Hier zijn de resultaten:
2. Meerdere Matplotlib-boxplots
Als je aparte boxplots in verschillende subplotten wilt maken, kun je de functie subplot gebruiken. Hiermee kun je meerdere boxplots naast elkaar in één afbeelding maken.
Hier is het volledige codevoorbeeld:
import matplotlib.pyplot as plt
import numpy as np
# Generates multiple datasets
data1 = np.random.normal(0, 1, 100)
data2 = np.random.normal(1, 2, 100)
data3 = np.random.normal(2, 1.5, 100)
# Creates subplots
fig, axs = plt.subplots(1, 3, figsize=(15, 5))
# Plots Boxplot for Data 1
axs[0].boxplot(data1)
axs[0].set_title('Data 1')
axs[0].set_xlabel('Sample')
axs[0].set_ylabel('Value')
# Plots Boxplot for Data 2
axs[1].boxplot(data2)
axs[1].set_title('Data 2')
axs[1].set_xlabel('Sample')
axs[1].set_ylabel('Value')
# Plots Boxplot for Data 3
axs[2].boxplot(data3)
axs[2].set_title('Data 3')
axs[2].set_xlabel('Sample')
axs[2].set_ylabel('Value')
# Adjusts layout
plt.tight_layout()
plt.show()
Dit is de resulterende plot:

Deze subplotten delen echter niet dezelfde as en zijn niet geschikt voor vergelijking naast elkaar tussen categorieën. Voor meerdere boxplots met dezelfde as moet je gegroepeerde boxplots maken.
Gegroepeerde boxplots zijn vooral handig om verdelingen over meerdere categorieën te vergelijken. Ze geven een verfijnder beeld van de data. Zulke vergelijkingen kunnen verschillen blootleggen die in andere grafieken niet meteen opvallen.
Elke groep wordt naast elkaar in dezelfde grafiek weergegeven, waardoor variaties, trends en outliers binnen verschillende subcategorieën makkelijker te zien zijn.
Zo maak je een gegroepeerde subplot:
# Generates grouped data
data_group1 = [np.random.normal(0, 1, 100), np.random.normal(1, 2, 100), np.random.normal(2, 1.5, 100)]
data_group2 = [np.random.normal(0, 1, 100), np.random.normal(1, 2, 100), np.random.normal(2, 1.5, 100)]
# Combines two data groups into a dataset
data = data_group1 + data_group2
# Creates grouped boxplots
plt.boxplot(data, positions=[1, 2, 3, 5, 6, 7], labels=['G1-D1', 'G1-D2', 'G1-D3', 'G2-D1', 'G2-D2', 'G2-D3'])
plt.title('Grouped Boxplots')
plt.xlabel('Group-Dataset')
plt.ylabel('Value')
plt.show()
Dit is de gegroepeerde boxplot die door de bovenstaande code wordt geproduceerd:

4. Matplotlib-boxplots aanpassen
Je kunt geavanceerde aanpassingen in Matplotlib gebruiken om je datavisualisaties te verbeteren.
Technieken zoals gemiddelden toevoegen, standaarddeviaties toevoegen, gegroepeerde boxplots maken en horizontale boxplots gebruiken kunnen meer inzicht geven in de verdeling van je data.
Boxplots in Python aanpassen stelt je ook in staat om visuals af te stemmen op de specificaties van je project.
Hier zijn enkele manieren om boxplots aan te passen met de Matplotlib-bibliotheek:
1. Labels en titels toevoegen
Titels en labels maken je plots begrijpelijker voor kijkers, die zo sneller de datavergelijking zien. Deze toevoegen is eenvoudig en kan met de functies van Matplotlib.
Zo voeg je labels toe aan een Matplotlib-boxplot:
plt.boxplot(data)
# Adds title
plt.title('Customized Boxplot Title')
# Adds x axis label
plt.xlabel('Customized X Label')
# Adds y axis label
plt.ylabel('Customized Y Label')
plt.show()
Dit levert een gelabelde boxplot op zoals in de afbeelding hieronder:

2. Boxplotkleuren aanpassen
Het aanpassen van de kleuren en stijlen van boxplots in Python zorgt voor een duidelijke en aantrekkelijke presentatie van data. Het helpt je ook om specifieke datapunten of vergelijkingen voor je stakeholders te benadrukken.
Je kunt de kleuren van de boxen, snorharen, kappen, medianen en uitschieters veranderen met de parameters boxprops, whiskerprops, capprops, medianprops en flierprops.
Hier is het codevoorbeeld:
plt.boxplot(data, boxprops=dict(color='blue'), whiskerprops=dict(color='red'), capprops=dict(color='green'), medianprops=dict(color='orange'), flierprops=dict(markerfacecolor='red', marker='o'))
plt.show()
Dit zorgt voor verschillende kleuren voor je boxplotelementen op basis van de ingestelde parameters:

3. Gemiddelde en standaarddeviatie toevoegen
Voeg het gemiddelde en de standaarddeviatie toe aan de boxplot om meer statistische informatie te bieden.
# Creates dataset
data1 = np.random.normal(0, 1, 100)
data2 = np.random.normal(1, 2, 100)
data3 = np.random.normal(2, 1.5, 100)
# Calculates the mean and standard deviations
mean = [np.mean(d) for d in data]
std_devs = [np.std(d) for d in data]
# Creates a boxplot
plt.boxplot(data, labels=['Data 1', 'Data 2', 'Data 3'])
# Adds mean as red dots
for i in range(len(mean)):
plt.plot(i + 1, mean[i], 'ro')
# Adds standard deviations as error bars
for i in range(len(std_devs)):
plt.errorbar(i + 1, mean[i], yerr=std_devs[i], fmt='o', color='red')
# Plots graph
plt.title('Boxplot with Means and Standard Deviations')
plt.xlabel('Dataset')
plt.ylabel('Value')
plt.show()
Hier is de resulterende plot:

4. Horizontale boxplots
Horizontale boxplots kunnen de leesbaarheid vergroten, vooral bij lange categorienamen.
Dit kan eenvoudig met de parameter vert van de functie boxplot in Matplotlib.
# Creates horizontal boxplot
plt.boxplot(data,
labels=['Data 1', 'Data 2', 'Data 3'],
vert=False)
# Plots graph
plt.title('Horizontal Boxplot')
plt.xlabel('Value')
plt.ylabel('Dataset')
plt.show()
Dit is de plot die ontstaat door bovenstaande code uit te voeren:

Onze cursus Introduction to Data Visualization with Matplotlib helpt je ook om datavisualisaties te maken die verder gaan dan boxplots.
Als je deze informatie later nog eens wilt raadplegen, is hier een cheat sheet-samenvatting voor plotten in Matplotlib:

5. Boxplots maken met Seaborn
Seaborn, gebouwd bovenop Matplotlib, maakt het eenvoudig om met minimale code esthetisch aantrekkelijke boxplots te maken. De eenvoudige syntaxis is toegankelijk voor alle niveaus, en de integratie met andere bibliotheken geeft maximale flexibiliteit voor data-analyse.
1. Basis-Seaborn-boxplot
Hier is een stapsgewijze gids om een basisboxplot met Seaborn te maken. Begin, zoals eerder, met het importeren van de benodigde bibliotheken.
# Imports necessary libraries
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
Vervolgens bereiden we een eenvoudige dataset voor:
# Generates a random dataset
np.random.seed(10)
data = np.random.normal(0, 1, 100)
Tot slot maken we de daadwerkelijke boxplot en tonen we deze:
# Creates a basic boxplot
sns.boxplot(data=data)
# Adds title to the boxplot
plt.title('Basic Boxplot')
plt.show()
Dit is de resulterende plot:

2. Geavanceerde Seaborn-aanpassingen
Je kunt je Seaborn-plot aanpassen met de parameters hue, orient en palette.
Laten we zien hoe je kleuren aan je boxplot toevoegt op basis van categorieën, gebruik hiervoor de parameter hue:
# Generate multiple datasets
data = {
'Group': ['A']*100 + ['B']*100 + ['C']*100,
'Value': np.concatenate([np.random.normal(0, 1, 100),
np.random.normal(1, 2, 100),
np.random.normal(2, 1.5, 100)])
}
df = pd.DataFrame(data)
# Create additional grouping data
df['Subgroup'] = np.random.choice(['X', 'Y'], size=300)
# Plots graph
sns.boxplot(x='Group', y='Value', data=df, hue='Subgroup', palette='Set2')
plt.title('Colored Boxplot')
plt.show()
Hier is de aangepaste boxplot:

Om je boxplot in een specifieke oriëntatie uit te lijnen, gebruik je de parameter orient. Voor verticale oriëntatie stel je orient in op 'v'. Voor horizontale oriëntatie stel je deze in op 'h'.
Hier is de code voor een horizontale boxplot:
# Plots horizontal boxplot
sns.boxplot(data=df, orient='h', palette='Set2')
plt.title('Colored Boxplot')
plt.show()
De bovenstaande code maakt een boxplot zoals deze:

Om individuele datapunten aan de boxplot toe te voegen, kun je een swarm plot gebruiken met de functie swarmplot:
# Plots boxplot
sns.boxplot(x='Group', y='Value', data=df)
# Overlays swarm plot over boxplot
sns.swarmplot(x='Group', y='Value', data=df, color='black', alpha=0.5)
plt.title('Boxplot with Swarmplot')
plt.show()
De bovenstaande code maakt een boxplot zoals deze:

Een swarm plot zoals deze kan helpen meer inzicht te geven in de verdeling van je data. Het vult de statistische informatie van een boxplot aan om je kijkers een compleet beeld van je data te geven.
Bekijk onze cursus Introduction to Data Visualization with Seaborn voor meer manieren om datavisualisaties in Seaborn te implementeren.
Als je deze informatie later wilt raadplegen, is hier een cheat sheet voor plotten in Seaborn:

Resultaten van Python-boxplots interpreteren
De interpretatie van een boxplot hangt af van de context en de specifieke onderzoeksvraag.
Er zijn echter enkele algemene richtlijnen die helpen om de dataverdeling in een boxplot te begrijpen. Deze omvatten:
- De mediaanlijn geeft de middelste waarde van de dataset aan.
- De interkwartielafstand (IQR) of middelste 50% van de waarden ligt tussen het eerste kwartiel (Q1) en het derde kwartiel (Q3).
- De snorharen lopen respectievelijk 1,5 keer boven Q3 en onder Q1 door.
- Outliers worden afzonderlijk weergegeven met een punt of asterisk.
- De lengte van de box en snorharen geeft een idee van hoe verspreid de data is.
- Scheve verdelingen tonen asymmetrie in de grootte en positie van de box ten opzichte van de mediaanlijn.
- Outliers die verder dan 1,5 keer boven of onder Q3 en Q1 liggen, kunnen duiden op extreme waarden of mogelijke meetfouten.
Veelgemaakte fouten om te vermijden bij het maken van Python-boxplots
Hoewel Python het eenvoudig maakt om aantrekkelijke boxplots te maken op basis van je datasets, zijn er enkele aspecten om in gedachten te houden om misleidende of onjuiste visualisaties te voorkomen.
1. Missende waarden niet afhandelen
Bij het maken van een Python-boxplot wordt het belang van datapreprocessing vaak over het hoofd gezien, wat tot misleidende resultaten kan leiden.
Alle datavisualisaties vereisen enige vorm van opschoning vóór het plotten. Boxplots vormen hierop geen uitzondering en kunnen missende waarden als outliers weergeven, wat de resultaten kan vertekenen.
2. Onjuiste schaling van data
Daarnaast vergeten gebruikers soms de data op de juiste manier te schalen, wat kan resulteren in een scheve boxplot die de werkelijke kenmerken van de dataset verkeerd weergeeft. Schalen zorgt ervoor dat features gelijk bijdragen aan de analyse.
3. Outliers niet aanpakken
Tot slot kunnen analisten nalaten om outliers grondig te onderzoeken en aan te pakken vóór het plotten. Onjuiste omgang met outliers kan de interpretatie vertekenen; het is cruciaal om echte uitschieters te onderscheiden van fouten of anomalieën in de dataverzameling.
Gebruik deze cheat sheet bij het bouwen van datavisualisaties:

Tot slot
Boxplots zijn een waardevol hulpmiddel om dataverdelingen te visualiseren en ze tussen categorieën te vergelijken.
In Python kun je Matplotlib, Seaborn of Plotly gebruiken om snel boxplots te maken zonder veel code. DataCamp heeft uitgebreide cursussen voor elk van deze tools:
- Introduction to Data Visualization with Matplotlib
- Introduction to Data Visualization with Seaborn
- Introduction to Data Visualization with Plotly
Wil je meer ontdekken over datavisualisatie met Python? Dan is de Data Visualization with Python skill track erg behulpzaam!
FAQs
Kunnen boxplots worden gebruikt voor niet-numerieke data?
Nee, boxplots zijn expliciet bedoeld voor numerieke data. Ze geven de verdeling van een dataset weer op basis van een vijfpuntssamenvatting (minimum, eerste kwartiel, mediaan, derde kwartiel en maximum), wat numerieke waarden vereist. Voor niet-numerieke data zijn andere visualisaties zoals staafdiagrammen of cirkeldiagrammen geschikter.
Hoe kan ik de aanwezigheid van meerdere outliers in een boxplot interpreteren?
Meerdere outliers in een boxplot duiden op verschillende datapunten die significant afwijken van de rest van de dataset. Dit kan wijzen op variabiliteit of ongewone observaties die nader onderzoek vereisen. Outliers kunnen het gevolg zijn van fouten in dataverzameling, natuurlijke variatie of betekenisvolle verschillen in subgroepen binnen de data.
Kan ik boxplots gebruiken om dataverdelingen over meerdere categorieën te vergelijken?
Ja, boxplots zijn uitstekend geschikt om verdelingen over verschillende categorieën te vergelijken. Je kunt boxplots naast elkaar plaatsen voor verschillende categorieën om medianen, interkwartielafstanden en de aanwezigheid van outliers te vergelijken. Dit helpt om verschillen en overeenkomsten in de verdelingen van diverse groepen te identificeren.
Wat zijn veelvoorkomende valkuilen bij het interpreteren van boxplots?
Vermijd bij het interpreteren van boxplots de volgende valkuilen:
- De context van outliers negeren: outliers duiden niet altijd op fouten maar kunnen betekenisvolle variaties zijn.
- De mediaan verwarren met het gemiddelde: de mediaan is de middelste waarde, niet het gemiddelde, en is minder gevoelig voor outliers.
- Het belang van steekproefgrootte over het hoofd zien: kleine steekproeven kunnen misleidende boxplots opleveren. Zorg dat je datavolume voldoende is voor een betrouwbare interpretatie.
Hoe maak ik interactieve boxplots in Python?
Om interactieve boxplots in Python te maken, kun je bibliotheken zoals Plotly of Bokeh gebruiken. Met deze bibliotheken voeg je interactiviteit toe aan je visualisaties, zoals tooltips, zoomen en pannen.
Ik ben Austin, een blogger en techschrijver met jarenlange ervaring als zowel datascientist als data-analist in de gezondheidszorg. Ik begon mijn techreis met een achtergrond in biologie en help nu anderen dezelfde overstap te maken via mijn techblog. Mijn passie voor technologie heeft geleid tot schrijfbijdragen aan tientallen SaaS-bedrijven, waarmee ik anderen inspireer en mijn ervaringen deel.

