Direkt zum Inhalt

Python Boxplots: Ein umfassender Leitfaden für Anfänger

Erstelle beeindruckende Boxplots in Python! Dieses umfassende Einsteigertutorial behandelt Matplotlib und Seaborn und hilft dir, Datenverteilungen zu visualisieren und zu vergleichen.
Aktualisierte 16. Jan. 2025  · 15 Min. Lesezeit

Hast du dich schon einmal gefragt, wie man in Python Verteilungen von numerischen Daten besser darstellen kann? Am besten ist es, wenn du lernst, wie man Boxplots benutzt! Boxplots sind eine gute Möglichkeit, um Verteilungsvergleiche zwischen mehreren Gruppen zu visualisieren.

In diesem Lernprogramm erfahren wir, was Boxplots sind, wie man sie in Python erstellt und welche Anfängerfehler häufig gemacht werden.

Was sind Python Boxplots?

Boxplots, auch bekannt als Box-and-Whisker-Plots, sind eine Standardmethode zur Darstellung der Datenverteilung auf der Grundlage einer fünfstelligen Zusammenfassung: Minimum, erstes Quartil (Q1), Median, drittes Quartil (Q3) und Maximum.

Boxplots sind besonders nützlich, um Ausreißer zu identifizieren und die Streuung und Schräglage der Daten zu verstehen. Sie werden auch verwendet, um mehrere Gruppen zu vergleichen oder die Verteilung einer einzelnen Variable zu visualisieren.

Boxplot-Komponenten

Ein typischer Boxplot besteht aus mehreren Komponenten, die Teil seiner Anatomie sind:

  1. Mittelwert: Dies ist der mittlere Wert der Daten, der durch eine Linie innerhalb des Kastens dargestellt wird.
  2. Boxen: Sie stellen den Interquartilsbereich (IQR) der Daten dar, der den Bereich zwischen Q1 und Q3 repräsentiert. Die untere und obere Kante stehen für Q1 bzw. Q3.
  3. Schnurrhaare: Das sind vertikale Linien, die von beiden Enden der Box ausgehen und die Mindest- und Höchstwerte darstellen, wobei Ausreißer ausgeschlossen werden.
  4. Ausreißer: Dies sind Punkte außerhalb der Whisker, die im Vergleich zum Rest der Daten als ungewöhnlich oder extrem gelten.
  5. Kappen: Dies sind horizontale Linien an den Enden der Whisker, die die Minimal- und Maximalwerte einschließlich der Ausreißer darstellen.

Diese Komponenten verleihen dem Boxplot eine statistische Bedeutung und ermöglichen einfache visuelle Vergleiche zwischen verschiedenen Datengruppen.

Python ist ein fortschrittliches Werkzeug, mit dem wir Boxplots erstellen können. In den folgenden Abschnitten werden wir uns verschiedene Methoden ansehen, um das zu erreichen.

Python Boxplots: Schritt-für-Schritt-Anleitung

Nachdem wir nun ein grundlegendes Verständnis von Boxplots haben, wollen wir sehen, wie wir sie mit Python erstellen können. Mehrere Bibliotheken in Python, wie Matplotlib, Seaborn und Plotly, unterstützen die Erstellung von Boxplots.

Um Boxplots in Python zu erstellen, musst du zunächst die notwendigen Bibliotheken installieren. Die wichtigsten benötigten Bibliotheken sind Matplotlib, Seaborn und Plotly.

Hier ist der Code, um sie zu installieren:

pip install matplotlib
pip install seaborn
pip install plotly==5.22.0

Nach der Installation musst du diese Bibliotheken in deine Python-Umgebung importieren.

Achte darauf, dass du auch die Datensätze lädst, die du für deine Boxplots verwendest, falls vorhanden.

#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

Dank der Vielseitigkeit von Python erfordert die Erstellung eines einfachen Boxplots nur minimalen Code. Beginnen wir mit der am weitesten verbreiteten Bibliothek, Matplotlib.

Um einen Boxplot mit Matplotlib zu erstellen, importiere die notwendigen Bibliotheken:

import matplotlib.pyplot as plt
import numpy as np

Als Nächstes wollen wir einen einfachen Datensatz vorbereiten:

# Generates some random dataset
np.random.seed(10) 
data = np.random.normal(0, 1, 100)

Zum Schluss erstellen wir den eigentlichen Boxplot und drucken ihn aus:

# Creates a boxplot
plt.boxplot(data) plt.title('Basic Boxplot') plt.show()

Hier sind die Ergebnisse:Basic Matplotlib plot

Wenn du separate Boxplots in verschiedenen Teilplots erstellen möchtest, kannst du die Funktion subplot verwenden. Damit kannst du mehrere Boxplots nebeneinander in einem einzigen Bild erstellen. 

