Zum Hauptinhalt springen

Seaborn-Histogramm erstellen: Die ausführliche Anleitung

Finde heraus, wie du mit der Seaborn-Bibliothek in Python ein Histogramm erstellst.
· 9 Min. lesen

Entdecke KI

Datenvisualisierung ist entscheidend, um komplexe Datensätze zu verstehen.

Im Python-Ökosystem sticht Seaborn als leistungsstarke Bibliothek hervor, um ansprechende und aussagekräftige statistische Grafiken wie Histogramme und Linienplots zu erstellen.

Sie baut auf den Möglichkeiten von Matplotlib auf, verbessert dessen Oberfläche und bietet mehr Optionen für die Visualisierung, insbesondere für statistische Analysen. Durch die nahtlose Integration mit Pandas DataFrames ist Seaborn bei Datenwissenschaftlerinnen und -wissenschaftlern sowie Analystinnen und Analysten besonders beliebt.

In dieser ausführlichen Anleitung konzentrieren wir uns auf einen der am häufigsten verwendeten Plots in Seaborn—das Histogramm.

Überblick über die sns.histplot-Funktion

Die Funktion sns.histplot in Seaborn dient zum Zeichnen von Histogrammen, die unverzichtbar sind, um die Verteilung kontinuierlicher Daten zu untersuchen. Sie ist vielseitig und umfangreich anpassbar, sodass sich leichter aussagekräftige Erkenntnisse aus den Daten gewinnen lassen.

Diese Funktion ist eine von vielen in der Seaborn-Bibliothek. Wirf für einen schnellen Überblick einen Blick auf dieses Cheat Sheet.

image4.png

Seaborn-Cheat Sheet für Data Science - Quelle

Deine Umgebung einrichten

Benötigte Bibliotheken importieren

Bevor wir in die Visualisierung einsteigen, richten wir unsere Umgebung ein. Dazu importieren wir die benötigten Bibliotheken, wobei Seaborn im Fokus steht. Der Einfachheit halber wird Seaborn in der Regel als sns importiert.

Neben Seaborn gehören oft auch NumPy für numerische Operationen, pandas für die Datenverarbeitung und Matplotlib für zusätzliche Anpassungsmöglichkeiten dazu.

import seaborn as sns
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

Das sind zentrale Bibliotheken, die die nötigen Werkzeuge zum Erstellen und Anpassen von Visualisierungen in Python bereitstellen. Sie gehören zum Standardwerkzeug von Datenanalystinnen und -analysten sowie Data Scientists.

Wenn du gerade erst mit Python startest, probiere unseren Kurs Introduction to Python aus. Für vertiefendes Lernen zu pandas, NumPy und Matplotlib empfehlen wir die Kurse Data Manipulation with pandas, Introduction to NumPy und Introduction to Data Visualization with Matplotlib.

Daten vorbereiten

Wir verwenden den Boston-Housing-Prices-Datensatz, der aus der Scikit-Learn-Bibliothek geladen werden kann. Dieser Datensatz enthält Immobilienwerte in verschiedenen Gegenden Bostons sowie mehrere Attribute wie Kriminalitätsrate, durchschnittliche Zimmerzahl usw.

from sklearn.datasets import load_boston
boston = load_boston()
df = pd.DataFrame(boston.data, columns=boston.feature_names)
df['MEDV'] = boston.target

Geeignete Daten sind entscheidend für nützliche Histogramme. In unserem Fall verwenden wir eine kontinuierliche Variable: den Medianwert selbstgenutzter Häuser (MEDV) in Boston.

Da Histogramme in der Regel die Verteilung einer einzelnen Variable zeigen, wählen wir eine Spalte aus unserem DataFrame.

Neu bei Scikit-Learn? Schau dir unser Tutorial zu Machine Learning mit Python an. Wenn du tiefer einsteigen willst, deckt unser Kurs Supervised Learning with scikit-learn die Grundlagen ab.

Dein erstes Seaborn-Histogramm erstellen

Bevor es losgeht, hier einige grundlegende Voraussetzungen für dein Seaborn-Histogramm:

  1. Mindestens eine Spalte mit kontinuierlichen Daten
  2. Grundverständnis des Datensatzes
  3. Vertrautheit mit Pandas-DataFrame-Operationen
  4. Basiswissen zur Seaborn-Syntax und -Funktionen

