Le riche écosystème d’outils de science des données de Python constitue un attrait majeur pour les utilisateurs. Le seul inconvénient d’une collection aussi vaste et approfondie est que parfois les meilleurs outils peuvent être négligés.
Voici un aperçu de certains des meilleurs projets de science des données, plus récents ou moins connus, disponibles pour Python. Certains, comme les Polars, reçoivent plus d’attention qu’auparavant mais méritent néanmoins une plus grande attention. D'autres, comme ConnectorX, sont des joyaux cachés.
ConnecteurX
La plupart des données se trouvent quelque part dans une base de données, mais le calcul s'effectue généralement en dehors d'une base de données. L'obtention de données vers et depuis la base de données pour le travail réel peut être un ralentissement. ConnectorX charge les données des bases de données dans de nombreux outils courants de gestion des données en Python, et accélère les choses en minimisant la quantité de travail à effectuer.
Comme Polars (dont je parlerai bientôt), ConnectorX utilise essentiellement une bibliothèque Rust. Cela permet des optimisations telles que la possibilité de charger à partir d'une source de données en parallèle avec le partitionnement. Les données dans PostgreSQL, par exemple, peuvent être chargées de cette façon en spécifiant une colonne de partition.
Outre PostgreSQL, ConnectorX prend également en charge la lecture depuis MySQL/MariaDB, SQLite, Amazon Redshift, Microsoft SQL Server et Azure SQL, ainsi qu'Oracle. Les résultats peuvent être canalisés vers un DataFrame Pandas ou PyArrow, ou vers Modin, Dask ou Polars via PyArrow.
CanardDB
Les spécialistes de la science des données qui utilisent Python doivent connaître SQLite, une base de données relationnelle petite, mais puissante et rapide, fournie avec Python. Puisqu'il fonctionne comme une bibliothèque intégrée au processus plutôt que comme une application distincte, il est léger et réactif.
DuckDB, c'est un peu comme si quelqu'un avait répondu à la question : « Et si nous créions SQLite pour OLAP ? » Comme les autres moteurs de base de données OLAP, il utilise une banque de données en colonnes et est optimisé pour les charges de travail de requêtes analytiques de longue durée. Mais il vous offre tout ce que vous attendez d’une base de données conventionnelle, comme les transactions ACID. Et il n'y a pas de suite logicielle distincte à configurer ; vous pouvez le faire fonctionner dans un environnement Python avec un seul pip install commande.
DuckDB peut directement ingérer des données au format CSV, JSON ou Parquet. Les bases de données résultantes peuvent également être partitionnées en plusieurs fichiers physiques pour plus d'efficacité, en fonction de clés (par exemple, par année et par mois). L'interrogation fonctionne comme n'importe quelle autre base de données relationnelle SQL, mais avec des fonctionnalités intégrées supplémentaires telles que la possibilité de prélever des échantillons aléatoires de données ou de construire des fonctions de fenêtre.
DuckDB dispose également d'une collection d'extensions petite mais utile, notamment la recherche en texte intégral, l'importation/exportation Excel, les connexions directes à SQLite et PostgreSQL, l'exportation de fichiers Parquet et la prise en charge de nombreux formats et types de données géospatiales courants.
Optimus
L'une des tâches les moins enviables auxquelles vous puissiez être confronté est le nettoyage et la préparation des données à utiliser dans un projet centré sur DataFrame. Optimus est un ensemble d'outils tout-en-un permettant de charger, d'explorer, de nettoyer et de réécrire des données dans diverses sources de données.
Optimus peut utiliser Pandas, Dask, CUDF (et Dask + CUDF), Vaex ou Spark comme moteur de données sous-jacent. Les données peuvent être chargées et enregistrées dans Arrow, Parquet, Excel, diverses sources de bases de données courantes ou dans des formats de fichiers plats tels que CSV et JSON.
L'API de manipulation de données ressemble à Pandas, mais ajoute .rows() et .cols() des accesseurs pour faciliter des tâches telles que trier un DataFrame, filtrer par valeurs de colonne, modifier les données selon des critères ou restreindre la gamme d'opérations en fonction de certains critères. Optimus est également livré avec des processeurs pour gérer les types de données courants du monde réel tels que les adresses e-mail et les URL.
Un problème possible avec Optimus est qu'il est toujours en développement actif, mais sa dernière version officielle remonte à 2020. Cela signifie qu'il n'est peut-être pas aussi à jour que les autres composants de votre pile.
Polaires
Si vous passez une grande partie de votre temps à travailler avec DataFrames et que vous êtes frustré par les limites de performances de Pandas, optez pour Polars. Cette bibliothèque DataFrame pour Python offre une syntaxe pratique similaire à Pandas.
Contrairement à Pandas, cependant, Polars utilise une bibliothèque écrite en Rust qui tire le meilleur parti de votre matériel dès le départ. Vous n'avez pas besoin d'utiliser une syntaxe spéciale pour profiter des fonctionnalités d'amélioration des performances telles que le traitement parallèle ou SIMD ; tout est automatique. Même les opérations simples comme la lecture d'un fichier CSV sont plus rapides.
Polars propose des modes d'exécution impatients et paresseux, de sorte que les requêtes peuvent être exécutées immédiatement ou différées jusqu'à ce que cela soit nécessaire. Il fournit également une API de streaming pour traiter les requêtes de manière incrémentielle, bien que le streaming ne soit pas encore disponible pour de nombreuses fonctions. Et les développeurs Rust peuvent créer leurs propres extensions Polars en utilisant pyo3.
Serpentfaire
Les workflows de science des données sont difficiles à mettre en place, et encore plus difficiles à mettre en œuvre de manière cohérente et prévisible. Snakemake a été créé pour automatiser le processus, en configurant des flux de travail d'analyse de données de manière à garantir que tout le monde obtienne les mêmes résultats. De nombreux projets de science des données existants s'appuient sur Snakemake. Plus vous avez de pièces mobiles dans votre flux de travail de science des données, plus vous aurez de chances de bénéficier de l'automatisation de ce flux de travail avec Snakemake.
Les flux de travail Snakemake ressemblent aux flux de travail GNU make : vous définissez les étapes du flux de travail avec des règles qui spécifient ce qu'ils entrent, ce qu'ils publient et quelles commandes exécuter pour y parvenir. Les règles de workflow peuvent être multithread (en supposant que cela leur apporte un avantage) et les données de configuration peuvent être transmises à partir de fichiers JSON ou YAML. Vous pouvez également définir des fonctions dans vos workflows pour transformer les données utilisées dans les règles et écrire les actions entreprises à chaque étape dans des journaux.
Les tâches Snakemake sont conçues pour être portables : elles peuvent être déployées sur n'importe quel environnement géré par Kubernetes ou dans des environnements cloud spécifiques comme Google Cloud Life Sciences ou Tibanna sur AWS. Les workflows peuvent être « gelés » pour utiliser un ensemble spécifique de packages, et les workflows exécutés avec succès peuvent avoir des tests unitaires automatiquement générés et stockés avec eux. Et pour un archivage à long terme, vous pouvez stocker le flux de travail sous forme d'archive tar.
Copyright © 2024 IDG Communications, Inc.



GIPHY App Key not set. Please check settings