Pythons reichhaltiges Ökosystem - auch im Bereich der Data-Science-Tools - ist ein wesentlicher Anreiz für seine User. Der einzige Nachteil einer so umfassenden und breit gefächerten Werkzeug-Sammlung: Unter Umständen verliert man in der Masse die eine oder andere Tool-Perle aus den Augen.
5 Python-Tools für Data Science
Um das zu verhindern, haben wir fünf der besten - neueren oder weniger bekannten - Data-Science-Projekte für Python für Sie zusammengestellt.
In der Regel befinden sich Daten irgendwo in einer Datenbank (DB). Berechnungen finden jedoch normalerweise außerhalb dieser Datenbank statt. Entsprechend kann es zu Slowdowns kommen, wenn Daten in und aus der Database geladen werden. Das will das ConnectorX-Tool verhindern und gleihczeitig den Arbeitsaufwand minimieren, indem es Daten aus Datenbanken in viele gängige Python-Data-Wrangling-Tools lädt.
Den Kern von ConnectorX bildet dabei eine Rust-Bibliothek. Das ermöglicht beispielsweise, Daten aus einer Datenquelle zu laden, während diese partitioniert wird - zum Beispiel in PostgreSQL. Darüber hinaus unterstützt ConnectorX auch Daten aus:
MySQL/MariaDB,
SQLite,
Amazon Redshift,
Microsoft und Azure SQL sowie
Oracle.
Die Outputs lassen sich anschließend in Pandas, PyArrow DataFrame oder (über PyArrow) auch in Modin, Dask oder Polars verwerten.
Datenwissenschaftler, die mit Python arbeiten, dürften SQLite kennen. Da diese leistungsstarke relationale Datenbank als prozessinterne Bibliothek und nicht als separate Anwendung ausgeführt wird, ist sie besonders schlank und reaktionsschnell. DuckDB ist ein bisschen wie SQLite für OLAP. Wie andere OLAP-Datenbank-Engines verwendet es einen spaltenbasierten Datenspeicher und ist auf langfristige analytische Abfragen optimiert. Dabei bietet es jedoch alle Funktionen, die man von einer herkömmlichen Database erwartet - etwa ACID-Transaktionen. Zudem müssen Sie keine separate Software-Suite konfigurieren. Stattdessen genügt ein einziger pip install
-Befehl innerhalb Ihrer Python-Umgebung.
DuckDB verarbeitet Daten im CSV-, JSON- oder Parquet-Format. Zur Effizienzsteigerung können die resultierenden Datenbanken auch in mehrere physische Dateien partitioniert werden, die auf Schlüsselwerten basieren (etwa Jahr und Monat). Abfragen funktionieren wie bei jeder anderen SQL-basierten, relationalen DB - allerdings ergänzt um zusätzliche Funktionen, wie beispielsweise der Möglichkeit, Daten-Stichproben zu nehmen oder Window Functions zu erstellen.
Zudem bietet DuckDB auch eine kleine, aber nützliche Sammlung von Extensions, darunter
Volltextsuche,
Import/Export von Excel,
direkte Verbindungen zu SQLite und PostgreSQL,
Export von Parquet-Dateien sowie
Support für diverse gängige Formate und Typen von Geodaten.
Daten für ein DataFrame-zentrisches Projekt vorzubereiten und zu bereinigen, ist eine der undankbarsten Aufgaben, mit denen Datenwissenschaftler konfrontiert sein können. An dieser Stelle kommt das All-in-One-Toolset Optimus ins Spiel. Das ermöglicht es, Daten in eine(r) Vielzahl von Quellen zu laden, zu explorieren, zu bereinigen und zurückzuschreiben.
Als zugrundeliegende Daten-Engine können dabei
Pandas,
Dask,
CUDF (und Dask + CUDF),
Vaex oder
Spark verwendet werden.
Daten lassen sich im Arrow-, Parquet-, Excel-, einer Vielzahl gängiger Datenbankquellen oder Flat-File-Formaten wie CSV und JSON laden und speichern. Die Datenmanipulations-API von Optimus ähnelt der von Pandas, fügt aber .rows()
und .cols()
Accessors hinzu, um verschiedene Dinge zu erleichtern. Etwa einen Dataframe zu sortieren oder nach Spaltenwerten zu filtern. Optimus kommt außerdem im Bundle mit Processors, die Datentypen aus der "echten" Welt wie E-Mail-Adressen und URLs verarbeiten.
Wichtig zu wissen: Optimus wird noch aktiv weiterentwickelt, allerdings stammt die letzte offizielle Veröffentlichung aus dem Jahr 2020. Das Tool ist also möglicherweise nicht so aktuell ist wie andere Komponenten in Ihrem Stack.
Wenn Sie regelmäßig mit DataFrames arbeiten und dabei von den Limitationen von Pandas frustriert sind, sollten Sie einen Blick auf die DataFrame-Bibliothek Polars werfen. Diese bietet eine ähnlich komfortable Syntax wie Pandas. Allerdings setzt Polars im Gegensatz zu Pandas auf eine in Rust geschriebene Bibliothek, die Ihre Hardware von Anfang an optimal ausnutzt. Um die Vorteile leistungssteigernder Funktionen wie Parallel Processing oder SIMD zu nutzen, ist keine spezielle Syntax notwendig - das geschieht automatisch. Selbst simple Operationen wie aus einer CSV-Datei zu lesen, sind so deutlich schneller.
Polars bietet die Execution-Modi "eager" und "lazy", so dass Abfragen entweder sofort oder erst bei Bedarf ausgeführt werden können. Zudem ist eine Streaming-API an Bord, um Abfragen inkrementell zu verarbeiten. Darüber hinaus können Rust-Entwickler mit pyo3 auch ihre eigenen Polars-Erweiterungen erstellen.
Data-Science-Workflows einzurichten, ist kein leichtes Unterfangen. Ganz besonders, wenn sie konsistent und vorhersehbar sein sollen. Deshalb wurde Snakemake entwickelt: Das Tool ermöglicht es, Datenanalysen in Python automatisch einzurichten - und zwar so, dass alle die gleichen Ergebnisse erhalten. Je mehr bewegliche Teile Ihr Data-Science-Workflow enthält, desto wahrscheinlicher ist es, dass Sie von einer Automatisierung mit Snakemake profitieren.
Snakemake-Workflows ähneln GNU Make-Workflows: Sie definieren die Dinge, die Sie erstellen möchten, in Form von Regeln. Die bestimmen wiederum über In- und Output sowie darüber, welche Befehle ausgeführt werden, um das Ziel zu erreichen. Workflow-Regeln können dabei Multithreading-fähig sein (vorausgesetzt, das bringt einen Vorteil) und Konfigurationsdaten lassen sich aus JSON/YAML-Dateien einlesen. Darüber hinaus können Sie auch Funktionen innerhalb Ihrer Workflows definieren, um die in den Regeln verwendeten Daten umzuwandeln und die bei jedem Schritt durchgeführten Aktionen zu protokollieren.
Snakemake ist auf Portabilität konzipiert: Entsprechende Projekte lassen sich in jedem Kubernetes-Environment oder auch in spezifischen Cloud- Umgebungen wie Google Cloud Life Sciences oder AWS Tibanna bereitstellen. (fm)
Dieser Beitrag basiert auf einem Artikel unserer US-Schwesterpublikation Infoworld.