Klein | Numerisches Python | E-Book | sack.de
E-Book

E-Book, Deutsch, 464 Seiten

Klein Numerisches Python

Arbeiten mit NumPy, Matplotlib und Pandas
2. aktualisierte und erweiterte Auflage 2023
ISBN: 978-3-446-47366-9
Verlag: Carl Hanser
Format: PDF
Kopierschutz: 1 - PDF Watermark

Arbeiten mit NumPy, Matplotlib und Pandas

E-Book, Deutsch, 464 Seiten

ISBN: 978-3-446-47366-9
Verlag: Carl Hanser
Format: PDF
Kopierschutz: 1 - PDF Watermark



- Grundlagen zur Lösung numerischer Probleme mit Python
- Verarbeitung großer Datenmengen mit NumPy, z. B. im maschinellen Lernen
- Datenvisualisierung mit Matplotlib
- Ideal für Personen aus Wissenschaft, Ingenieurwesen und Datenanalyse
- Ideal zum Umstieg von Matlab auf Python
- Einführung anhand vieler Beispiele und Praxisfälle sowie Musterlösungen
- Ihr exklusiver Vorteil: E-Book inside beim Kauf des gedruckten Buches
Dieses Buch vermittelt die Python-Grundlagen zur Lösung numerischer Probleme aus den Gebieten »Data Science« und »Maschinelles Lernen«.
Im ersten Teil geht es um NumPy als Basis der numerischen Programmierung mit Python. Eingehend behandelt werden Arrays als zentraler Datentyp für alles, Numerische Operationen, Broadcasting und Ufuncs. Statistik und Wahrscheinlichkeitsrechnung ist ein eigenes Kapitel gewidmet, ebenso wie Boolscher Maskierung und File-Handling.
Die Datenvisualisierung mit Matplotlib bildet den Schwerpunkt des zweiten Teils. Zunächst geht es um die Begrifflichkeit von Matplotlib. Behandelt werden Linien-, Balkendiagramme, Histogramme und Konturplots.
Der dritte Teil dreht sich um Pandas mit seinen Series und DataFrames. Behandelt wird auch der Umgang mit verschiedensten Dateiformaten wie Excel, CSV und JSON sowie mit unvollständigen Daten und NaN. Aufgezeigt werden die Möglichkeiten der Datenvisualisierung direkt mit Pandas.
Der vierte Teil bietet Beispielanwendungen des erlernten Stoffes, wie z.B. ein Haushaltsbuch und eine praxistaugliche Einnahmeüberschussrechnung. Auch findet sich hier eine Einführung in Bildverarbeitungstechniken.
Fast jedes der 32 Kapitel enthält zusätzliche Übungen zum Erproben und Vertiefen des Erlernten, die zugehörigen Lösungen sind im fünften Teil zusammengefasst.
AUS DEM INHALT //
NumPy
• Numerische Operationen auf mehrdimensionalen Arrays
• Broadcasting und Ufuncs
Matplotlib:
• Diskrete und kontinuierliche Graphen
• Balken- und Säulendiagramme, Histogramme, Konturplots
Pandas:
• Series und DataFrames
• Arbeiten mit Excel-, csv- und JSON-Dateien
• Unvollständige Daten (NaN)
• Datenvisualisierung
Praxisbeispiele:
• Bildverarbeitung
• Haushaltsbuch und Einnahmeüberschussrechnung

Der Diplom-Informatiker Bernd Klein genießt internationales Ansehen als Python-Dozent. Bisher hat er über 500 Python-Kurse in Firmen, Forschungsinstituten und Lehraufträgen von Universitäten in Deutschland, Frankreich, der Schweiz, Österreich, den Niederlanden, Luxemburg, Rumänien und Kanada durchgeführt. Er ist Gründer und Inhaber des Schulungsanbieters Bodenseo. Große Aufmerksamkeit finden seine Python-Webseiten www.python-kurs.eu und www.python-course.eu mit jährlich über 6 Millionen Besuchenden. The computer scientist Bernd Klein enjoys an international reputation as a Python lecturer. To date, he has conducted over 500 Python courses in companies, research institutes and teaching positions at universities in Germany, France, Switzerland, Austria, the Netherlands, Luxembourg, Romania and Canada. He is the founder and owner of the training provider Bodenseo. His Python websites www.python-kurs.eu and www.python-course.eu attract a lot of attention with over 6 million visitors every year.
Klein Numerisches Python jetzt bestellen!

Autoren/Hrsg.


Weitere Infos & Material


3 NumPy – Einführung
3.1 Überblick

