La vraie première question est de savoir pourquoi les utilisateurs sont plus productifs avec les abstractions DataFrame que les abstractions SQL pures.
TLDR; SQL n'est pas axé sur le processus de développement (humain) et de débogage, contrairement aux DataFrames.
La raison principale est que les abstractions DataFrame vous permettent de construire des instructions SQL tout en évitant les imbrications verbeuses et illisibles. Le modèle d'écriture de routines imbriquées, de commentaire pour vérification, puis de suppression de commentaire est remplacé par une seule ligne de transformation. Vous pouvez naturellement exécuter les choses ligne par ligne dans une réplique (même dans Spark) et afficher les résultats.
Prenons l'exemple de l'ajout d'une nouvelle colonne transformée (chaîne tronquée) à une table, puis de la regrouper par celle-ci et de procéder à des agrégations. Le SQL devient assez moche. Les pandas peuvent résoudre ce problème, mais il manque certaines choses lorsqu'il s'agit de véritables données massives ou de partitions particulières (peut-être améliorées récemment).
Les DataFrames doivent être considérées comme une API de haut niveau pour les routines SQL, même si avec les pandas, elles ne sont pas du tout rendues à un planificateur SQL.
-
Vous pouvez probablement avoir de nombreuses discussions techniques à ce sujet, mais je considère le point de vue de l'utilisateur ci-dessous.
Une raison simple pour laquelle vous pouvez voir beaucoup plus de questions sur la manipulation de données Pandas par opposition à SQL est que, par définition, utiliser SQL signifie utiliser une base de données, et de nombreux cas d'utilisation de nos jours nécessitent tout simplement des bits de données pour ' tâches ponctuelles (à partir de .csv, web api, etc.). Dans ces cas, le chargement, le stockage, la manipulation et l'extraction d'une base de données ne sont pas viables.
Cependant, dans les cas où le cas d'utilisation peut justifier l'utilisation de Pandas ou de SQL, vous n'avez certainement pas tort. Si vous souhaitez effectuer de nombreuses tâches de manipulation de données répétitives et conserver les sorties, je vous recommande toujours d'essayer d'abord d'utiliser SQL. D'après ce que j'ai vu, la raison pour laquelle de nombreux utilisateurs, même dans ces cas-là, n'utilisent pas SQL est double.
Premièrement, le principal avantage des pandas par rapport à SQL est qu’ils font partie de l’univers plus large de Python, ce qui signifie que je peux charger, nettoyer, manipuler et visualiser mes données en un seul coup (je peux même exécuter SQL par le biais de Pandas ...). L’autre est tout simplement que trop d’utilisateurs ne connaissent pas l’étendue des capacités de SQL. Chaque débutant apprend la «syntaxe d'extraction» de SQL (SELECT, FROM, WHERE, etc.) comme moyen de transférer vos données d'une base de données vers le prochain emplacement. Certains peuvent choisir une syntaxe de groupement et d'itération plus avancée. Mais après cela, il y a un fossé assez important dans la connaissance, jusqu’à ce que vous arriviez aux experts (DBA, ingénieurs de données, etc.).
tl; dr: Cela dépend souvent du cas d'utilisation, de la commodité ou du manque de connaissances sur l'étendue des capacités de SQL.