Numerisches Programmieren mit Python

Definition von numerischer Programmierung

Als Titel dieses Tutorials haben wir den Begriff "Numerisches Python" gewählt. Damit wollten wir bewusst auf den Begriff "Numerisches Programmieren" anspielen.
Der Ausdruck "numerisches Programmieren" - auch bekannt unter dem Begriff "wissenschaftliches Programmieren" - ist irreführend. Man könnte es als eine Programmierung ansehen, die mit Zahlen statt mit z.B. Texten zu tun hat. Letztendlich haben die meisten Programme, auch wenn sie scheinbar nichts mit Zahlen zu tun haben, einen numerischen Kern. Denkt man beispielsweise an den Google-Algorithmus und an die Art wie er einem Vorschläge zu Webseiten auf eine Suchanfrage offeriert, dann könnte man glauben, dass es sich bei dem zugrundeliegenden Algorithmus um reine Textverarbeitung handelt. Dennoch ist auch in diesem Fall der Kern bzw. der wesentliche Teil des Algorithmus ein numerisches Problem. Ein klassisches Beispiel ist PageRank: Die Bewertung verlinkter Seiten lässt sich als Problem der linearen Algebra auf dem Webgraphen formulieren.

So könnte man denken, dass es sich letztendlich bei jedem Programm um numerische Programmierung handelt, aber es gibt auch eine engere Definition.

Unter numerischer Programmierung versteht man das Gebiet der Informatik und der Mathematik, in dem es um Approximationsalgorithmen geht, d.h. die numerische Approximation von mathematischen Problemen oder numerischen Analysis. In anderen Worten Probleme mit stetigen Variablen.

Python gehört heute zu den wichtigsten Programmiersprachen für numerische und wissenschaftliche Anwendungen. Allerdings würde Python keine Rolle spielen, wenn es nicht mächtige Module zur numerischen Programmierung zur Verfügung stellte, die wir im Folgenden beschreiben werden.

Zusammenhang zwischen Python, NumPy, Matplotlib, SciPy und Pandas

Formeln mit Tintenklecksen

Python ist eine universelle Programmiersprache, die sich in den unterschiedlichsten Gebieten einsetzen lässt. So zum Beispiel in der Systemadministration, als Tool zur Erzeugung und zum Betrieb von dynamischen Webseiten und in der Computerlinguistik. Da Python ein universelle Programmiersprache ist, lässt sie sich natürlich auch zum Lösen numerischer Probleme einsetzen. So weit so gut, aber die Crux bei der Sache liegt in der Laufzeit und auch im Speicherverbrauch. Reines Python - also ohne den Einsatz irgendwelcher numerischer Spezialmodule - würde sich nicht eignen für Aufgaben, für die MATLAB und R geschaffen worden sind. Sobald es um die Lösung numerischer Probleme geht, ist die Leistungsfähigkeit von Algorithmen von höchster Wichtigkeit, sowohl was die Geschwindigkeit als auch den Speicherverbrauch betrifft.



Mit NumPy, SciPy, Matplotlib und Pandas steht für Python ein leistungsfähiges Ökosystem für numerische Berechnungen, wissenschaftliche Anwendungen, Datenanalyse und Visualisierung zur Verfügung. Rechenintensive Operationen werden dabei häufig in optimierten, kompilierten Bibliotheken ausgeführt.


Überblicksdiagramm: Vergleich zwischen Python, NumPy, SciPy, Matplotlib und Pandas


NumPy ist ein Modul, welches die grundlegenden Datenstrukturen zur Verfügung stellt, die auch von Matplotlib, SciPy und Pandas benutzt werden. NumPy implementiert mehrdimensionale Arrays und Matrizen. Außerdem gibt es den Nutzerinnen und Nutzern auch die wesentlichen Funktionalitäten an die Hand, mit denen sich diese Datenstrukturen erzeugen und manipulieren lassen.

SciPy baut auf NumPy auf, d.h. es benutzt die Datenstrukturen, die NumPy bereitstellt. Es erweitert die Leistungsfähigkeit von NumPy mit weiteren nützlichen Funktionalitäten, wie beispielsweise Minimierung, Regression, Fourier-Transformation und viele andere.



Die von Pythonprogrammen, - mit oder ohne Verwendung von NumPy und SciPy, - erzeugten Daten möchte man häufig gerne grafisch darstellen. Für diesen Zweck wurde das Modul Matplotlib geschaffen.



Pandas ergänzt dieses Ökosystem um besonders komfortable Datenstrukturen und Werkzeuge für Datenanalyse. Es baut wesentlich auf NumPy auf und arbeitet eng mit Matplotlib und weiteren Bibliotheken zusammen. Der Fokus von Pandas besteht darin, Datenstrukturen und Operationen zur Manipulation von Tabellen und Zeitreihen bereitzustellen. Der Name ist von "panel data" abgeleitet. Pandas ist bestens geeignet mit Tabellendaten zu arbeiten, wie sie beispielsweise von Excel erzeugt werden.

Python, eine Alternative zu Matlab

Python ist heute in Data Science, wissenschaftlichem Rechnen und Maschinellem Lernen weit verbreitet. Je nach Fachgebiet werden daneben unter anderem R und MATLAB eingesetzt.

Bei der Entwicklung von R hatte man Statistiker und Data-Scientists im Visier, wollte aber keinesfalls eine Sprache entwickeln, die sich generell einsetzen lässt. Dies gilt ebenso für MATLAB. Python hingegen wurde von Anfang an als universelle Programmiersprache ausgerichtet. Zusätzlich eignet sich Python in Kombination mit den Modulen NumPy, SciPy, Matplotlib und Pandas bestens um R oder MATLAB zu ersetzen.

Einer der wesentlichen Nachteile von MATLAB gegenüber Python sind wohl die Kosten. Python mit all seinen Modulen ist kostenlos, wohingegen MATLAB recht teuer ist und je nach eingesetzter Toolbox extrem teuer sein kann. Bei Python handelt es sich aber nicht nur um kostenlose sondern auch um "freie" Software, d.h. ihr Einsatz ist nicht durch prohibitive Lizenzmodelle eingeschränkt.

Equivalence between Python, NumPy, SciPy, Matplotlib and Matlab