Hier ist das vollständige Codebeispiel:

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()

Dies ist das Ergebnis:

Mehrere Boxplots in Matplotlib

Diese Unterdiagramme haben jedoch nicht dieselbe Achse und eignen sich nicht für nebeneinander liegende Vergleiche zwischen den Kategorien. Für mehrere Boxplots mit der gleichen Achse musst du gruppierte Boxplots erstellen.

Gruppierte Boxplots sind besonders nützlich, um Verteilungen über mehrere Kategorien hinweg zu vergleichen. Sie ermöglichen ein differenzierteres Verständnis der Daten. Diese Vergleiche können Unterschiede aufdecken, die aus anderen Karten nicht sofort ersichtlich sind.

Jede Gruppe wird im selben Diagramm nebeneinander dargestellt, so dass es einfacher ist, Abweichungen, Trends und Ausreißer in den verschiedenen Unterkategorien zu erkennen.

Hier erfährst du, wie du eine gruppierte Teilfläche erstellst:

# 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()

Dies ist der gruppierte Boxplot, der mit dem obigen Code erstellt wurde:

Gruppierte Boxplots in Matplotlib

Du kannst erweiterte Anpassungen in Matplotlib nutzen, um deine Datenvisualisierungen zu verbessern.

Techniken wie das Hinzufügen von Mittelwerten, das Hinzufügen der Standardabweichung, das Erstellen gruppierter Boxplots und die Verwendung horizontaler Boxplots können einen besseren Einblick in die Verteilung deiner Daten geben.

Wenn du Boxplots in Python anpasst, kannst du die Darstellung auch an die Anforderungen deines Projekts anpassen.

Hier sind einige Möglichkeiten, wie du Boxplots mit der Matplotlib-Bibliothek anpassen kannst:

1. Hinzufügen von Etiketten und Titeln

Überschriften und Beschriftungen machen deine Diagramme für die Betrachter/innen verständlicher, damit sie den Datenvergleich schnell erkennen können. Das Hinzufügen ist ganz einfach und kann mit den Funktionen von Matplotlib erfolgen.

So fügst du Beschriftungen zu einem Matplotlib-Boxplot hinzu:

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()

Dadurch wird ein beschrifteter Boxplot wie in der folgenden Abbildung erstellt:

Angepasste Boxplot-Titel und -Beschriftungen in Matplotlib

2. Anpassen der Boxplot-Farben

Die Anpassung der Farben und Stile von Boxplots in Python ermöglicht eine optisch ansprechende und klare Darstellung der Daten. Sie helfen dir auch dabei, bestimmte Datenpunkte oder Vergleiche gegenüber deinen Stakeholdern effektiv hervorzuheben.

Du kannst die Farben der Boxen, Whisker, Caps, Mediane und Fliers mit den Parametern boxprops, Whiskerprops, capprops, medianprops und flierprops ändern.

Hier ist das Code-Beispiel:

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()

Dadurch werden unterschiedliche Farben für deine Boxplot-Komponenten basierend auf den von dir festgelegten Parametern erstellt:

Boxplot-Farben in Matplotlib anpassen

3. Mittelwert und Standardabweichung addieren

Füge dem Boxplot den Mittelwert und die Standardabweichung hinzu, um weitere statistische Informationen zu erhalten.

# 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 ist die resultierende Grafik:

Boxplot mit Mittelwert und SD in Matplotlib

4. Horizontale Boxplots

Horizontale Boxplots können die Datenvisualisierung besser lesbar machen, vor allem wenn es um lange Kategorienamen geht.

Das kannst du ganz einfach mit dem Parameter vert der Funktion boxplot in Matplotlib machen.

# 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()

Das ist das Ergebnis der Ausführung des obigen Codes:

Horizontaler Boxplot in Matplotlib

Unser Kurs Einführung in die Datenvisualisierung mit Matplotlib soll dir helfen, besser zu verstehen, wie du Datenvisualisierungen über Boxplots hinaus erstellen kannst.

Wenn du diese Informationen in Zukunft nachschlagen möchtest, findest du hier eine Zusammenfassung für das Plotten in Matplotlib:

Matplotlib Cheatsheet

Seaborn, das auf Matplotlib aufbaut, vereinfacht die Erstellung von ästhetisch ansprechenden Boxplots mit minimalem Code. Seine einfache Syntax macht es für alle Qualifikationsstufen zugänglich, und seine Integration mit anderen Bibliotheken ermöglicht maximale Flexibilität bei der Datenanalyse.

Hier ist eine Schritt-für-Schritt-Anleitung zum Erstellen eines einfachen Boxplots mit Seaborn. Beginne wie zuvor mit dem Importieren der notwendigen Bibliotheken.

# Imports necessary libraries
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

Als Nächstes wollen wir einen einfachen Datensatz vorbereiten:

