Numerisches Python - Bernd Klein - E-Book

Numerisches Python E-Book

Bernd Klein

0,0

Beschreibung

- 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:

Android
iOS
von Legimi
zertifizierten E-Readern
Kindle™-E-Readern
(für ausgewählte Pakete)

Seitenzahl: 459

Veröffentlichungsjahr: 2025

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



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

Inhalt

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)

Vorwort

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

Danksagung

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.

1Einleitung
1.1Die richtige Wahl

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 Buches

In 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 dahinter

Dieses 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 Beispiele

Alle 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 Autor

Bernd 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 Kritik

Bei 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.

2Numerisches Programmieren
3Installation von NumPy, Matplotlib, Pandas und JupyterLab
3.1Einleitung

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 Miniconda

Falls 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 pip

Alternativ 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 JupyterLab

Nach 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

3.5Warum JupyterLab?

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.

Teil INumPy
4NumPy Einführung
5Erzeugung und Struktur von Arrays