Weiter zum Inhalt

Python für Data Science (Fortgeschritten): Matplotlib

Lerne, echte Daten mit den Funktionen von matplotlib zu visualisieren.
Aktualisiert 18. Sept. 2026  · 11 Min. lesen

Mit KI erkunden

ChatGPTClaudePerplexity

Kursauszug: Python für Data Science (Fortgeschritten) – Matplotlib

Unten findest du einen Auszug – Video und Transkript – aus dem ersten Kapitel des Intermediate Python for Data Science-Kurses. Hier geht es zum kompletten Kapitel mit interaktiven Übungen.

Grundlegende Plots mit matplotlib

Hi, ich bin Filip und Data Scientist bei DataCamp. In diesem Python-Kurs für Fortgeschrittene baust du deine Python-Kompetenzen für Data Science weiter aus. Du lernst, Daten zu visualisieren und sie in neuen Datenstrukturen zu speichern. Unterwegs meisterst du Kontrollstrukturen, die du brauchst, um den Ablauf deiner Skripte und Algorithmen zu steuern. Am Ende dieses Kapitels schließen wir mit einer Fallstudie ab, in der du alles Gelernte kombinierst, um ein spannendes Problem zu lösen.

Dieses erste Kapitel dreht sich um Datenvisualisierung – ein zentraler Teil jeder Datenanalyse. Du nutzt sie kontinuierlich, um Datensätze zu erkunden. Je besser du deine Daten verstehst, desto gezielter kannst du Erkenntnisse gewinnen. Und sobald du diese gefunden hast, brauchst du Visualisierungen, um deine Ergebnisse überzeugend zu teilen. Schau dir zum Beispiel diesen wunderschönen Plot an.

Er stammt vom schwedischen Professor Hans Rosling. Seine Vorträge zur globalen Entwicklung wurden millionenfach angesehen. Faszinierend sind sie vor allem, weil er mit ausdrucksstarken Visualisierungen den Daten erlaubt, ihre eigene Geschichte zu erzählen. Hier siehst du ein Blasendiagramm, in dem jede Blase ein Land repräsentiert. Je größer die Blase, desto größer die Bevölkerungszahl – die beiden größten Blasen stehen also für China und Indien.

Es gibt zwei Achsen. Die horizontale Achse zeigt das BIP pro Kopf in US-Dollar, die vertikale Achse die Lebenserwartung. Man erkennt klar: In Ländern mit höherem BIP pro Kopf leben Menschen im Durchschnitt länger. Trotzdem unterscheiden sich Länder auf demselben Einkommensniveau stark in der Lebenserwartung.

Warum erzähle ich dir das? Weil du bis zum Ende dieses Kapitels in der Lage sein wirst, genau so einen Plot selbst zu erstellen.

Es gibt viele Visualisierungspakete in Python, doch die Mutter von allen ist matplotlib. Du brauchst das Unterpaket pyplot. Üblicherweise importierst du es als plt – so:

Für unser erstes Beispiel wollen wir die Entwicklung der Weltbevölkerung untersuchen. Ich habe hier eine Liste mit Jahren, year, und eine Liste mit den zugehörigen Bevölkerungszahlen in Milliarden, pop. Im Jahr 1970 lebten zum Beispiel 3,7 Milliarden Menschen auf der Erde.

Um diese Daten als Liniendiagramm zu plotten, rufen wir plt.plot() auf und übergeben die beiden Listen als Argumente. Das erste Argument entspricht der horizontalen Achse, das zweite der vertikalen. Vielleicht erwartest du, dass sofort ein Plot erscheint – aber Python ist hier bequem: Erst die Funktion show() zeigt die Grafik wirklich an. Das ist sinnvoll, weil du vorher noch Details wie Titel und Beschriftungen ergänzen möchtest. Merke dir: plot() beschreibt, was und wie geplottet wird. show() zeigt den Plot an.

Im Plot siehst du die Jahre auf der x-Achse und die Bevölkerungszahlen auf der y-Achse. Es gibt vier Datenpunkte, die Python mit einer Linie verbindet. 1950 lag die Weltbevölkerung bei rund 2,5 Milliarden, 2010 bei etwa 7 Milliarden. Die Bevölkerung hat sich in 60 Jahren also fast verdreifacht – ziemlich beunruhigend. Was, wenn das Wachstum so weitergeht? Wird die Welt überbevölkert? Das findest du in den Übungen heraus.

Als Nächstes lernst du einen anderen Plot-Typ kennen: das Streudiagramm. Dafür kannst du auf dem bisherigen Code aufbauen, änderst aber die Funktion in scatter. Das resultierende Streudiagramm zeigt die einzelnen Datenpunkte – Python verbindet sie nicht mit Linien. Für viele Anwendungsfälle ist das Streudiagramm die bessere Wahl als der Linienplot. Merke dir also scatter gut. Man könnte auch sagen: Das ist eine „ehrlichere“ Darstellung, weil du sofort siehst, dass der Plot nur auf vier Datenpunkten beruht.

