×

7 Data-Science-Perlen für Python

Diese Python-Tools bereichern das Data-Scientist-Dasein.DC Studio | shutterstock.com



Pythons opulentes Tool-Ökosystem ist einer der wesentlichen Vorzüge der Programmiersprache. Die Kehrseite: Weil es so viele Python-Tools gibt, ist es allzu leicht, wirklich gute zu übersehen. Deshalb haben wir in diesem Artikel sieben empfehlenswerte Data-Science-Tools für Python zusammengestellt, die bislang (noch) nicht ins Rampenlicht gerückt sind.



1. ConnectorX



Daten liegen in der Regel in einer Datenbank – werden jedoch außerhalb dieser verarbeitet. Daten aus der Datenbank zu extrahieren oder hinzuzufügen, kann dabei ein echter Zeitfresser sein. ConnectorX lädt Informationen aus Datenbanken direkt in gängige Datenverarbeitungs-Tools für Python. Dazu sind meistens nur ein paar Zeilen Python-Code und eine SQL-Abfrage nötig.



Das Kernstück von ConnectorX ist eine Rust-Bibliothek. Das ermöglicht beispielsweise, Daten aus einer Quelle zu laden und parallel zu partitionieren. PostgreSQL-Daten lassen sich etwa einladen, indem eine Partitionsspalte spezifiziert wird. Neben PostgreSQL liest ConnectorX auch Daten ein aus




MySQL/MariaDB,



SQLite,



Amazon Redshift,



Microsoft SQL Server,



Azure SQL, sowie



Oracle.




Die Ergebnisse können anschließend in einen Pandas– oder PyArrow-DataFrame, in Modin oder Dask (über Pandas) oder auch in Polars (über PyArrow) weiterverwendet werden. Allgemeiner Support für ODBC ist derzeit in Arbeit.



2. DuckDB



Wie andere OLAP-Datenbank-Engines verwendet DuckDB einen spaltenorientierten Datenspeicher und ist für langfristig laufende Analyse-Workloads ausgelegt. DuckDB bietet jedoch sämtliche Funktionen, die man von einer traditionellen Datenbank erwarten würde – etwa ACID-Transaktionen. Ein weiterer Vorteil: Sie müssen keine separate Software-Suite konfigurieren. Innerhalb einer Python-Umgebung installieren Sie DuckDB mit folgendem Befehl: pip install duckdb.



DuckDB verarbeitet Daten im CSV-, JSON- oder Parquet-Format sowie aus einer Vielzahl weiterer, gängiger Datenquellen. Die resultierenden Datenbanken lassen sich aus Effizienzgründen basierend auf Schlüsselwerten (etwa Jahr und Monat) auch in mehreren physischen Dateien partitionieren. Die Datenabfrage funktioniert wie bei jeder anderen SQL-basierten, relationalen Datenbank – allerdings mit zusätzlichen integrierten Funktionen. Etwa, zufällige Daten-Samples zu nehmen oder Fensterfunktionen zu erstellen.



DuckDB verfügt darüber hinaus auch über eine kleine, aber sehr nutzwertige Sammlung von Extensions. Diese kommen beispielsweise zum Einsatz für:




Volltextsuchen,



beschleunigte Vektorähnlichkeitssuchen,



Excel-Importe und -Exporte,



direkte Verbindungen zu SQLite und PostgreSQL,



Parquet-Dateiexporte, sowie



Support für diverse gängige Geodatenformate und -typen.




3. Optimus



Daten zu bereinigen und vorzubereiten, ist in DataFrame-zentrierten Projekten eine eher undankbare Aufgabe. Das All-in-One-Toolset Optimus will diese erleichtern, indem es Entwicklern ermöglicht, Daten in, beziehungsweise aus einer Vielzahl von Quellen zu laden, zu erkunden, zu bereinigen und zurückzuschreiben.



Als zugrundeliegende Daten-Engine kann Optimus neben Pandas auch Dask, CUDF, Vaex oder Spark nutzen. Daten lassen sich einer Vielzahl gängiger Quellen laden, etwa Arrow oder Parquet. Darüber hinaus werden auch Flatfile-Formate wie CSV und JSON unterstützt.  



Die API zur Datenmanipulation ähnelt der von Pandas, erweitert diese jedoch um die Zugriffsmethoden .rows() und .cols(). Das ist beispielsweise nützlich, um:




einen DataFrame zu sortieren,



nach Spaltenwerten zu filtern,



Daten nach bestimmten Kriterien zu verändern, oder



den Anwendungsbereich anhand bestimmter Kriterien zu simplifizieren.




Zusätzlich beinhaltet Optimus auch Prozessoren, um reale Datentypen wie E-Mail-Adressen und URLs zu verarbeiten.



Problematisch ist mit Blick auf Optimus möglicherweise, dass die letzte offizielle Version aus dem Jahr 2020 stammt. Es ist also möglicherweise nicht so aktuell wie andere Komponenten in Ihrem Stack.



4. Polars



Wenn Sie viel Zeit mit DataFrames verbringen und regelmäßig von den Performance-Grenzen von Pandas frustriert sind, sollten Sie einen Blick auf Polars werfen.



Die DataFrame-Bibliothek für Python bietet eine komfortable Syntax, die der von Pandas ähnelt – greift jedoch auf eine Rust-Bibliothek zurück, die die vorhandene Hardware optimal nutzt. Um Features wie Parallelverarbeitung oder SIMD zu nutzen, ist keine spezielle Syntax notwendig – alles läuft automatisch. So laufen selbst simple Vorgänge wie aus einer CSV-Datei zu lesen, deutlich schneller ab. Rust-Entwickler können zudem auch ihre eigenen Extensions für Polars entwickeln – mit pyo3.



