Erhalten Sie Zugang zu diesem und mehr als 300000 Büchern ab EUR 5,99 monatlich.
- Python-Bibliotheken für numerische Anwendungen: NumPy, Matplotlib und Pandas - Effiziente Verarbeitung großer Datenmengen – auch relevant für maschinelles Lernen - Daten visualisieren und analysieren mit Matplotlib und Pandas - Praxisbeispiele aus Wissenschaft, Ingenieurwesen, Finanzen und Bildverarbeitung - Umfassend erweiterte 3. Auflage – mehr Umfang, neue Praxisanwendungen und farbig gestaltete DataFrames - Ihr exklusiver Vorteil: E-Book inklusive beim Kauf des gedruckten Buches Dieses Buch vermittelt die Python-Grundlagen zur Bearbeitung numerischer Probleme in den Bereichen Data Science und Maschinelles Lernen. Im ersten Teil steht NumPy als Basis der numerischen Programmierung im Mittelpunkt: Arrays als zentraler Datentyp, numerische Operationen, Broadcasting und Ufuncs werden ebenso behandelt wie Statistik, Wahrscheinlichkeitsrechnung, boolesche Maskierung und Dateiverarbeitung. Der zweite Teil widmet sich der Datenvisualisierung mit Matplotlib – von den grundlegenden Konzepten bis hin zu Linien-, Balken-, Histogramm- und Konturplots. Im dritten Teil geht es um Pandas mit Series und DataFrames, den Import und Export von Excel-, CSV- und JSON-Dateien, den Umgang mit fehlenden Daten sowie die Möglichkeiten der Visualisierung direkt in Pandas. Der vierte Teil bietet praxisnahe Anwendungen, darunter ein Haushaltsbuch, eine Einnahmen-Überschuss-Rechnung und eine Einführung in die Bildverarbeitung. Abgerundet wird das Buch durch einen fünften Teil mit den Lösungen zu den zahlreichen Übungsaufgaben, die fast jedes der 33 Kapitel begleiten. AUS DEM INHALT // - Numerische Operationen mit Arrays, Broadcasting und Ufuncs - Statistik und Wahrscheinlichkeitsrechnung mit NumPy - Dateiverarbeitung und File-Handling - Diagramme mit Matplotlib: Linien, Balken, Histogramme, Konturplots - Arbeiten mit Series und DataFrames - Import und Export von Excel-, CSV- und JSON-Dateien - Umgang mit fehlenden Werten (NaN) und Visualisierung mit Pandas - Praxisbeispiele: Bildverarbeitung, Haushaltsbuch und Einnahmen-Überschuss-Rechnung - Übungen zu fast allen Kapiteln mit ausführlichen Lösungen
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 459
Veröffentlichungsjahr: 2025
Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:
Bernd Klein
Numerisches Python
Arbeiten mit NumPy, Matplotlib und Pandas
3., aktualisierte Auflage
Print-ISBN: 978-3-446-48549-5 E-Book-ISBN: 978-3-446-48584-6 ePub-ISBN: 978-3-446-48606-5
Die allgemein verwendeten Personenbezeichnungen gelten gleichermaßen für alle Geschlechter.
Alle in diesem Werk enthaltenen Informationen, Verfahren und Darstellungen wurden zum Zeitpunkt der Veröffentlichung nach bestem Wissen zusammengestellt. Dennoch sind Fehler nicht ganz auszuschließen. Aus diesem Grund sind die im vorliegenden Werk enthaltenen Informationen für Autor:innen, Herausgeber:innen und Verlag mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Autor:innen, Herausgeber:innen und Verlag übernehmen infolgedessen keine Verantwortung und werden keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine Weise aus der Benutzung dieser Informationen – oder Teilen davon – entsteht. Ebenso wenig übernehmen Autor:innen, Herausgeber:innen und Verlag die Gewähr dafür, dass die beschriebenen Verfahren usw. frei von Schutzrechten Dritter sind. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt also auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann benützt werden dürften.
Die endgültige Entscheidung über die Eignung der Informationen für die vorgesehene Verwendung in einer bestimmten Anwendung liegt in der alleinigen Verantwortung des Nutzers.
Bibliografische Information der Deutschen Nationalbibliothek: Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet unter http://dnb.d-nb.de abrufbar.
Dieses Werk ist urheberrechtlich geschützt. Alle Rechte, auch die der Übersetzung, des Nachdruckes und der Vervielfältigung des Werkes, oder Teilen daraus, vorbehalten. Kein Teil des Werkes darf ohne schriftliche Einwilligung des Verlages in irgendeiner Form (Fotokopie, Mikrofilm oder einem anderen Verfahren), auch nicht für Zwecke der Unterrichtgestaltung – mit Ausnahme der in den §§ 53, 54 UrhG genannten Sonderfälle –, reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden. Wir behalten uns auch eine Nutzung des Werks für Zwecke des Text und Data Mining nach § 44b UrhG ausdrücklich vor.
© 2025 Carl Hanser Verlag GmbH & Co. KG, München Vilshofener Straße 10 | 81679 München | [email protected]: Brigitte Bauer-Schiewek, Kristin Rothe Herstellung: Grazyna Lada Coverkonzept: Marc Müller-Bremer, www.rebranding.de, München Covergestaltung: Thomas West Titelmotiv: © stock.adobe.com/ARTvektorSatz: le-tex publishing services GmbH, Leipzig Druck: Elanders Waiblingen GmbH, Waiblingen
Vorwort
Danksagung
1 Einleitung
1.1 Die richtige Wahl
1.2 Aufbau des Buches
1.3 Dieses Buch und die Werkzeuge dahinter
1.4 Download der Beispiele
1.5 Über den Autor
1.6 Anregungen und Kritik
2 Numerisches Programmieren
2.1 Überblick
2.2 Zusammenhang zwischen Python, NumPy, Matplotlib, SciPy und Pandas
2.3 Python – eine Alternative zu MATLAB
3 Installation von NumPy, Matplotlib, Pandas und JupyterLab
3.1 Einleitung
3.2 Installation mit conda und Miniconda
3.3 Installation mit pip
3.4 Starten von JupyterLab
3.5 Warum JupyterLab?
Teil I NumPy
4 NumPy Einführung
4.1 Überblick
4.1.1 Was ist NumPy?
4.1.2 Ein einfaches Beispiel
4.2 Vergleich NumPy-Datenstrukturen und Listen
4.2.1 Zentrale Unterschiede
4.2.2 Speicherbedarf
4.2.3 Zeitvergleich zwischen Listen und NumPy-Arrays
5 Erzeugung und Struktur von Arrays
5.1 Dimensionen
5.1.1 Nulldimensionale Arrays in NumPy
5.1.2 Eindimensionales Array
5.1.3 Zwei- und mehrdimensionale Arrays
5.2 Gestalt eines Arrays
5.3 Indizierung und Teilbereichsoperator
5.4 Dreidimensionale Arrays
5.5 Array-Erzeugungsfunktionen
5.5.1 arange
5.5.2 linspace
5.6 Arrays mit Nullen und Einsen
5.7 Einheitsmatrix
5.7.1 Die identity-Funktion
5.7.2 Die eye-Funktion
5.8 Datentypen
5.9 Arrays kopieren
5.9.1 numpy.copy(A) und A.copy()
5.9.2 Zusammenhängend gespeicherte Arrays
5.10 Aufgaben
6 Datentyp-Objekt: dtype
6.1 dtype
6.2 Strukturierte Arrays
6.3 Ein- und Ausgabe von strukturierten Arrays
6.4 Unicode-Strings in Arrays
6.5 Umbenennen von Spaltennamen
6.6 Spaltenwerte austauschen
6.7 Komplexeres Beispiel
6.8 Aufgaben
7 Arrays kombinieren und umformen
7.1 Reduktion und Umformung von Arrays
7.1.1 flatten
7.1.2 ravel
7.1.3 Unterschiede zwischen ravel und flatten
7.1.4 reshape
7.2 Hinzufügen von Dimensionen
7.3 Konkatenation und Stapelung von Arrays
7.3.1 concatenate
7.3.2 stack
7.3.3 dstack
7.3.4 vstack
7.3.5 hstack
7.4 dsplit
7.5 Arrays wiederholen mit tile
7.6 Aufgaben
8 Numerische Operationen auf NumPy-Arrays
8.1 Operationen mit Skalaren
8.2 Operationen zwischen und auf Arrays
8.3 Matrizenmultiplikation und Skalarprodukt
8.3.1 Definition der dot-Funktion
8.3.2 Beispiele zur dot-Funktion
8.3.3 Das dot-Produkt im dreidimensionalen Fall
8.4 Vergleichsoperatoren
8.5 Logische Operatoren
8.6 Broadcasting
8.6.1 Zeilenweises Broadcasting
8.6.2 Spaltenweises Broadcasting
8.6.3 Broadcasting von zwei eindimensionalen Arrays
8.7 Distanzmatrix
8.8 ufuncs
8.8.1 Anwendung von ufuncs
8.8.2 Parameter für Rückgabewerte bei ufuncs
8.8.3 accumulate
8.8.4 reduce
8.8.5 outer
8.8.6 at
8.9 Aufgaben
9 Statistik und Wahrscheinlichkeiten
9.1 Einführung
9.2 Auf dem random-Modul aufbauende Funktionen
9.2.1 Echte Zufallszahlen
9.2.2 Erzeugen einer Liste von Zufallszahlen
9.2.3 Zufällige Integer-Zahlen
9.2.4 Stichproben oder Auswahlen
9.2.5 Zufallsintervalle
9.2.6 Seed oder Startwert
9.2.7 Gewichtete Zufallsauswahl
9.2.8 Stichproben mit Python
9.2.9 Kartesische Auswahl
9.2.10 Kartesisches Produkt
9.2.11 Kartesische Auswahl: cartesian_choice
9.2.12 Gauss’sche Normalverteilung
9.2.13 Übung mit Binärsender
9.3 Das random-Untermodul von NumPy
9.3.1 Integers und Floats zufällig erzeugen
9.3.2 numpy.random.choice
9.3.3 numpy.random.random_sample
9.4 Synthetische Verkaufszahlen
9.5 Aufgaben
10 Boolesche Maskierung und Indizierung
10.1 Fancy-Indizierung
10.2 Indizierung mit einem Integer-Array
10.3 nonzero und where
10.4 Beispielanwendungen mit np.where
10.5 Aufgaben
11 Lesen und Schreiben von Daten-Dateien
11.1 Textdateien speichern mit savetxt
11.2 Textdateien laden mit loadtxt
11.2.1 loadtxt ohne Parameter
11.2.2 Spezielle Trenner
11.2.3 Selektives Einlesen von Spalten
11.2.4 Datenkonvertierung beim Einlesen
11.3 tofile
11.4 fromfile
11.5 Empfohlene Methoden
11.6 Eine weitere Möglichkeit: genfromtxt
Teil II Matplotlib
12 Einführung
12.1 Ein erstes Beispiel
12.2 Format-Parameter von plot
12.3 Mehrere Datenreihen mit Achsentiteln
13 Objektorientiert plotten
13.1 Erzeugung einer Figure und Axes
13.2 Achsenbeschriftungen und Titel
13.3 Die Plot-Methode
13.4 Wertebereiche der Achsen
13.5 Plotten mehrerer Funktionen
13.6 Streudiagramme
13.7 Flächen einfärben
13.8 Aufgaben
14 Mehrfache Plots und Doppelachsen
14.1 Subplots mit subplot
14.2 Flexible Layouts mit GridSpec
14.3 Doppelachsen
14.4 Aufgaben
15 Achsen- und Skalenteilung
15.1 Achsen und Spines
15.2 Achsenbeschriftungen ändern
15.3 Justierung der Tick-Beschriftungen
16 Legenden und Annotationen
16.1 Legende hinzufügen
16.2 Annotations / Anmerkungen
16.3 Aufgaben
17 Konturplots
17.1 Erstellen eines Maschengitters
17.2 Funktionen auf Meshgrids
17.3 contour ohne meshgrid
17.4 Linienstil und Farben anpassen
17.5 Gefüllte Konturen
17.6 Individuelle Farben
17.7 Schwellen
17.8 Andere Grids
17.8.1 Meshgrid genauer
17.8.2 mgrid
17.8.3 ogrid
17.9 imshow
17.10 Aufgaben
18 Histogramme und Diagramme
18.1 Histogramme
18.2 Säulendiagramm
18.3 Balkendiagramme
18.4 Gruppierte Balkendiagramme
18.5 xkcd-Modus
18.6 Tortendiagramme
18.7 Stapeldiagramme
18.8 Aufgaben
Teil III Pandas
19 Pandas:Series
19.1 Grundlagen der Series-Datenstruktur
19.2 Zugriff und Indizierung
19.3 Wertmanipulation mit apply
19.4 Series aus Dictionaries
19.5 NaN – Fehlende Daten..
19.5.1 Fehlende Werte prüfen
19.5.2 Zusammenhang zwischen NaN und None
19.5.3 Fehlende Daten filtern
19.5.4 Fehlende Daten auffüllen
19.5.5 Vergleich verschiedener Interpolationsmethoden
19.6 Aufgaben
20 DataFrame
20.1 Ein erstes Beispiel
20.2 Zusammenhang zu Series
20.3 Manipulation der Spaltennamen
20.4 DataFrames aus Dictionaries
20.5 Zugriff auf Spalten
20.6 Selektion von Zeilen
20.6.1 loc
20.6.2 query
20.7 Modifikation von DataFrames
20.7.1 Spalten einfügen
20.7.2 Spalten austauschen
20.7.3 Zeilen austauschen
20.7.4 Einzelne Werte mittels at und iat ändern
20.8 Index ändern..
20.8.1 Umsortierung von Spalten und Index
20.8.2 Spalten umbenennen
20.8.3 Spalte als Index verwenden
20.9 Summen und kumulative Summen
20.9.1 Leere Spalten und nachträgliches Befüllen
20.10 Sortierung
20.11 Aufgaben
21 Styling
21.1 Einleitung
21.2 Daten und Präsentation trennen
21.3 Die .style-Eigenschaft
21.3.1 Grundlegende Formatierung mit .format
21.4 Maximalwerten in Zeilen und Spalten
21.5 Anwenden eines Farbverlaufs
21.5.1 Balkendiagramme innerhalb von Zellen anwenden
21.6 Aufgaben
22 Dateiverarbeitung
22.1 DSV- / CSV-Dateien
22.1.1 CSV- und DSV-Dateien lesen
22.1.2 Schreiben von CSV-Dateien
22.1.3 Einfaches Beispiel
22.1.4 Umfangreicheres Beispiel
22.1.5 Beispiel mit einer Nicht-Standard-csv-Datei
22.2 Lesen und Schreiben von JSON-Dateien
22.3 Lesen und Schreiben von Excel-Dateien
22.4 Aufgaben
23 Pandas: groupby
23.1 Groupby mit Series
23.2 Arbeitsweise von groupby
23.3 GroupBy mit DataFrames
23.3.1 GroupBy mit Funktion
23.3.2 Beispiel mit Datei
23.4 Aufgaben
24 Pivot-Tabellen
24.1 Pivot-Funktion in Pandas
24.2 Pivot-Aufruf ohne Werte für ‚values‘
24.3 Die Funktion pivot_table in Pandas
24.4 Pivoting auf den Titanic-Daten
24.5 Aufgaben
25 Umgang mit NaN
25.1 ’nan’ in Python
25.2 NaN in Pandas
25.2.1 Beispiel mit NaNs
25.3 dropna() verwenden
25.4 Aufgaben
26 Binning
26.1 Einführung
26.2 Binning mit Pandas
26.2.1 Binning mit cut
26.2.2 Erzeugen eines IntervalIndex-Objektes
26.2.3 Mehr zu pd.cut
26.2.4 Speicheroptimierung mit Categorical
26.2.5 Binnings mit Labels
26.3 Aufgaben
27 Mehrstufige Indizierung
27.1 Einführung
27.2 Mehrstufig indizierte Series-Objekte
27.3 Mehrstufige Indizierung durch Listen-Multiplikation
27.4 Weitere Möglichkeiten zur Index-Erzeugung
27.5 Zugriffsmöglichkeiten
27.6 Dreistufige Indizes
27.7 Zusammenhang zu DataFrames
27.7.1 Manueller Weg mit pd.concat
27.7.2 unstack und stack
27.8 Vertauschen mehrstufiger Indizes
27.9 Aufgaben
28 Datenvisualisierung mit Pandas
28.1 Einführung
28.2 Liniendiagramm in Pandas
28.2.1 Series
28.2.2 DataFrames
28.2.3 Sekundärachsen (Twin Axes)
28.2.4 Mehrere Y-Achsen
28.2.5 Spalten mit Zeichenketten (Strings) in Floats wandeln
28.3 Balkendiagramme in Pandas
28.3.1 Ein einfaches Beispiel
28.3.2 Balkengrafik für die Programmiersprachennutzung
28.3.3 Farbgebung einer Balkengrafik
28.4 Tortendiagramme in Pandas
28.4.1 Ein einfaches Beispiel
28.5 Flächenplot mit area
28.6 Aufgaben
29 Zeit und Datum
29.1 Einführung
29.2 Python-Standardmodule für Zeitdaten
29.2.1 Die date-Klasse
29.2.2 Die time-Klasse
29.3 Die datetime-Klasse
29.4 Unterschied zwischen Zeiten
29.4.1 Wandlung von datetime-Objekten in Strings
29.4.2 Wandlung mit strftime
29.5 Ausgabe in Landessprache
29.6 datetime-Objekte aus Strings erstellen
30 Zeitreihen
30.1 Einführung
30.2 Zeitreihen und Python
30.3 Datumsbereiche erstellen
30.4 Datumsbereiche mit Uhrzeitangaben
30.5 Aufgaben
Teil IV Anwendungen
31 Techniken der Bildverarbeitung
31.1 Einführung
31.2 Bilder laden und anzeigen
31.3 Histogramme der Farbwerte
31.4 Bildausschnitte
31.5 Geometrische Transformationen
31.6 Filterung
31.7 Aufhellen und Abtönen von Bildern
31.8 Kachelung
31.9 Wasserzeichen mit np.where
31.10 Ein weiteres Beispiel für Wasserzeichen mit np.where
31.11 Aufgaben
32 Finanzverwaltung mit Pandas
32.1 Haushaltsbuch
32.1.1 Haushaltsbuch mit CSV-Datei
32.1.2 Excel-Haushaltsbuch mit Kontenplan
32.1.3 Auswertung des Excel-Haushaltsbuches
32.2 Einnahmeüberschussrechnung
32.2.1 Journaldatei
32.2.2 Analyse und Visualisierung der Daten
32.2.3 Steuersummen
Teil V Lösungen zu den Aufgaben
33 Lösungen zu den Aufgaben
33.1 Lösungen zu Kapitel 5 (Erzeugung und Struktur von Arrays)
33.2 Lösungen zu Kapitel 6 (Datentyp-Objekt: dtype)
33.3 Lösungen zu Kapitel 7 (Arrays kombinieren und umformen)
33.4 Lösungen zu Kapitel 8 (Numerische Operationen auf NumPy-Arrays)
33.5 Lösungen zu Kapitel 9 (Statistik und Wahrscheinlichkeiten)
33.6 Lösungen zu Kapitel 10 (Boolesche Maskierung und Indizierung)
33.7 Lösungen zu Kapitel 13 (Objektorientiert plotten)
33.8 Lösungen zu Kapitel 14 (Mehrfache Plots und Doppelachsen)
33.9 Lösungen zu Kapitel 16 (Legenden und Annotationen)
33.10 Lösungen zu Kapitel 17 (Konturplots)
33.11 Lösungen zu Kapitel 18 (Histogramme und Diagramme)
33.12 Lösungen zu Kapitel 19 (Pandas:Series)
33.13 Lösungen zu Kapitel 20 (DataFrame)
33.14 Lösungen zu Kapitel 21 (Styling)
33.15 Lösungen zu Kapitel 22 (Dateiverarbeitung)
33.16 Lösungen zu Kapitel 23 (Pandas: groupby)
33.17 Lösungen zu Kapitel 24 (Pivot-Tabellen)
33.18 Lösungen zu Kapitel 25 (Umgang mit NaN)
33.19 Lösungen zu Kapitel 26 (Binning)
33.20 Lösungen zu Kapitel 27 (Mehrstufige Indizierung)
33.21 Lösungen zu Kapitel 28 (Datenvisualisierung mit Pandas)
33.22 Lösungen zu Kapitel 30 (Zeitreihen)
33.23 Lösungen zu Kapitel 31 (Techniken der Bildverarbeitung)
Eine der treibenden Kräfte in der heutigen Softwareentwicklung lässt sich wohl am besten mit den Begriffen „Big Data“ und „Maschinelles Lernen“ beschreiben. Immer mehr Forschungseinrichtungen und Unternehmen engagieren sich in diesen Bereichen. Für sie – und auch für Einzelpersonen, die in diesen Feldern aktiv werden wollen – stellt sich eine zentrale Frage: Welche Programmiersprache eignet sich am besten für datengetriebene Anwendungen?
In nahezu allen Umfragen der letzten Jahre wird Python als eine der besten, wenn nicht als die beliebteste Programmiersprache genannt. Python hat sich in beeindruckendem Tempo zu einem unverzichtbaren Werkzeug in der Datenanalyse, im wissenschaftlichen Rechnen und in der künstlichen Intelligenz entwickelt.
Dabei war Python ursprünglich nicht für numerische Aufgaben konzipiert. Der heutige Erfolg basiert maßgeblich auf leistungsfähigen Erweiterungen wie NumPy, SciPy, Matplotlib und Pandas. Diese Module haben Python zu einer ernstzunehmenden Alternative zu spezialisierten Softwarepaketen gemacht – sowohl in der Forschung als auch in der Industrie.
Das vorliegende Buch bietet eine fundierte Einführung in die Arbeit mit NumPy, Matplotlib und Pandas. Es richtet sich an Leserinnen und Leser, die bereits grundlegende Python-Kenntnisse mitbringen – zum Beispiel aus dem Buch „Einführung in Python 3: Für Ein- und Umsteiger“ von Bernd Klein. Damit bildet es eine ideale Ergänzung für alle, die den nächsten Schritt in Richtung datenorientierter Programmierung gehen möchten.
Brigitte Bauer-Schiewek, Lektorin im September 2025
Zum Schreiben eines Buches braucht es nicht nur Erfahrung und Fachkompetenz, sondern vor allem eines: Zeit. Zeit jenseits des Gewohnten, frei von Ablenkung, mit Raum fürs Nachdenken, Ausprobieren und das kontinuierliche und geduldige Ringen um gute Lösungen . . . Zeit, die zwangsläufig von der Familie mitgetragen wird. Mein besonderer Dank gilt daher meiner Frau Karola, die mich während der gesamten Entstehung dieses Buches – von der ersten bis zur dritten Auflage – mit großem Verständnis und tatkräftiger Unterstützung begleitet hat.
Mein aufrichtiger Dank gilt auch dem Hanser Verlag, der die Veröffentlichung dieses Buches – nun bereits in der dritten Auflage – ermöglicht hat. Ganz besonders danke ich Frau Brigitte Bauer-Schiewek (Programmplanung Computerbuch) für die kontinuierlich hervorragende Zusammenarbeit sowie Kristin Rothe (Lektoratsassistenz Computerbuch) für ihre Unterstützung im Produktionsprozess. Ihr gilt darüber hinaus mein besonderer Dank für ihre große Geduld bei der aufwendigen Umstellung auf Barrierefreiheit sowie auf ein neues Fachbuchdesign. In diesem Zusammenhang betraten wir gemeinsam Neuland – ein wichtiger und zukunftsweisender Schritt.
Mein Dank gilt auch dem Textsatzsystem 1), das es ermöglicht, Bücher in ansprechendem Layout und technisch präziser Form zu schreiben. Aber auch beim „tollsten“ Satzsystem gibt es gelegentlich knifflige Situationen, in denen mir Herr Stephan Korell und Frau Irene Weilhart mit ihrer technischen Unterstützung kompetent zur Seite standen. Ihnen beiden gilt mein besonderer Dank.
Was jedoch noch faszinierender macht, ist die Möglichkeit, mit PythonTeX2) die Stärken von und Python zu verbinden: Rechenoperationen, Datenauswertungen oder Diagramme können automatisiert mit Python erzeugt und direkt sowie automatisch in das gesetzte Dokument eingebettet werden. Seit der zweiten Auflage dieses Buches nutze ich PythonTeX, um genau diese Möglichkeiten auszuschöpfen. Mein Dank gilt Herrn Tobias Habermann, der mich in der zweiten Auflage tatkräftig bei der Umstellung auf PythonTeX unterstützt hat.
Ein herzliches Dankeschön geht auch an die zahlreichen Teilnehmerinnen und Teilnehmer meiner Python-Kurse. Durch ihre Rückfragen, ihr Feedback und ihre Anregungen konnte ich meine didaktischen und fachlichen Konzepte stetig weiterentwickeln und an den Bedürfnissen der Lernenden ausrichten. Ebenso danke ich den vielen Nutzerinnen und Nutzern meiner Online-Tutorials unter www.python-kurs.eu und www.python-course.eu – insbesondere jenen, die sich mit konstruktiven Hinweisen und Fragen direkt an mich gewandt haben.
Bernd Klein, Singen im September 2025
1wurde von Leslie Lamport entwickelt und basiert auf dem von Donald E. Knuth geschaffenen System Beiden gilt mein großer Respekt für ihre herausragenden Beiträge zum wissenschaftlichen Publizieren.
2pythontex ist ein LaTeX-Paket, mit dem sich Python-Code direkt im Dokument ausführen und dessen Ausgabe automatisch einfügen lässt – z. B. für Berechnungen, Tabellen oder Diagramme.
Sich für die passende Programmiersprache im Berufsalltag zu entscheiden, ist von großer Bedeutung. Diese Wahl hängt von vielen Faktoren ab – und nicht selten hat man gar keine echte Wahl: Häufig ist durch das Unternehmen, das Team oder das jeweilige Projekt bereits eine Sprache vorgegeben. Immer häufiger hat man jedoch das Glück, mit Python arbeiten zu dürfen.
Bild 1.1Top 10 der Programmiersprachen
Betrachtet man aktuelle Umfragen zu den beliebtesten Programmiersprachen, so findet sich Python fast immer auf den vorderen Plätzen – oft sogar ganz oben. Auch im TIOBE-Index1) liegt Python inzwischen deutlich vor allen anderen Sprachen. In der ersten Auflage dieses Buches im Jahr 2018 belegte Python noch Platz 3 im TIOBE-Ranking. Dennoch wurde Python schon damals in die TIOBE-Hall of Fame aufgenommen – als die Sprache mit dem größten Popularitätszuwachs des Jahres. Seit Oktober 2021 steht Python unangefochten auf Platz 1 im TIOBE-Index.
Natürlich ist es schön zu wissen, dass die eigene Sprache der Wahl auch bei vielen anderen beliebt ist – und womöglich sogar in der eigenen Branche führend eingesetzt wird. Aber eine der wichtigsten Fragen lautet: Lassen sich mit Python eigene Projekte einfacher und besser als mit anderen Programmiersprachen lösen? Unter „einfacher und besser“ verbergen sich natürlich Begriffe wie „Entwicklungszeit“, „Laufzeit“, „Wartbarkeit“ und so weiter.
Programmiersprachen sind wie Schuhe: Es gibt nicht den einen für alle Zwecke. Kein Schuh passt zugleich zu feierlichen Anlässen, ins Büro, zum Sport und beim Wandern. Python hingegen ist eine Sprache, die sich in den meisten Bereichen flexibel einsetzen lässt – einer der Gründe für ihren großen Erfolg. Aber vor allen Dingen verdankt Python seinen Siegeszug den leistungsfähigen Modulen NumPy, SciPy, Matplotlib und Pandas. Mit deren Hilfe lassen sich numerische Probleme dank der klaren und leicht verständlichen Syntax besonders einfach lösen. NumPy stellt darüber hinaus Datenstrukturen bereit, die um den Faktor 10 bis 100 schneller sind als Implementierungen in reinem Python oder vielen anderen Programmiersprachen. Da die Module größtenteils in C geschrieben sind, erreichen sie nahezu die Geschwindigkeit nativer C-Programme.
1.2Aufbau des BuchesIn diesem Buch geht es um Python und seine hervorragenden Möglichkeiten zum Einsatz bei numerischen Problemen – also um jene Module, die für Themen wie „Big Data“ und „Maschinelles Lernen“ mittlerweile unverzichtbar geworden sind. Der Fokus liegt auf der Anwendung der Bibliotheken NumPy, Matplotlib und Pandas.
Das Buch setzt grundlegende Kenntnisse in Python voraus, also an Lesende, die bereits erste Erfahrungen mit der Sprache gesammelt haben – etwa durch ein Einführungsbuch wie „Einführung in Python 3“2).
Dieses Buch bietet eine praxisorientierte Einführung in die numerische Programmierung mit Python und ist in mehrere logisch aufeinander aufbauende Teile gegliedert:
Teil I: NumPy Beginnt mit den Grundlagen der numerischen Programmierung und zeigt, wie man mit NumPy effizient mit Arrays arbeitet. Themen wie Array-Erzeugung, Indexierung, Datentypen, mathematische Operationen, Broadcasting und statistische Auswertungen werden systematisch behandelt.
Teil II: Matplotlib Vermittelt die Grundlagen der Datenvisualisierung mit Matplotlib. Von einfachen Plots bis hin zu komplexen Diagrammen mit mehreren Achsen oder Konturplots wird die Bandbreite der Darstellungsmöglichkeiten aufgezeigt.
Teil III: Pandas Führt in die Arbeit mit tabellarischen Daten ein. Die Datenstrukturen Series und DataFrame, der Umgang mit fehlenden Werten, Gruppierungen, Pivot-Tabellen sowie Zeit- und Datumsfunktionen stehen im Fokus. Ebenso wird gezeigt, wie Daten aus verschiedenen Quellen wie CSV-, Excel- oder JSON-Dateien gelesen und gespeichert werden können.
Teil IV: Anwendungen Zeigt konkrete Anwendungsfälle mit pandas – aus der Bildverarbeitung, der Finanzanalyse und der Analyse der Energiegewinnung in Deutschland.
Teil V: Lösungen Enthält die Lösungen zu den im Buch gestellten Übungsaufgaben zur Selbstkontrolle.
Ergänzt wird das Buch durch ein einführendes Kapitel zur Installation und Einrichtung der benötigten Bibliotheken.
1.3Dieses Buch und die Werkzeuge dahinterDieses Buch wurde vollständig mit und PythonTeX erstellt. Damit verbinden sich die typografischen Stärken von – wie präzise Formatierung, konsistentes Layout, automatische Inhaltsverzeichnisse, Querverweise und Literaturverwaltung – mit den dynamischen Möglichkeiten von Python. Durch PythonTeX kann Python-Code direkt in das Dokument eingebettet und bei der Compilierung ausgeführt werden. Ergebnisse wie Rechenausgaben, Tabellen, Diagramme oder interaktive Inhalte erscheinen automatisch an der richtigen Stelle im Buch.
Dank Syntaxhervorhebung, reproduzierbarer Codeausführung und direkter Integration in den Text entsteht ein didaktisch besonders transparenter und konsistenter Workflow – ideal für ein Buch über Datenanalyse und Visualisierung mit Python.
1.4Download der BeispieleAlle im Buch verwendeten Beispiele befinden sich zum Download unter
http://www.python-kurs.eu/buecher/numerisches_python/
Dort findet sich auch ein Korrekturverzeichnis.
1.5Über den AutorBernd Klein schloss 1988 sein Studium der Informatik mit dem Diplom an der Universität des Saarlandes ab. Bis 2007 war er als Softwareentwickler in der Industrie tätig. Seitdem ist er international als Dozent und Trainer für Softwareentwicklung und Programmiersprachen aktiv – mit Schwerpunkt auf der Programmiersprache Python seit 2009.
Er arbeitet mit Universitäten, Forschungseinrichtungen und Unternehmen im In- und Ausland zusammen. Seit 2008 betreibt er die Online-Lernplattformen https://pythonkurs.eu und https://python-course.eu, die jährlich von Millionen Lernenden weltweit genutzt werden.
Veröffentlichte Bücher:
Einführung in Python 3. 4. Auflage, Hanser Verlag, München 2023. ISBN 978-3-446-46379-0
Python-Grundlagen | eLearning. 1. Auflage, Hanser Verlag, 2023. ISBN 978-3-446-47992-0
Numerisches Python. 2. Auflage, Hanser Verlag, 2022. ISBN 978-3-446-47170-2
Funktionale Programmierung mit Python. 1. Auflage, Hanser Verlag, 2025. ISBN 978-3-446-48191-6
1.6Anregungen und KritikBei Hinweisen auf Ungenauigkeiten oder Fehler im Buch kann gerne eine E-Mail direkt an den Autor geschickt werden: [email protected].
Dies gilt natürlich auch für Anregungen, Anmerkungen oder Wünsche zum Buch.
Fehler und Anmerkungen werden wir in kommenden Auflagen berücksichtigen.
Ich wünsche allen beim Lesen ebenso viel Freude, wie ich sie beim Schreiben hatte. Viel Spaß beim Ausprobieren, Programmieren und Entdecken!
Bernd Klein, September 2025
1 Der TIOBE-Index des niederländischen Unternehmens TIOBE Software BV ist ein seit 2001 monatlich publiziertes Ranking zur Popularität von Programmiersprachen. Der Rang ergibt sich aus der Häufigkeit von Suchanfragen mit ihrem Namen in Suchmaschinen wie Google, Bing oder Yahoo!. Der Index misst keine Codezeilen oder technische Qualität, sondern lediglich die Verbreitung der Sprache im Web.
2 Bernd Klein, Einführung in Python 3: Für Ein- und Umsteiger, ISBN: 978-3-446-46379-0, 4. Auflage, 06/2021, 600 Seiten, fester Einband, komplett in Farbe.
In diesem Kapitel wird beschrieben, wie die für die folgenden Kapitel benötigten Bibliotheken NumPy, Matplotlib, Pandas sowie JupyterLab installiert werden können.
JupyterLab ist die moderne, browserbasierte Oberfläche für interaktive Python-Notebooks und wird im weiteren Verlauf dieses Buches verwendet, da sie sich besonders für das Experimentieren mit Code, Datenanalyse und Visualisierungen eignet.
Bild 3.1Speed Up!
Wir stellen zwei Methoden vor:
Installation mit pip, dem Standard-Paketmanager von Python
Installation mit conda, dem Paketmanager von Anaconda und Miniconda
Beide Methoden haben ihre Vorzüge: Während pip direkt mit jeder Python-Installation genutzt werden kann, erleichtert conda das Management von Abhängigkeiten und stellt optimierte Versionen der Pakete bereit. Je nach System und Anforderungen kann die bevorzugte Methode gewählt werden.
Wichtiger Hinweis zu Anaconda: Seit 2020 ist sie jedoch für kommerzielle Nutzung nicht mehr uneingeschränkt kostenlos.1) Unternehmen und Organisationen mit 200 oder mehr Mitarbeitenden benötigen eine kostenpflichtige Lizenz. Für Privatpersonen, Studierende, Lehrkräfte sowie kleinere Unternehmen und nichtkommerzielle akademische Einrichtungen bleibt die Nutzung hingegen weiterhin kostenlos – insbesondere zu rein privaten Lern- und Studienzwecken.2) Die zugrunde liegenden Python-Pakete in Anaconda (wie NumPy, Pandas, Matplotlib u. a.) sind Open Source und grundsätzlich kostenlos verfügbar. Die Lizenzgebühren beziehen sich nicht auf diese Software selbst, sondern auf die kommerzielle Bereitstellung, Wartung und Integration durch Anaconda Inc. sowie ggf. auf den zugehörigen Support. Wer auf Nummer sicher gehen möchte, kann alternativ auf die frei verfügbare Miniconda oder eine individuell konfigurierte Python-Umgebung mit pip zurückgreifen.
Miniconda ist eine schlankere Variante von Anaconda, die ebenfalls conda als Paketmanager enthält, jedoch keine vorinstallierten Pakete mitbringt. Dabei ist zu beachten, dass der Standard-Channel („defaults“) von Anaconda Inc. betrieben wird. Organisationen, die unter die kommerzielle Lizenzregelung fallen, sollten daher auf alternative Paketquellen wie conda-forge ausweichen, um mögliche Lizenzkosten zu vermeiden.3)
3.2Installation mit conda und MinicondaFalls die Anaconda- oder Miniconda-Distribution verwendet wird, steht der Paketmanager conda zur Verfügung. Dieser Paket- und Umgebungsmanager ermöglicht die einfache Installation und Verwaltung zahlreicher wissenschaftlicher Python-Pakete. Benutzt man Anaconda, sind die meisten der benötigten Pakete bereits installiert und müssen nicht wie im Folgenden gezeigt manuell installiert werden. Bei Miniconda erfolgt die Installation der benötigten Pakete mit:
conda install numpy matplotlib pandas jupyterlab # oder alternativ, Community-basiert und lizenzfrei: conda install -c conda-forge numpy matplotlib pandas jupyterlab
Ein Vorteil von conda ist, dass es automatisch alle Abhängigkeiten berücksichtigt und in vielen Fällen optimierte, vorcompilierte Versionen der Pakete bereitstellt – insbesondere für numerisch anspruchsvolle Anwendungen.
3.3Installation mit pipAlternativ zur Nutzung von conda ist pip das offizielle, standardisierte Werkzeug zur Paketinstallation und ist bei aktuellen Python-Versionen üblicherweise bereits vorinstalliert. Die Installation von Python-Paketen über pip ist aus lizenzrechtlicher Sicht die sicherste und unkomplizierteste Methode. pip greift auf das zentrale Python-Paketverzeichnis PyPI (Python Package Index) zu, in dem nahezu alle verbreiteten Pakete unter freien Open-Source-Lizenzen (z. B. MIT, BSD oder Apache) veröffentlicht sind. Diese Lizenzen erlauben sowohl private als auch kommerzielle Nutzung ohne gesonderte Genehmigung oder Lizenzgebühren.
Für die im Buch behandelten Beispiele aus Datenanalyse und Visualisierung können die benötigten Pakete wie folgt installiert werden:
pip install numpy matplotlib pandas jupyterlab pip install xlrd dataframe-image openpyxl
Falls pip nicht auf dem aktuellen Stand ist, kann es mit folgendem Befehl aktualisiert werden:
python -m pip install --upgrade pip
Weitere Pakete werden im Laufe des Buches benötigt. Wir weisen an den entsprechenden Stellen darauf hin. Sie können diese dann bei Bedarf problemlos mit pip nachinstallieren.
3.4Starten von JupyterLabNach der Installation kann JupyterLab gestartet werden. Der genaue Befehl hängt vom Betriebssystem ab:
Linux/macOS: Öffnen Sie ein Terminal und geben Sie folgenden Befehl ein:
jupyter lab
Windows (Eingabeaufforderung oder PowerShell): Öffnen Sie die Eingabeaufforderung (cmd.exe) oder PowerShell und geben Sie ein:
jupyter lab
Windows (Anaconda-Nutzer): Falls JupyterLab über Anaconda installiert wurde, kann es auch über die grafische Oberfläche gestartet werden:
1. Öffnen Sie die Anaconda Navigator-App.
2. Wählen Sie im Menü „JupyterLab“ und klicken Sie auf „Start“.
Nach dem Start öffnet sich eine Browser-Oberfläche, über die neue Notebooks erstellt und bearbeitet werden können. Falls sich der Browser nicht automatisch öffnet, kann folgende Adresse manuell eingegeben werden:
http://localhost:8888/lab
Falls JupyterLab nach der Installation nicht gefunden wird, kann es notwendig sein, die entsprechende Umgebung zu aktivieren (bei Nutzung von conda):
conda activate my_env jupyter lab
Im weiteren Verlauf dieses Buches wird JupyterLab häufig verwendet, da es sich hervorragend für interaktive Programmierung eignet. Es bietet:
die schrittweise Ausführung von Code,
die direkte Visualisierung von Diagrammen,
die Kombination von Code, Formeln und Erklärungen in einem Dokument,
eine moderne Oberfläche mit Datei-Explorer, Tabs und integrierten Terminals.
Dies erleichtert das Testen von Code und die Analyse von Daten erheblich. Falls JupyterLab nicht genutzt werden soll, können alle Codebeispiele auch in einer regulären Python-Umgebung oder einer IDE wie VS Code oder PyCharm ausgeführt werden.
1 Siehe Lizenzinformationen unter https://www.anaconda.com/pricing
2 Vor einer Nutzung im beruflichen oder institutionellen Kontext sollten die aktuellen Lizenzbedingungen unbedingt geprüft werden.
3 Bitte beachten Sie, dass wir für die rechtliche Korrektheit keine Gewähr übernehmen können – insbesondere, da sich die Lizenzbedingungen jederzeit ändern können.