# Generates a random dataset
np.random.seed(10)
data = np.random.normal(0, 1, 100)

Zum Schluss erstellen wir den eigentlichen Boxplot und drucken ihn aus:

# Creates a basic boxplot
sns.boxplot(data=data)
# Adds title to the boxplot
plt.title('Basic Boxplot') 
plt.show()

Dies ist das Ergebnis:

Basic seaborn boxplot

Du kannst dein Seaborn-Diagramm mit den Parametern hue, orient und palette anpassen. 

Sehen wir uns an, wie du deinem Boxplot auf der Grundlage von Kategorien Farben hinzufügen kannst, indem du den Parameter hue verwendest:

# 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 ist der geänderte Boxplot:

Farbiger Boxplot für Meeressäuger

Um deinen Boxplot in einer bestimmten Richtung auszurichten, verwende den Parameter orient. Für die vertikale Ausrichtung sollte der Parameter orient auf "v" gesetzt werden. Für die horizontale Ausrichtung sollte sie auf "h" gesetzt werden.

Hier ist der Code für einen horizontalen Boxplot:

# Plots horizontal boxplot
sns.boxplot(data=df, orient='h', palette='Set2')
plt.title('Colored Boxplot')
plt.show()

Der obige Code erstellt einen Boxplot wie diesen:

Horizontaler Seegeborenen-Boxplot

Um dem Boxplot einzelne Datenpunkte hinzuzufügen, kannst du einen Schwarmplot mit der Funktion swarmplot verwenden:

# 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()

Der obige Code erstellt einen Boxplot wie diesen:

Boxplot mit Schwarmplot

Ein Schwarmdiagramm wie dieses kann helfen, mehr Einblick in die Verteilung deiner Daten zu bekommen. Er ergänzt die statistischen Informationen eines Boxplots, um deinen Betrachtern ein umfassendes Bild deiner Daten zu vermitteln.

In unserem Kurs Einführung in die Datenvisualisierung mit Seaborn erfährst du, wie du Datenvisualisierungen in Seaborn implementieren kannst.

Wenn du diese Informationen in Zukunft nachschlagen möchtest, findest du hier einen Spickzettel für das Plotten in Seaborn:

Spickzettel für Seaborn

Python Boxplot-Ergebnisse interpretieren

Die Interpretation eines Boxplots hängt vom Kontext und der spezifischen Forschungsfrage ab, die er beantwortet.

Einige allgemeine Richtlinien können jedoch dabei helfen, die durch den Boxplot dargestellte Datenverteilung zu verstehen. Dazu gehören:

  • Die Medianlinie zeigt den mittleren Wert des Datensatzes an.
  • Der Interquartilsbereich (IQR) oder die mittleren 50% der Werte liegen zwischen dem ersten Quartil (Q1) und dem dritten Quartil (Q3).
  • Die Whiskers erstrecken sich jeweils 1,5 Mal über und unter Q3 und Q1.
  • Ausreißer werden einzeln mit einem Punkt oder einem Sternchen gezeichnet.
  • Die Länge der Box und der Whisker geben Aufschluss darüber, wie weit die Daten gestreut sind.
  • Schiefe Verteilungen weisen eine Asymmetrie in der Größe und Position der Box im Verhältnis zur Medianlinie auf.
  • Ausreißer, die um mehr als das 1,5-fache über oder unter Q3 und Q1 liegen, können auf extreme Werte oder mögliche Fehler bei der Datenmessung hinweisen.

Häufige Fehler bei der Erstellung von Python-Boxplots sind zu vermeiden

Auch wenn es mit Python ganz einfach ist, optisch ansprechende Boxplots auf Basis deiner Datensätze zu erstellen, sollten einige Aspekte beachtet werden, um irreführende oder falsche Visualisierungen zu vermeiden.

1. Keine Behandlung fehlender Werte

Bei der Erstellung eines Python-Boxplots wird oft übersehen, wie wichtig die Vorverarbeitung der Daten ist, was zu irreführenden Ergebnissen führt. 

Alle Datenvisualisierungen müssen in irgendeiner Form bereinigt werden, bevor sie gezeichnet werden. Boxplots sind keine Ausnahme und können fehlende Werte als Ausreißer anzeigen, was die Ergebnisse verzerren kann.

2. Unsachgemäße Skalierung der Daten

Außerdem versäumen es die Nutzer manchmal, die Daten angemessen zu skalieren, was zu einem verzerrten Boxplot führen kann, der die wahren Eigenschaften des Datensatzes falsch darstellt. Die Skalierung stellt sicher, dass die Merkmale gleichmäßig zur Analyse beitragen.

3. Keine Behandlung von Ausreißern