Bei NumPy handelt es sich um ein Modul, welches grundlegende Datenstrukturen, – d. h. mehrdimensionale Arrays und Matrizen, – und Funktionalitäten zur Verfügung stellt, die von zahlreichen anderen Modulen, unter anderem von Matplotlib, SciPy und Pandas, benutzt werden. Der Name NumPy stellt ein Akronym für den englischen Begriff „Numerical Python“ dar, also „numerisches Python“. Bei dem NumPy-Modul wurde von Anfang an besonderer Wert auf speicherschonende und schnelle Implementierungen gelegt, weshalb auch der größte Teil des Moduls in C geschrieben worden ist.

Bild 3.1 Visualisierung einer Matrix als Hinton-Diagramm

Dadurch wird sichergestellt, dass die kompilierten mathematischen und numerischen Funktionen und Funktionalitäten eine größtmögliche Ausführungsgeschwindigkeit garantieren. Python wird damit um mächtige Datenstrukturen erweitert und bereichert, die das effiziente Rechnen mit großen Arrays und Matrizen ermöglichen. Die Implementierung zielt sogar auf extrem große („Big Data“) Matrizen und Arrays. Ferner bietet das Modul eine riesige Anzahl von hochwertigen mathematischen Funktionen, um mit diesen Matrizen und Arrays zu arbeiten.

SciPy (Scientific Python, also wissenschaftliches Python) wird oft im gleichen Atemzug wie NumPy genannt. SciPy erweitert die Leistungsfähigkeit von NumPy um weitere nützliche Funktionen wie zum Beispiel Minimierung, Regression, Fourier-Transformation und viele andere.

Sowohl NumPy als auch SciPy sind üblicherweise bei einer Standardinstallation von Python nicht installiert. NumPy sowie all die anderen erwähnten Module sind jedoch Bestandteil der Anaconda-Distribution. Will man NumPy manuell installieren, sollte man beachten, dass es als Erstes installiert wird, also vor SciPy.

Das Diagramm in Bild 3.1 wurde übrigens auch mit Python unter Benutzung von NumPy und Matplotlib erzeugt. Das Bild stellt eine grafische Visualisierung einer Matrix mit 14 Reihen und 20 Spalten dar. Es handelt sich um ein sogenanntes Hinton-Diagramm. Die Größe eines Quadrates innerhalb dieses Diagramms korrespondiert zu der Größe des entsprechenden Wertes in der darzustellenden Matrix. Die Farbe bestimmt dabei, ob es sich um einen positiven oder negativen Wert handelt. In unserem Beispiel: Die Farbe Rot bezeichnet die negativen Werte, und die Farbe Grün bezeichnet die positiven Werte.

NumPy basiert auf zwei früheren Python-Modulen, die mit Arrays zu tun hatten. Eines von diesen ist Numeric. Numeric ist wie NumPy ein Python-Modul für leistungsstarke numerische Berechnungen, aber es ist heute überholt. Ein anderer Vorgänger von NumPy ist Numarray, bei dem es sich um eine vollständige Überarbeitung von Numeric handelt, aber auch dieses Modul ist heute veraltet. NumPy ist die Verschmelzung dieser beiden, d. h. es ist auf dem Code von Numeric und den Funktionalitäten von Numarray aufgebaut.

3.2 Vergleich NumPy-Datenstrukturen und Python

Die Datenstrukturen des reinen Python, also ohne NumPy und andere, bieten große Vorteile.

Vorteile von Python-Datenstrukturen:

       Integers und Floats sind als mächtige Klassen implementiert. So können Integer-Zahlen beinahe „unendlich“ groß oder klein werden.1

       Listen bieten effiziente Methoden zum Einfügen, Anhängen und Löschen von Elementen.

       Dictionaries bieten einen schnellen Lookup.

Vorteile von NumPy-Datenstrukturen gegenüber Python:

       Array-basierte Berechnungen

       Effizient implementierte mehrdimensionale Arrays

       Entworfen für wissenschaftliche Berechnungen

3.3 Ein einfaches Beispiel

Wie bei allen anderen Modulen müssen wir auch NumPy importieren, bevor wir mit dem Modul arbeiten können:

import numpy

NumPy wird aber nur selten in dieser Form importiert. Meistens wird es beim Import in umbenannt, um sich bei der Benutzung ein wenig Schreibarbeit zu sparen:

import numpy as np

In unserem ersten einfachen NumPy-Beispiel geht es um Temperaturen. Wir definieren eine Liste mit Temperaturwerten in Celsius:

cvalues = [20.8, 21.9, 22.5, 22.7, 22.3, 21.0, 21.2, 20.9, 20.1]

Aus unserer Liste erzeugen wir nun ein eindimensionales NumPy-Array:

C = np.array(cvalues) print(C)

[20.8 21.9 22.5 22.7 22.3 21. 21.2 20.9 20.1]

Nun wollen wir die obigen Temperaturwerte in Grad Fahrenheit umrechnen. Dies kann sehr einfach mit einem NumPy-Array bewerkstelligt werden. Die Lösung unseres Problems besteht in einfachen skalaren Operationen:

print(C * 9 / 5 + 32)

[69.44 71.42 72.5 72.86 72.14 69.8 70.16 69.62 68.18]

Das Array C selbst wurde dabei jedoch nicht verändert:

print(C)

[20.8 21.9 22.5 22.7 22.3 21. 21.2 20.9 20.1]

Verglichen zu diesem Vorgehen stellt sich die bestmöglich reine Python-Lösung2, die die Liste mithilfe einer Listen-Abstraktion in eine Liste mit Fahrenheit-Temperaturen wandelt, als umständlich dar!

fvalues = [x * 9 / 5 + 32 for x in cvalues] print(fvalues)

[69.44, 71.42, 72.5, 72.86, 72.14, 69.8, 70.16, 69.62, 68.18]

Wir haben bisher C als ein Array bezeichnet. Die interne Typbezeichnung lautet jedoch oder noch genauer „C ist eine Instanz der Klasse “:

print(type(C))

Im Folgenden werden wir die Begriffe „Array“ und „“ meistens synonym verwenden.

3.4 Grafische Darstellung der Werte

Obwohl wir das Modul Matplotlib erst später im Detail besprechen werden, wollen wir zeigen, wie wir mit diesem Modul die obigen Temperaturwerte ausgeben können. Dazu benutzen wir das Paket aus . Wenn man mit dem Jupyter-Notebook arbeitet3, empfiehlt es sich, die folgende Codezeile zu verwenden, falls der Plot nicht so wie im Buch erscheint:

%matplotlib inline

Dies ist meistens die Default-Einstellung. Sollen die Plots in einem Notebook in externen Fenstern auftauchen, schreibt man obige Zeile ohne , also nur .

Der Code zum Erzeugen eines Plots für unsere Werte sieht wie folgt aus:

import matplotlib.pyplot as plt plt.plot(C)

Die Funktion benutzt das Array C als Werte für die Ordinate, also die Y-Achse. Als Werte für die Abszisse wurden die Indizes des Arrays C genommen.

3.5 Speicherbedarf

Die wesentlichen Vorteile von NumPy-Arrays sind ein geringer Speicherverbrauch und ein optimales Laufzeitverhalten. Wir wollen uns den Speicherverbrauch von NumPy-Arrays in diesem Kapitel unseres Tutorials näher anschauen und ihn mit dem Speicherverbrauch von Python-Listen vergleichen.

Um den Speicherverbrauch der Liste aus dem vorigen Bild zu berechnen, werden wir die Funktion aus dem Modul benutzen:

from sys import getsizeof as size lst = [24, 12, 57] size_of_list_object = size(lst) size_of_elements = len(lst) * size(lst[0]) total_list_size = size_of_list_object + size_of_elements print("Größe ohne Größe der Elemente: ", size_of_list_object) print("Größe aller Elemente: ", size_of_elements) print("Gesamtgröße der Liste: ", total_list_size)

Größe ohne Größe der Elemente: 120 Größe aller Elemente: 84 Gesamtgröße der Liste: 204

Der Speicherbedarf einer Python-Liste besteht aus der Größe der allgemeinen Listeninformation, dem Speicherbedarf für die Referenzen auf die Listenelemente und der Größe aller Elemente der Liste. Wenn wir auf eine Liste anwenden, erhalten wir nur den Speicherbedarf der reinen Liste ohne die Größe der Listenelemente. Im obigen Beispiel sind wir davon ausgegangen, dass alle Integer-Elemente unserer Liste die gleiche Größe haben. Dies stimmt natürlich nicht im allgemeinen Fall, da Integers bei...


Klein, Bernd
Der Diplom-Informatiker Bernd Klein genießt internationales Ansehen als Python-Dozent. Bisher hat er über 500 Python-Kurse in Firmen, Forschungsinstituten und Lehraufträgen von Universitäten in Deutschland, Frankreich, der Schweiz, Österreich, den Niederlanden, Luxemburg, Rumänien und Kanada durchgeführt. Er ist Gründer und Inhaber des Schulungsanbieters Bodenseo. Große Aufmerksamkeit finden seine Python-Webseiten www.python-kurs.eu und www.python-course.eu mit jährlich über 6 Millionen Besuchenden.

Der Diplom-Informatiker Bernd Klein genießt internationales Ansehen als Python-Dozent. Bisher hat er über 500 Python-Kurse in Firmen, Forschungsinstituten und Lehraufträgen von Universitäten in Deutschland, Frankreich, der Schweiz, Österreich, den Niederlanden, Luxemburg, Rumänien und Kanada durchgeführt. Er ist Gründer und Inhaber des Schulungsanbieters Bodenseo. Große Aufmerksamkeit finden seine Python-Webseiten www.python-kurs.eu und www.python-course.eu mit jährlich über 6 Millionen Besuchenden.



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.