Polars bietet sowohl Eager- als auch Lazy-Ausführungsmodi – Queries lassen sich also sofort oder bei Bedarf auch zeitverzögert fahren. Das Python-Tool wartet außerdem mit einer Streaming-API auf, um Abfragen inkrementell zu verarbeiten. Allerdings ist Streaming für diverse Funktionen noch nicht verfügbar. Wenn doch, greift Polars dazu auf eine In-Memory-Engine zurück.



Das Tool ermöglicht außerdem (über die externe Graphviz-Bibliothek), sich mit Hilfe von Execution-Graphen ein Bild davon zu machen, wie viel Speicher- und CPU-Ressourcen eine Abfrage nutzt.  



5. DVC



Ein weit verbreitetes Problem im Zusammenhang mit Data-Science-Projekten ist die Versionskontrolle (nicht des Projektcodes, sondern der Daten). Mit dem Tool DVC (Data Version Control) lassen sich Versionsdeskriptoren an Datensätze anhängen. Diese lassen sich wie der Rest des Codes in Git einchecken, um die Versionen von Daten und Code konsistent zu halten.



DVC kann nahezu jede Art von Datensatz tracken, solange diese sich in einer Datei abbilden lassen. Dabei spielt es keine Rolle, ob die Daten in einem Remote-Storage-Service oder lokal vorgehalten werden. Das Konzept: Sie beschreiben über eine “Pipeline“, wie Datenmodelle gemanagt und genutzt werden.



DVC kann allerdings mehr, als nur Daten zusammen mit Code zu versionieren. Das Tool kann zum Beispiel auch fungieren als:




schneller Datencache für remote gehostete Daten,



Methodik, um Experimente zu tracken, die mit den Daten durchgeführt werden, und



Register oder Katalog für Machine-Learning-Modelle, die mit den Daten erstellt wurden.




Benutzer von Visual Studio Code können DVC-Workflows über die entsprechende Extension in ihren Editor integrieren.



6. Cleanlab



Weil es teuer und zeitaufwändig ist, saubere, korrekt gelabelte Daten zu erstellen, sind hochwertige Datensätze für Machine-Learning-Zwecke Mangelware. Manchmal bleibt Datenwissenschaftlern keine andere Wahl, als mit Rohdaten oder inkonsistenten Informationen zu arbeiten. Für dieses Szenario wurde das Tool Cleanlab entwickelt.



Dieses Python-Daten-Tool nutzt vorhandene, hochwertige Machine-Learning-Datensätze, um solche von geringerer Qualität, die nicht oder nur unzureichend gekennzeichnet sind, zu analysieren. Anders ausgedrückt: Sie erstellen ein Modell auf der Grundlage des ursprünglichen Datensatzes. Anschließend finden Sie mit Cleanlab heraus, was in diesem ursprünglichen Datensatz verbessert werden muss – und trainieren dann das Modell erneut mit Ihrem automatisch bereinigten und angepassten Datensatz.



Cleanlab funktioniert unabhängig von Datenmodellen und -Frameworks. Es spielt also keine Rolle, ob Sie PyTorch, OpenAI, Scikit-learn oder Tensorflow nutzen – Cleanlab arbeitet mit jedem Classifier. Dabei verfügt das Tool dennoch über spezifische Workflows für gängige Tasks wie:




Token-Klassifizierung,



Multi-Labeling,



Regression,



Bildsegmentierung, oder auch



Objekt- und Outlier-Detection.




Idealerweise machen Sie sich anhand diverser Beispiele selbst ein Bild davon, wie der Prozess funktioniert und welche Ergebnisse zu erwarten sind.



7. Snakemake



Data-Science-Workflows sind diffizil einzurichten. Noch schwieriger ist es aber, das auf konsistente und vorhersehbare Weise zu erledigen. Um diesen Prozess zu automatisieren und Datenanalyse-Workflows so aufzusetzen, dass alle Beteiligten die gleichen Ergebnisse zu erhalten, wurde Snakemake entwickelt. Dabei gilt: Je mehr bewegliche Teile Ihr Data-Science-Workflow enthält, desto größer ist die Wahrscheinlichkeit, dass Sie davon profitieren werden, diesen mit Snakemake zu automatisieren.



Snakemake-Workflows ähneln dabei GNU-Make-Workflows: Sie definieren die Schritte des Workflows mit Regeln. Diese legen fest, was aufgenommen sowie ausgegeben wird – und welche Befehle ausgeführt werden müssen. Die Workflow-Regeln können multithreaded sein und Konfigurationsdaten lassen sich über JSON- oder YAML-Dateien einspielen. Sie können in Ihren Workflows außerdem auch Funktionen definieren, um die in den Regeln verwendeten Daten zu transformieren – und die bei jedem Schritt ausgeführten Aktionen zu protokollieren.



Snakemake-Jobs sind zudem portabel – sie können sowohl in Managed-Kubernetes- als auch bestimmten Cloud-Umgebungen bereitgestellt werden. Und:




Workloads lassen sich auch “einfrieren”, um einen bestimmten Satz von Packages zu verwenden,



für erfolgreich ausgeführte Workloads können automatisiert Unit-Tests erstellt und gespeichert werden – für eine langfristige Archivierung auch als Tarball.  




(fm)



Sie wollen weitere interessante Beiträge zu diversen Themen aus der IT-Welt lesen? Unsere kostenlosen Newsletter liefern Ihnen alles, was IT-Profis wissen sollten – direkt in Ihre Inbox!