Pandas & NumPy Academy · Lektion

Balkendiagramme und Histogramme

Visualisieren Sie kategoriale Häufigkeiten mit ax.bar() und Datenverteilungen mit ax.hist() und passen Sie die Anzahl der Klassen sowie die Kantenfarbe an.

Lektion 3 von 413 Schritte

Balkendiagramme und Histogramme ist eine kostenlose Pandas & NumPy Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Pandas & NumPy Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Pandas & NumPy Academy-Kurs umfasst insgesamt 4 Lektionen.

Balkendiagramme und Histogramme

Balkendiagramme stellen kategoriale Daten dar: eine Säule pro Kategorie, deren Höhe proportional zu einem Wert ist. Sie beantworten die Frage: „Wie viel entfällt auf jede Kategorie?“ Histogramme zeigen die Verteilung einer kontinuierlichen numerischen Variable: Die Daten werden in Intervalle eingeteilt, und die Balkenhöhe zeigt die Anzahl oder Häufigkeit in jedem Intervall. Sie beantworten die Frage: „Wie sind diese Werte verteilt?“ Beide verwenden jeweils ax.bar() und ax.hist().

ax.bar() für vertikale Balkendiagramme

ax.bar(x, height) zeichnet ein vertikales Balkendiagramm, bei dem x eine Folge von Positionen (oder Beschriftungen) der Kategorien und height den Balkenwert bezeichnet. Wichtige Parameter sind: width (Standardwert 0.8, steuert die Balkenbreite relativ zum Abstand), color, edgecolor und align ('center' oder 'edge'). Die Methode gibt eine Liste von Rectangle-Artist-Objekten zurück.

import matplotlib.pyplot as plt
import numpy as np

categories = ['East', 'West', 'North', 'South']
values = [420, 380, 310, 290]

fig, ax = plt.subplots(figsize=(7, 4))
ax.bar(categories, values, color='steelblue', edgecolor='white', width=0.6)
ax.set_title('Regional Revenue')
ax.set_xlabel('Region')
ax.set_ylabel('Revenue (USD)')
# plt.show()
plt.close()

Balkendarstellung anpassen

Einige Anpassungen machen Balkendiagramme deutlich lesbarer: Verwenden Sie eine einheitliche Akzentfarbe für alle Balken (oder ein Farbarray zur Unterscheidung einzelner Balken), fügen Sie mit ax.bar_label() Wertbeschriftungen über jedem Balken hinzu, steuern Sie die Balkenbreite, um ausreichend Abstand zu lassen, und setzen Sie ax.set_ylim(0, max * 1.15), damit oberhalb des höchsten Balkens Platz für Beschriftungen bleibt.

fig, ax = plt.subplots(figsize=(7, 4))
bars = ax.bar(categories, values, color='steelblue', edgecolor='white', width=0.6)

# Add value labels above bars
ax.bar_label(bars, fmt='%d', padding=3, fontsize=10)

# Give space above bars for labels
ax.set_ylim(0, max(values) * 1.15)
ax.set_title('Regional Revenue')
plt.tight_layout()
plt.close()

Horizontale Balkendiagramme mit ax.barh()

Verwenden Sie ax.barh(y, width) für horizontale Balkendiagramme. Horizontale Balken eignen sich besonders, wenn die Kategorien lange Beschriftungen haben (diese lassen sich von links nach rechts natürlich lesen) oder wenn es viele Kategorien gibt (sie lassen sich kompakter untereinander anordnen). Alle Anpassungsparameter gelten weiterhin: height steuert die Balkendicke, und ax.barh_label() (oder ax.bar_label()) fügt Textbeschriftungen hinzu.

import pandas as pd
df = pd.DataFrame({'region': categories, 'revenue': values})
df_sorted = df.sort_values('revenue')

fig, ax = plt.subplots(figsize=(7, 4))
ax.barh(df_sorted['region'], df_sorted['revenue'],
        color='steelblue', edgecolor='white', height=0.5)
ax.set_title('Revenue by Region (Sorted)')
ax.set_xlabel('Revenue (USD)')
plt.tight_layout()
plt.close()

Gruppierte Balkendiagramme

Um mehrere Gruppen nebeneinander zu vergleichen, erstellen Sie ein gruppiertes Balkendiagramm, indem Sie die Balkenpositionen manuell versetzen. Berechnen Sie die Mittelpunktspositionen für jede Gruppe und subtrahieren oder addieren Sie anschließend für jede Untergruppe einen festen Versatz. Die gesamte Balkenbreite plus der Abstand zwischen den Gruppen muss 1.0 ergeben, damit sich die Balken nicht überlappen. Mit ax.set_xticks() zentrieren Sie die Tick-Beschriftungen zwischen den gruppierten Balken.

