Die Python Evolution zum Data-Science Tool

Guido van Rossum veröffentlichte Python im Jahr 1991, in einer Zeit als der Data-Science-Begriff noch nicht geboren war – und auch wenn Python als General-Purpose Sprache vielen Problemklassen zuzuordnen ist, hat sie sich als meistgenutzes Tool im Bereich Data Science etabliert. Doch wie ist es eigentlich zu dieser Entwicklung gekommen?

Eine Grundvoraussetzung: High-Level und Multiparadigmatisch

Python ist eine high-level, general-purpose Sprache, die sowohl objektrorientierte als auch prozedurale Programmierung erlaubt. Diese Eigenschaften werden für den Erfolg von Python im Bereich Data Science vielfach übersehen. Sie sind nämlich eine Grundvoraussetzung für die große Anzahl von Nutzern.

Data Scientist ist keine scharf umrissene Berufsgruppe und die heutigen Data Scientists haben ihre Wurzeln in den unterschiedlichsten Disziplinen wie der Physik, Mathematik, Informatik, Statistik und den empirischen Sozialwissenschaften. Objektorientiertes Programmieren gehört für viele dieser Quereinsteiger nicht zum gewohnten Programmierparadigma. In vielen Bereichen werden (besonders im akademischen Umfeld) zu Analysezwecken Skriptsprachen oder Analysesuiten wie SPSS, SAS oder Stata eingesetzt. Anwender solcher Tools sind dankbar, wenn sie durch Python nicht gezwungen sind, ihren gewohnten Stil umzustellen. Daneben zeichnet Python ein hoher Abstraktionsgrad zu Maschinencode auf (Typendeklarationen und Speichermanagement findet bspw. implizit statt) und Sprachelemente sind der natürlichen Sprache angelehnt. Dies sind Eigenschaften, durch die sich auch High-Level Suiten und Skriptingtools auszeichnen und die die Entscheidung für Python als Einstiegssprache in den Bereich Data Science für viele Quereinsteiger positiv beeinflussen.

Die Geschichte: Von numeric zu Pandas und scikit-learn

numeric und numarray

Seine Fähigkeit algebraische, vektorwertige Operationen und effiziente Matrizenrechnungen durchzuführen, erlante Python spätestens 1995 mit der Bibliothek numeric. Sie wurde zum Mittel der Wahl um Probleme mit numerischen Methoden wirkungsvoll zu lösen. Guido van Rossum hatte den Wunsch numeric aufgrund seiner Bedeutung für die wissenschaftliche Nutzung von Python in die Python-Standardbibliothek aufzunehmen, musste aber davon abkommen, als er merkte, dass die Codebasis nicht den Ansprüchen von Nachvollziehbarkeit und Wartbarkeit genügte.

Die Unzulänglichkeiten von numeric gaben schließlich den Impuls für die Entwicklung einer Nachfolgebibliothek names numarray. Doch auch numarray schaffte es nicht numeric adäquat zu ersetzen. Zwei zentrale Probleme von numarray verhinderten dessen Erfolg: Zum einen hatte numarray Performanceprobleme bei der Verarbeitung kleiner Matrizen, zum anderen war die Codebasis inkompatibel mit Scipy.

Scipy

Scipy hatte sich in der Zwischenzeit zu einer umfangreichen Konglomeratsbibliothek entwickelt, in der die verschiedensten Methoden, die unter Zuhilfenahme von numeric entstanden sind, unter einem Dach vereint wurden. Der Erfolg von Scipy spaltete aber gewissermaßen die Entwicklergemeinde: Die einen erkannten numarray als legitimen Nachfolgen von numeric an und entwickleten auf dessen Codebasis eigenständige Projekte, die anderen waren in ihren Entwicklungen auf Scipy angewiesen und nutzen daher weiterhin numeric. Erst 2005 gelang es dem Entwickler Travis Oliphant diesen Konflikt zu aufzulösen, indem er ein sauberes, auf Wartbarkeit ausgerichtetes Refactoring von numeric unternahm, dass flexibel genug war, mit den vorhandenen Codeelementen in Scipy zu interagieren. Dies war die Geburtsstunde von numpy, dem Fundament numerischer Methoden und Pakete aus dem Bereich Data-Science.

Numpy

Diesen Grundbausstein Numpy verwenden insbesondere 2 Bibliotheken, ohne die sich der Erfolg von Python im Data Science sicher
nicht derart ausgeprägt hätte: Zum einen ist dies scikit-Learn, eine umfassende Sammlung von Machine Learning Algorithmen, und Pandas, ein durch die Programmiersprache R inspiriertes Toolset zum Datenmanagement. Beide Pakete werden häufig in Kombination eingesetzt.

Pandas

Pandas dient der Vorverarbeitung von Daten (dem Datenmanagement). Diese werden im Spreadsheet-Format als sog. DataFrame vorgehalten. Beobachtungen und Objekte befinden sich dabei in den Zeilen des DataFrames, Eigenschaftswerte oder Attribute werden üblicherweise in den Spalten festgehalten. Dieses Format ist aus 2 Gründen bedeutend: Zum einen entspricht es der Denkweise wie Analytiker Daten sehen (man nennt diese Form auch statistisches Datenformat). Zum anderen kann es von den Algorithmen-Implementierungen in Python unmittelbar weiterverarbeitet werden. Der Anwender kann also sein Datenmanagement bis hin zur Algorithmenverarbeitung der Daten ohne umständlichen Konversionen in einem Format durchführen. Pandas ist inzwischen zu einer beeindruckend umfassenden Bibliothek geworden mit weiteren Möglichkeiten zur Zeitreihenverarbeitung und zur Visualisierung von Daten. Neben dem Funktionsumfang sticht Pandas durch seine High-Level Funktionen hervor. Die Syntaxelemente folgen einer nachvollziehbaren Logik und sind umfangreich dokumentiert.

scikit-learn

scikit-learn ist der Wegweiser für alle Machine-Learning Bibliotheken, die in Python entstanden sind und entstehen. Innerhalb des Pakets finden sich nahezu alle gängigen Algorithmen aus dem Bereich Machine Learning. Die Problemklassen auf die scikit-learn eine Antwort liefert, reichen von Regressions- und Klassifikationsproblemen, hin zu Clusteranalysen und Faktorenanalysen. Daneben liefert das Paket weitere Convenient-Funktionen wie etwa zur Modellselektion, Modellvalidierung oder Feature-Extraktion aus.

Fazit

Die Evolution Pythons zum führenden Data Science Werkzeug vollzieht sich in der Entwicklung der Pakete NumPy, Scipy, Pandas und scikit-learn. Mit diesen verfügen Analysten über valide, umfangreiche und gut dokumentierte Bibliotheken, die gemeinsam einen Funktionsumfang erreichen, der innerhalb der diversen Landschaft aus Analysetools und Programmiersprachen seines gleichen sucht. Die Spracheigenschaften von Python sind aufgrund ihrer objekt- und funktionsorientierung sowohl für Programmierer als auch für Datenanalysten aus den verschiedensten Disziplinen interessant, die einen Quereinstieg in den Bereich Data Science wagen.