Wir schauen uns zunächst gängige Syntax und Parameter der Funktion `sns.histplot` an.

Syntax und Parameter

Die grundlegende Syntax zur Erstellung eines Histogramms mit `sns.histplot` ist unkompliziert.

Wichtige Parameter sind:

  • data: Der Datensatz, häufig ein Pandas DataFrame.
  • x: Die Variable, für die das Histogramm erstellt wird.
  • color: Legt die Balkenfarbe fest.
  • alpha: Transparenz der Balken.
  • bins: Anzahl der Klassen (Balkengruppen).
  • binwidth: Breite jeder Klasse.
  • kde: Boolean zum Hinzufügen einer Kernel-Dichtekurve.
  • hue: Zur Unterscheidung von Datenteilmengen anhand einer weiteren Variable.

Die Funktion akzeptiert viele Parameter und Argumente, wir konzentrieren uns jedoch auf diejenigen, die wir für unseren Datensatz benötigen.

Ein einfaches Histogramm erstellen

Erstellen wir ein einfaches Histogramm, um die Verteilung der medianen Immobilienpreise (MEDV) zu visualisieren.

plt.figure(figsize=(10, 6))
sns.histplot(data=df, x='MEDV')
plt.title('Distribution of Median Housing Prices in Boston')
plt.xlabel('Median Value of Owner-Occupied Homes (in $1000)')
plt.ylabel('Frequency')
plt.grid(True)
plt.show()

Dieser Befehl zeigt das Histogramm für die Spalte MEDV an.

So sieht der daraus erzeugte Plot aus:

image7.png

Das Histogramm zeigt die Verteilung der medianen Immobilienpreise (MEDV) im Boston-Datensatz. Es veranschaulicht, wie häufig bestimmte Medianwerte selbstgenutzter Häuser vorkommen.

Dein Seaborn-Histogramm verfeinern

Klassengröße und -anzahl anpassen

Die Anzahl der Klassen (Bins) zu variieren, kann das Verständnis der Verteilung verbessern. Mehr Klassen zeigen mehr Details, weniger Klassen vereinfachen die Darstellung.

Um die Anzahl der Klassen zu erhöhen, passt du den Parameter bins an.

Ein Beispiel:

plt.figure(figsize=(10, 6))
sns.histplot(data=df, x='MEDV', bins=30)
plt.title('Distribution of Median Housing Prices in Boston')
plt.xlabel('Median Value of Owner-Occupied Homes (in $1000)')
plt.ylabel('Frequency')
plt.grid(True)
plt.show()

image2.png

Wie du im Seaborn-Histogramm oben siehst, hat sich die Anzahl der Balken auf die von uns gesetzten 30 erhöht. So kannst du tiefer ins Detail gehen und mehr Granularität erzielen.

Aussehen anpassen

Anpassungen wie Balkenfarbe und Transparenz machen das Histogramm informativer und optisch ansprechender.

Im folgenden Beispiel habe ich unser ursprüngliches Histogramm mit Lila statt der Standardfarbe neu erstellt.

image1.png

Hier ist der Code, mit dem ich die obige Grafik erstellt habe.

plt.figure(figsize=(10, 6))
sns.histplot(data=df, x='MEDV', color='purple')
plt.title('Distribution of Median Housing Prices in Boston')
plt.xlabel('Median Value of Owner-Occupied Homes (in $1000)')
plt.ylabel('Frequency')
plt.grid(True)
plt.show()

Kernel-Dichteschätzung (KDE) hinzufügen

KDE liefert eine geglättete Schätzung der Verteilung und hilft dabei, Muster in den Daten zu erkennen.

Dabei entsteht eine glatte Kurve, die den allgemeinen Trend sichtbar macht.

Dazu verwenden wir den Parameter kde in dieser Funktion:

plt.figure(figsize=(10, 6))
sns.histplot(data=df, x='MEDV', kde=True)
plt.title('Distribution of Median Housing Prices in Boston')
plt.xlabel('Median Value of Owner-Occupied Homes (in $1000)')
plt.ylabel('Frequency')
plt.grid(True)
plt.show()