products = ['A', 'B', 'C']
q1 = [80, 120, 95]
q2 = [90, 110, 105]

x = np.arange(len(products))
width = 0.35

fig, ax = plt.subplots(figsize=(7, 4))
ax.bar(x - width/2, q1, width, label='Q1', color='steelblue')
ax.bar(x + width/2, q2, width, label='Q2', color='coral')

ax.set_xticks(x)
ax.set_xticklabels(products)
ax.legend()
ax.set_title('Q1 vs Q2 Sales by Product')
plt.close()

Gestapelte Balkendiagramme

Gestapelte Balken zeigen die Zusammensetzung einer Gesamtsumme aus mehreren Untergruppen. Die Balken der zweiten Gruppe beginnen dort, wo die Balken der ersten Gruppe enden; dazu wird der Parameter bottom verwendet. Das bottom jeder weiteren Ebene ist die kumulative Summe aller vorherigen Ebenen. Gestapelte Balken eignen sich, um gleichzeitig sowohl die Gesamtsumme als auch den Beitrag jeder Komponente darzustellen.

q1_arr = np.array(q1)
q2_arr = np.array(q2)

fig, ax = plt.subplots(figsize=(7, 4))
ax.bar(products, q1_arr, label='Q1', color='steelblue')
ax.bar(products, q2_arr, bottom=q1_arr, label='Q2', color='coral')

ax.legend()
ax.set_title('Stacked Q1 + Q2 Sales by Product')
ax.set_ylabel('Total Sales')
plt.close()

ax.hist() für Histogramme

ax.hist(data, bins) erstellt ein Histogramm. Der Parameter bins steuert, in wie viele gleichmäßig verteilte Intervalle die Daten aufgeteilt werden (Standardwert 10). Sie können auch eine Liste von Intervallgrenzen für ungleich große Intervalle übergeben. Wichtige Parameter sind: density=True normiert das Histogramm zu einer Wahrscheinlichkeitsdichte, edgecolor fügt Ränder zwischen den Balken hinzu, und color sowie alpha steuern die Darstellung.

np.random.seed(42)
data = np.random.randn(500)  # 500 samples from standard normal

fig, ax = plt.subplots(figsize=(7, 4))
ax.hist(data, bins=30, color='steelblue', edgecolor='white', alpha=0.7)
ax.set_title('Distribution of Values')
ax.set_xlabel('Value')
ax.set_ylabel('Count')
plt.close()

Die Anzahl der Intervalle auswählen

Die Anzahl der Klassen hat großen Einfluss darauf, wie ein Histogramm aussieht. Zu wenige Klassen verbergen Strukturen, zu viele erzeugen verrauschte Spitzen. Häufige Faustregeln sind die Sturges-Regel (≈ log2(n) + 1), die Scott-Regel oder die Freedman-Diaconis-Regel. Matplotlib unterstützt diese als Zeichenfolgen: bins='auto', bins='scott', bins='fd'. Für eine explorative Analyse sollten Sie einige Werte manuell ausprobieren; für Präsentationen wählen Sie die Klassenanzahl, die die Form am besten vermittelt.

fig, axes = plt.subplots(1, 3, figsize=(12, 4))

for ax, b in zip(axes, [5, 30, 'auto']):
    ax.hist(data, bins=b, edgecolor='white', color='steelblue', alpha=0.7)
    ax.set_title(f'bins={b}')
    ax.set_xlabel('Value')

plt.tight_layout()
plt.close()

Überlappende Histogramme zum Vergleich

Um zwei Verteilungen auf denselben Achsen zu vergleichen, rufen Sie ax.hist() zweimal mit unterschiedlichen Daten und Farben auf. Verwenden Sie für beide alpha=0.5, damit die Überlappung sichtbar bleibt. Fügen Sie Beschriftungen hinzu und rufen Sie ax.legend() auf. Mit density=True werden beide Histogramme auf dieselbe Skala normalisiert, wenn sich die Stichprobengrößen unterscheiden. Dadurch lassen sich die Formen direkt vergleichen.

group_a = np.random.randn(300)
group_b = np.random.randn(300) + 1.5  # shifted right