Jetzt, wo die matplotlib-Basics sitzen, bist du dran: Bau ein paar starke Visualisierungen!


# define a simple function
import matplotlib.pyplot as plt
year = [1950, 1970, 1990, 2010]
pop = [2.519, 3.692, 5.263, 6.972]
plt.plot(year, pop)
plt.show()

import matplotlib.pyplot as plt
year = [1950, 1970, 1990, 2010]
pop = [2.519, 3.692, 5.263, 6.972]
plt.scatter(year, pop)
plt.show()

Das Histogramm

In diesem Video stelle ich das Histogramm vor. Ein Histogramm ist eine extrem hilfreiche Visualisierung, um Daten zu erkunden. Es zeigt dir, wie sich die Werte einer Variablen verteilen. Stell dir dazu 12 Werte zwischen 0 und 6 vor. Ich habe sie hier auf einer Zahlengeraden markiert. Um ein Histogramm zu bauen, teilst du die Achse in gleich große Abschnitte, sogenannte Bins. Nehmen wir 3 Bins mit einer Breite von jeweils 2. Danach zählst du, wie viele Datenpunkte in jedem Bin liegen. Im ersten Bin sind es 4, im zweiten 6, im dritten 2. Abschließend zeichnest du für jeden Bin einen Balken, dessen Höhe der Anzahl der Werte in diesem Bin entspricht. Das Ergebnis ist ein Histogramm, das uns einen übersichtlichen Eindruck von der Verteilung der 12 Werte gibt. Die meisten liegen in der Mitte, es gibt aber mehr Werte unter 2 als über 4.

Natürlich kann auch matplotlib Histogramme erstellen. Wie zuvor importierst du zunächst das Paket pyplot aus matplotlib. Dann nutzt du die Funktion hist(). Werfen wir einen Blick in die Doku. Es gibt viele Argumente, aber die ersten beiden sind die wichtigsten. x ist die Liste der Werte, für die du ein Histogramm erstellen willst. Mit dem zweiten Argument, bins, gibst du an, in wie viele Bins die Daten aufgeteilt werden sollen. Auf Basis dieser Zahl bestimmt hist() automatisch passende Bin-Grenzen und zählt, wie viele Werte in jeden Bin fallen. Wenn du bins nicht angibst, ist der Standardwert 10.

Um das eben gezeigte Histogramm zu erzeugen, legen wir zuerst eine Liste mit den 12 Werten an. Dann rufst du hist() auf und übergibst die Liste als x. Außerdem setze ich bins auf 3, damit die Werte in drei Bins aufgeteilt werden. Mit show() erscheint ein sauberes Histogramm. Histogramme sind großartig, um das große Ganze zu sehen. Schau dir zum Beispiel diese sogenannte Bevölkerungspyramide an: Die Altersverteilung in der Europäischen Union – getrennt nach Männern und Frauen. Beachte, dass die Histogramme hier um 90 Grad gedreht sind, die Bins verlaufen horizontal. Am größten sind die Bins bei den 40- bis 44-Jährigen, dort gibt es jeweils rund 20 Millionen Männer und 20 Millionen Frauen. Das ist die Generation der Babyboomer.

Die Zahlen stammen aus dem Jahr 2010. Was glaubst du, wie es 2050 aussieht? Werfen wir einen Blick darauf: Die Verteilung wird flacher, und die Babyboomer sind gealtert. Mit einem Blick erkennst du, wie sich die Demografie über die Zeit verschiebt. Das ist die wahre Stärke von Histogrammen. Jetzt bist du dran: Ab zu den Übungen und experimentiere selbst mit Histogrammen!


values = [0,0.6,1.4,1.6,2.2,2.5,2.6,3.2,3.5,3.9,4.2,6]
import matplotlib.pyplot as plt
plt.hist(values,bins=3)
plt.show()

Individuelle Anpassungen

Einen Plot zu erstellen ist das eine. Den richtigen Plot zu erstellen, der die Botschaft glasklar transportiert, ist die echte Herausforderung. Für jede Visualisierung hast du viele Optionen. Zuerst wählst du den geeigneten Plot-Typ. Und dann kannst du unzählige Details anpassen: Farben, Formen, Beschriftungen, Achsen und vieles mehr. Die Wahl hängt erstens von den Daten ab und zweitens von der Geschichte, die du damit erzählen willst. Weil es so viele Möglichkeiten gibt, lernst du Anpassungen am besten anhand von Beispielen.