Dadurch erhält unser Histogramm eine schöne Kurve, wie unten gezeigt.

Die hinzugefügte Kernel-Dichtekurve (KDE) liefert eine glattere Schätzung der Verteilung.

Fortgeschrittene Histogramm-Techniken

Multivariate Histogramme

Der Parameter hue ermöglicht den Vergleich verschiedener Kategorien innerhalb eines Histogramms.

Damit lassen sich Kategorien innerhalb desselben Histogramms unterscheiden, um Verteilungen visuell zu vergleichen.

Konkret wählst du eine kategoriale Spalte aus dem DataFrame, und die Daten werden über unterschiedliche Farben abgegrenzt.

Wenn wir zum Beispiel eine Spalte namens "CHAS" haben, die angibt, ob ein Haus am Charles River liegt (1) oder nicht (0), können wir mit dem Parameter "hue" die Verteilung der medianen Immobilienpreise für Häuser am Fluss mit denen fernab des Flusses vergleichen.

image3.png

Der Code sieht wie folgt aus:

plt.figure(figsize=(10, 6))
sns.histplot(data=df, x='MEDV', hue='CHAS')
plt.title('Distribution of Median Housing Prices in Boston')
plt.xlabel('Median Value of Owner-Occupied Homes (in $1000)')
plt.ylabel('Frequency')
plt.grid(True)
plt.show()

So entsteht ein Histogramm, in dem die Verteilung von MEDV für Häuser am Charles River (CHAS=1) farblich von der Verteilung für Häuser abseits des Flusses (CHAS=0) unterschieden wird.

Best Practices für Seaborn-Histogramme

Beim Erstellen von Seaborn-Histogrammen solltest du Folgendes im Hinterkopf behalten:

1. Die richtige Anzahl an Klassen wählen

Die optimale Anzahl an Klassen ist entscheidend für ein informatives Histogramm. Mehr Klassen zeigen mehr Details, können aber auch zu Überanpassung führen und die Daten verzerren.

Zu wenige Klassen hingegen vereinfachen die Verteilung zu stark.

Eine Daumenregel ist die Scott-Regel, mit der sich die ideale Klassengröße basierend auf der Anzahl der Datenpunkte berechnen lässt.

2. Detailtiefe und Klarheit ausbalancieren

Es ist wichtig, genügend Details zu zeigen, gleichzeitig muss die Visualisierung klar und leicht interpretierbar bleiben.

Zu viele Elemente wie zusätzliche KDE-Linien oder ein Zuviel an Farben können zu überladenen Visualisierungen führen.

Finde die Balance zwischen hilfreichen Zusätzen und Einfachheit.

3. Datentyp berücksichtigen

Auch der Datentyp beeinflusst die geeigneten Histogramm-Parameter.

Kontinuierliche Variablen benötigen beispielsweise andere Klassengrößen als kategoriale Variablen.

Berücksichtige die Natur deiner Daten, damit das Histogramm die Verteilung korrekt widerspiegelt.

Seaborn ist allerdings nur eine von mehreren Bibliotheken für Datenvisualisierung in Python. Du kannst deine Histogramme alternativ auch mit Matplotlib erstellen.

Fazit

Seaborn ist eine leistungsfähige Bibliothek für Visualisierungen in Python, und mit der Funktion `histplot` erstellst du Histogramme im Handumdrehen. Durch das Anpassen der Parameter bestimmst du Aussehen und Detailgrad deiner Grafik genau so, wie du es brauchst.

Denk an die oben genannten Tipps für Seaborn-Histogramme: Achte auf den Datentyp, wähle passende Klassengrößen und halte die Balance zwischen Details und Übersichtlichkeit.

Du willst mehr über Seaborn und seine starken Visualisierungsfunktionen lernen? Unser Kurs Introduction to Data Visualization with Seaborn ist ein idealer Einstieg.

Austin Chia

Autor

Austin Chia

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

Ähnlich

Tutorial

Ein Leitfaden zu Python-Hashmaps

Tutorial

Loop-Schleifen in Python-Tutorial