fig, ax = plt.subplots(figsize=(7, 4))
ax.hist(group_a, bins=25, alpha=0.5, color='steelblue', label='Group A', density=True)
ax.hist(group_b, bins=25, alpha=0.5, color='coral', label='Group B', density=True)
ax.legend()
ax.set_title('Distribution Comparison')
plt.close()

Pandas-Serien und DataFrames darstellen

Sowohl .plot.bar() als auch .plot.hist() sind als DataFrame-/Series-Methoden verfügbar und erzeugen automatisch Matplotlib-Figuren. Sie akzeptieren einen ax-Parameter, um auf einer vorhandenen Axes zu zeichnen. So erstellen Sie am schnellsten Balkendiagramme aus gruppierten Pandas-Daten: Berechnen Sie die groupby-Aggregation, rufen Sie für das Ergebnis .plot.bar() auf und passen Sie anschließend die zurückgegebene Axes an.

import pandas as pd
import numpy as np

df_sales = pd.DataFrame({
    'region': ['East', 'West', 'North', 'South'],
    'revenue': [420, 380, 310, 290]
}).set_index('region')

fig, ax = plt.subplots(figsize=(7, 4))
df_sales['revenue'].plot.bar(ax=ax, color='steelblue', rot=0)
ax.set_title('Revenue by Region')
plt.tight_layout()
plt.close()

Balkendiagramm oder Histogramm auswählen

Die Wahl zwischen einem Balkendiagramm und einem Histogramm hängt vom Datentyp ab. Verwenden Sie ein Balkendiagramm, wenn die x-Achse einzelne, ungeordnete Kategorien darstellt (Produktnamen, Regionen, Benutzersegmente) und die Balken aggregierte Werte für jede Kategorie zeigen. Verwenden Sie ein Histogramm, wenn die x-Achse eine kontinuierliche numerische Variable darstellt und Sie zeigen möchten, wie sich die Werte über einen Bereich verteilen. Eine Verwechslung ist ein häufiger Visualisierungsfehler, der Leser hinsichtlich des Datentyps in die Irre führt.

# Bar chart: categorical x-axis (product names)
products = ['Widget', 'Gadget', 'Doohickey']
revenue = [500, 300, 200]
fig, ax = plt.subplots(figsize=(5, 3))
ax.bar(products, revenue, color='steelblue')
ax.set_title('Revenue per Product (Bar Chart)')
plt.close()

# Histogram: continuous x-axis (order sizes)
order_sizes = np.random.exponential(scale=50, size=300)
fig, ax = plt.subplots(figsize=(5, 3))
ax.hist(order_sizes, bins=20, color='coral', edgecolor='white')
ax.set_title('Distribution of Order Sizes (Histogram)')
plt.close()

Kurzer Test

Testen Sie Ihr Verständnis von Balkendiagrammen und Histogrammen aus dieser Lektion.

Lektionsrückblick

In dieser Lektion haben Sie gelernt: ax.bar() erstellt vertikale Balkendiagramme und ax.barh() horizontale Balkendiagramme; bottom ermöglicht gestapelte Balken; ax.hist() erstellt Histogramme, deren Klassenanzahl über bins gesteuert wird; und density=True normalisiert Histogramme für einen fairen Vergleich. Als Nächstes fügen wir Achsenbeschriftungen und Titel hinzu und speichern Abbildungen in publikationsgeeigneter Qualität.

Kostenlos starten

Lerne Python mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
30
Lektionen
120

Häufig gestellte Fragen

Ist die Lektion „Balkendiagramme und Histogramme“ kostenlos?

Ja — der vollständige Text von „Balkendiagramme und Histogramme“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Pandas & NumPy Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Pandas & NumPy Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Balkendiagramme und Histogramme“?

Visualisieren Sie kategoriale Häufigkeiten mit ax.bar() und Datenverteilungen mit ax.hist() und passen Sie die Anzahl der Klassen sowie die Kantenfarbe an. Du übst Pandas & NumPy Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Pandas & NumPy Academy zu starten?

Keine Vorkenntnisse erforderlich. Pandas & NumPy Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Balkendiagramme und Histogramme“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Pandas & NumPy Academy-Lektion Code schreiben und ausführen?

Ja. Jede Pandas & NumPy Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Architektur von Figure und Axes
  2. Linien- und Streudiagramme
  3. Balkendiagramme und Histogramme
  4. Beschriftungen, Titel und Speichern von Abbildungen
← Zurück zu Pandas & NumPy Academy