Starten wir mit diesem Skript für einen einfachen Linienplot. Er ähnelt dem im ersten Video, aber diesmal enthalten die Listen year und pop mehr Daten – inklusive Prognosen bis 2100 von den Vereinten Nationen. Führst du das Skript aus, bekommst du bereits einen ordentlichen Plot: Er zeigt, dass die Bevölkerungsexplosion bis Ende des Jahrhunderts abflachen wird.

Einige Dinge lassen sich dennoch verbessern. Erstens sollte klarer werden, welche Daten dargestellt werden – besonders für Menschen, die die Grafik zum ersten Mal sehen. Zweitens soll der Plot die Aufmerksamkeit stärker auf die Bevölkerungsexplosion lenken. Das Erste, was du immer tun solltest: Achsen beschriften. Füge dazu die Funktionen xlabel() und ylabel() hinzu. Als Eingaben übergibst du die Strings, die neben den Achsen stehen sollen. Achte darauf, diese Funktionen vor show() aufzurufen, sonst erscheinen die Anpassungen nicht. Beim erneuten Ausführen sind die Achsen beschriftet. Außerdem fügen wir mit title() einen Titel hinzu. Als Argument übergeben wir den Titel "World Population Projections". Und da ist er.

Mit xlabel, ylabel und title gibst du den Leserinnen und Lesern mehr Kontext: Jetzt ist klar, worum es im Plot geht. Um das Bevölkerungswachstum in Relation zu setzen, soll die y-Achse bei null starten. Das erreichst du mit yticks(). Das erste Argument ist eine Liste, in diesem Beispiel die Zahlen von 0 bis 10 in Zweierschritten. Nach dem Ausführen verschiebt sich die Kurve nach oben. So wird deutlich, dass es schon 1950 rund 2,5 Milliarden Menschen gab.

Damit klar ist, dass es um Milliarden geht, fügen wir ein zweites Argument zu yticks() hinzu: eine Liste mit den Beschriftungen für die Ticks. Diese Liste muss genauso lang sein wie die erste. Der Tick 0 bekommt die Bezeichnung 0, der Tick 2 die Bezeichnung 2B, der Tick 4 4B usw. (B steht hier für Billions, also Milliarden.) Nach dem Ausführen ändern sich die Labels entsprechend – perfekt.

Zum Schluss ergänzen wir weitere historische Daten, um die Bevölkerungsexplosion der letzten 60 Jahre noch deutlicher zu machen. Auf Wikipedia habe ich die Weltbevölkerung für 1800, 1850 und 1900 gefunden. Ich schreibe sie als Listen und erweitere die Listen pop und year mit dem Pluszeichen. Beim erneuten Ausführen erscheinen drei zusätzliche Datenpunkte – das Gesamtbild wird runder. So wird aus einem durchschnittlichen Linienplot eine Visualisierung mit einer klaren Geschichte. Jetzt bist du dran: Wechsle zu den Übungen, passe die Weltentwicklungs-Grafik Schritt für Schritt an und werde zum nächsten Hans Rosling!


import matplotlib.pyplot as plt
import pandas as pd
year = list(range(1950, 2101))
pop = [2.53,2.57,2.62,2.67,2.71,2.76,2.81,2.86,2.92,2.97,3.03,3.08,3.14,3.2,3.26,3.33,3.4,3.47,3.54,3.62,3.69,3.77,3.84,3.92,4.,4.07,4.15,4.22,4.3,4.37,4.45,4.53,4.61,4.69,4.78,4.86,4.95,5.05,5.14,5.23,5.32,5.41,5.49,5.58,5.66,5.74,5.82,5.9,5.98,6.05,6.13,6.2,6.28,6.36,6.44,6.51,6.59,6.67,6.75,6.83,6.92,7.,7.08,7.16,7.24,7.32,7.4,7.48,7.56,7.64,7.72,7.79,7.87,7.94,8.01,8.08,8.15,8.22,8.29,8.36,8.42,8.49,8.56,8.62,8.68,8.74,8.8,8.86,8.92,8.98,9.04,9.09,9.15,9.2,9.26,9.31,9.36,9.41,9.46,9.5,9.55,9.6,9.64,9.68,9.73,9.77,9.81,9.85,9.88,9.92,9.96,9.99,10.03,10.06,10.09,10.13,10.16,10.19,10.22,10.25,10.28,10.31,10.33,10.36,10.38,10.41,10.43,10.46,10.48,10.5,10.52,10.55,10.57,10.59,10.61,10.63,10.65,10.66,10.68,10.7,10.72,10.73,10.75,10.77,10.78,10.79,10.81,10.82,10.83,10.84,10.85]
pop = [1,1.262,1.650] + pop
year = [1800,1850,1900] + year
plt.plot(year, pop)
plt.xlabel('Year')
plt.ylabel('Population')
plt.title('World Population Projections')
plt.yticks([0,2,4,6,8,10],['0','2B','4B','6B','8B','10B'])
plt.show()
Themen
Datenvisualisierung