Schließlich kann es vorkommen, dass Analysten es versäumen, Ausreißer gründlich zu untersuchen und zu behandeln, bevor sie sie aufzeichnen. Ein unsachgemäßer Umgang mit Ausreißern kann die Interpretation verfälschen. Deshalb ist es wichtig, echte Ausreißer von Fehlern oder Anomalien bei der Datenerhebung zu unterscheiden.

Verwende diesen Spickzettel, wenn du Datenvisualisierungen erstellst:

Spickzettel zur Datenvisualisierung

Schlussgedanken

Boxplots sind ein wertvolles Werkzeug, um Datenverteilungen zu visualisieren und sie über Kategorien hinweg zu vergleichen. 

In Python kannst du Matplotlib, Seaborn oder Plotly verwenden, um schnell und ohne viel Programmieraufwand Boxplots zu erstellen. DataCamp bietet umfassende Kurse für jedes dieser Tools an:

Wie wäre es, mehr über Datenvisualisierung mit Python zu erfahren? Dann würde dir der Lernpfad Datenvisualisierung mit Python sehr helfen!

FAQs

Können Boxplots auch für nicht-numerische Daten verwendet werden?

Nein, Boxplots sind ausdrücklich für numerische Daten gedacht. Sie stellen die Verteilung eines Datensatzes anhand einer fünfstelligen Zusammenfassung (Minimum, erstes Quartil, Median, drittes Quartil und Maximum) dar, die numerische Werte erfordert. Für nicht-numerische Daten sind andere Visualisierungstechniken wie Balken- oder Tortendiagramme besser geeignet.

Wie kann ich das Vorhandensein von mehreren Ausreißern in einem Boxplot interpretieren?

Mehrere Ausreißer in einem Boxplot weisen auf mehrere Datenpunkte hin, die sich deutlich vom Rest des Datensatzes unterscheiden. Dies könnte auf Schwankungen oder ungewöhnliche Beobachtungen hindeuten, die einer weiteren Untersuchung bedürfen. Ausreißer können auf Fehler bei der Datenerhebung, natürliche Schwankungen oder signifikante Unterschiede in Untergruppen innerhalb der Daten zurückzuführen sein.

Kann ich Boxplots verwenden, um die Datenverteilung über mehrere Kategorien hinweg zu vergleichen?

Ja, Boxplots eignen sich hervorragend, um Verteilungen über verschiedene Kategorien hinweg zu vergleichen. Du kannst Boxplots für verschiedene Kategorien nebeneinander stellen, um ihre Mediane, Interquartilsbereiche und das Vorhandensein von Ausreißern zu vergleichen. Dies kann helfen, Unterschiede und Gemeinsamkeiten in der Verteilung der verschiedenen Gruppen zu erkennen.

Welche Fallstricke gibt es bei der Interpretation von Boxplots zu vermeiden?

Vermeide bei der Interpretation von Boxplots die folgenden Fallstricke:

  • Ignoriere den Kontext von Ausreißern: Ausreißer müssen nicht immer auf Fehler hindeuten, sondern können sinnvolle Abweichungen sein.
  • Fehlinterpretation des Medians als Mittelwert: Der Median ist der mittlere Wert, nicht der Durchschnitt, und wird weniger von Ausreißern beeinflusst.
  • Die Bedeutung der Stichprobengröße wird übersehen: Kleine Stichprobengrößen können zu irreführenden Boxplots führen. Stelle sicher, dass deine Datengröße für eine zuverlässige Auswertung ausreicht.

Wie kann ich in Python interaktive Boxplots erstellen?

Um interaktive Boxplots in Python zu erstellen, kannst du Bibliotheken wie Plotly oder Bokeh verwenden. Mit diesen Bibliotheken kannst du deine Visualisierungen interaktiv gestalten, z. B. mit Tooltips, Zoomen und Schwenken.


Austin Chia's photo
Author
Austin Chia
LinkedIn

Ich bin Austin, ein Blogger und Tech-Autor mit jahrelanger Erfahrung als Datenwissenschaftler und Datenanalyst im Gesundheitswesen. Ich habe meine Reise in die Welt der Technik mit einem Hintergrund in Biologie begonnen und helfe jetzt anderen mit meinem Technik-Blog, den gleichen Weg einzuschlagen. Meine Leidenschaft für Technologie hat dazu geführt, dass ich für Dutzende von SaaS-Unternehmen schreibe, um andere zu inspirieren und meine Erfahrungen zu teilen.

Themen

Lerne in diesen Kursen mehr über Python und Datenvisualisierung!

Zertifizierung verfügbar

Kurs

Einführung in die Datenvisualisierung mit Matplotlib

4 hr
177.3K
Lerne, wie du mit Matplotlib Datenvisualisierungen erstellst, anpasst und teilst.
Siehe DetailsRight Arrow
Kurs starten
Mehr anzeigenRight Arrow