- Les backends
pandasetdasksont abandonnés et seront supprimés dans la version 10.0 - Il n’y a plus de différence fonctionnelle entre le backend
pandaset le backend DuckDB par défaut, tandis que DuckDB offre des performances bien supérieures - Les DataFrame
pandaspeuvent toujours être utilisés dans Ibis comme format d’échange de données, mais l’exécution de requêtes avecpandasn’est plus prise en charge - L’essentiel de cette logique s’applique aussi au backend
dask, etdaskreste un excellent projet à continuer d’utiliser en dehors d’Ibis
Pourquoi pandas ? Et l’histoire d’Ibis
- Au début d’Ibis, seul le backend Impala existait
- Un backend Postgres a été ajouté, mais son installation était complexe, ce qui empêchait les utilisateurs d’essayer facilement Ibis
- Il fallait un moyen de tester l’API d’Ibis sans infrastructure supplémentaire en dehors d’un notebook
- À l’époque, connecter le backend
pandas, le seul moteur de DataFrame en mémoire disponible, était la réponse évidente
Les difficultés du backend Pandas
pandasétait alors le meilleur choix, mais il s’accordait mal avec le modèle d’analyse de données d’Ibis- Le backend
pandasest fondamentalement différent des autres backends et contient le plus grand nombre de traitements spécifiques pandasest essentiellement un moteur à exécution immédiate, tandis qu’Ibis utilise un modèle d’exécution différée- Il est difficile de faire fonctionner l’interface de
pandasselon une approche différée - Le backend
pandasest plus lent que les autres backends, tout en nécessitant des milliers de lignes de code - Le
NaNdepandaset leNULLd’Ibis sont des concepts fondamentalement différents, mais il faut malgré tout les traiter comme équivalents- Dans
pandas, NaN a été utilisé comme indicateur de valeur manquante, mais cela posait des problèmes de compatibilité avec les autres backends NULLreprésente une valeur manquante, tandis que NaN signifie qu’une valeur n’est pas un nombre : ce sont des concepts fondamentalement différents
- Dans
- Les nouveaux types de
pandasbasés sur Arrow constituent une amélioration majeure, mais des problèmes subsistent
Une source de confusion pour les nouveaux utilisateurs
- Les gens préfèrent ce qu’ils connaissent déjà
- Lors d’une première utilisation d’Ibis, il faut choisir à la fois Ibis et un backend
- Les nouveaux utilisateurs signalent souvent qu’« Ibis est lent »
- C’est en grande partie parce qu’ils utilisaient le backend
pandas - Avec DuckDB ou Polars, leurs débuts auraient probablement été bien plus simples
Équivalence fonctionnelle
- La raison la plus forte de supprimer le backend
pandasest sa redondance - Le backend DuckDB peut interroger sans friction des DataFrame
pandas, prend en charge plusieurs formes d’UDF et peut lire et écrire divers formats comme parquet, CSV, JSON, etc. - DuckDB est facile à installer, s’exécute en local, est extrêmement rapide et interagit bien avec l’écosystème Python
Le résumé de GN⁺
- Le choix d’adopter DuckDB comme backend par défaut semble très judicieux. Il est facile à installer, s’exécute en local, est très rapide et interagit bien avec l’écosystème Python. C’était d’ailleurs aussi la raison pour laquelle Ibis avait initialement ajouté
pandascomme backend - Le fait que
pandaspuisse toujours servir de format d’échange de données est une bonne nouvelle pour les utilisateurs existants depandas. Il n’est pas nécessaire d’abandonner entièrement le code existant - En revanche, ne plus utiliser
pandaspour exécuter les requêtes semble aller dans la bonne direction. Le modèle d’exécution immédiate depandasne correspond pas au modèle d’exécution différée d’Ibis. Pour cette raison, le backendpandasest souvent bien plus lent que l’utilisation directe depandas - À mesure qu’Ibis prend en charge toujours plus de backends, maintenir du code adapté à des backends spécifiques devient de plus en plus difficile. Supprimer le backend
pandasrendra la base de code plus propre et plus facile à maintenir - Si l’utilisation du backend DuckDB permet de remplacer toutes les fonctionnalités de
pandas, il ne semble plus y avoir de raison de conserver le backendpandas. Au contraire, cela peut semer la confusion chez les nouveaux utilisateurs
2 commentaires
En réalité, on utilise encore beaucoup le très familier pandas,,
Avis Hacker News
NaN est le résultat de 0/0, ce qui signifie qu’une valeur existe mais qu’on ne la connaît pas précisément
Nonede Python est différent de NaN et de NULLIl existe beaucoup de moteurs de calcul meilleurs que pandas
Depuis quelques mois, pandas est remplacé par ibis dans les nouveaux projets
La fonctionnalité de multi-index de pandas est sa plus grande force
Je me demande si Polars a été envisagé
pandas peut être étendu à de nouveaux types de colonnes
La valeur d’Ibis ne vient pas du fait qu’il permet d’utiliser DuckDB
Je n’ai pas beaucoup entendu parler d’Ibis
L’API de bibliothèque de pandas n’est pas toujours intuitive
Si pandas est utilisé, c’est grâce à son écosystème intégré