Avantages de la base de données pandas par rapport à une base de données relationnelle régulière

13

En science des données, beaucoup semblent utiliser des cadres de données pandas comme magasin de données. Quelles sont les caractéristiques des pandas qui en font une banque de données supérieure par rapport aux bases de données relationnelles régulières comme MySQL , qui sont utilisées pour stocker des données dans de nombreux autres domaines de programmation?

Bien que les pandas fournissent des fonctions utiles pour l'exploration des données, vous ne pouvez pas utiliser SQL et vous perdez des fonctionnalités telles que l'optimisation des requêtes ou la restriction d'accès.

Simon Böhm
la source
5
pandas n'est pas un magasin de données. Éteignez votre ordinateur et votre dataframe ne sera plus là. les pandas sont destinés à la mémoire en mémoire. Ce qui signifie que s'il ne tient pas en mémoire, il ne fonctionnera pas. Mais il a un grand frère appelé Spark, ce n'est donc pas un gros problème. Le grand frère prend en charge en fait SQL et l'optimisation des requêtes. Voir aussi pandas.pydata.org/pandas-docs/stable/comparison_with_sql.html
Emre

Réponses:

8

Je pense que la prémisse de votre question a un problème. Pandas n'est pas une «banque de données» à la manière d'un SGBDR. Pandas est une bibliothèque Python pour manipuler des données qui tiendront en mémoire. Désavantages:

  • Pandas ne conserve pas les données. Il a même une fonction (lente) appelée TO_SQL qui conservera votre trame de données pandas dans une table RDBMS.
  • Les pandas ne géreront que les résultats qui tiennent en mémoire, ce qui est facile à remplir. Vous pouvez soit utiliser dask pour contourner cela, soit travailler sur les données du SGBDR (qui utilise toutes sortes de trucs comme l'espace temporaire) pour opérer sur les données qui dépassent la RAM.
CalZ
la source
2

Des pandas ( Page principale )

Bibliothèque d'analyse de données Python¶

pandas est une bibliothèque open source sous licence BSD qui fournit des structures de données hautes performances et faciles à utiliser ainsi que des outils d'analyse de données pour le langage de programmation Python.

Bien que les pandas puissent certainement accéder aux données via SQL ou à partir de plusieurs autres méthodes de stockage de données, son objectif principal est de faciliter l'utilisation de Python pour effectuer l'analyse des données.

À cette fin, pandas dispose de diverses méthodes qui permettent certaines opérations d' algèbre relationnelle qui peuvent être comparées à SQL.

Pandas offre également un accès facile à NumPy , qui

est le package fondamental pour le calcul scientifique avec Python. Il contient entre autres:

  • un puissant objet tableau N-dimensionnel
  • fonctions sophistiquées (diffusion)
  • outils d'intégration de code C / C ++ et Fortran
  • algèbre linéaire utile, transformée de Fourier et capacités de nombres aléatoires
Stephen Rauch
la source
2

En plus de la réponse acceptée:

Les bases de données relationnelles ont un grand nombre d'octets de surcharge par ligne (exemple: cette question ), qui est utilisé pour la comptabilité, différenciant les valeurs nulles des valeurs non nulles, garantissant des normes telles que ACID . Chaque fois que vous lisez / écrivez une colonne, non seulement les quelques octets représentant la valeur de cette colonne seront lus, mais également ces octets de comptabilité seront accessibles et éventuellement mis à jour.

En revanche, pandas (également R data.table) ressemble plus à un magasin de colonnes en mémoire. Une colonne n'est qu'un tableau de valeurs et vous pouvez utiliser des opérations vectorisées / listes d'appréhensions rapides qui n'accèdent qu'aux valeurs dont vous avez vraiment besoin. Le fait que pour les tables avec peu de colonnes primitives rend les bases de données relationnelles plusieurs fois plus lentes pour de nombreux cas d'utilisation de la science des données.

Valentas
la source
2

Pandas est un outil de stockage de données en mémoire. Cela vous permet de faire des calculs très rapides sur de grandes quantités de données très rapidement.

SQL (généralement) stocke de manière persistante les données et est une base de données. Il est également possible d'exécuter une base de données SQL en mémoire qui peut être plus rapide que d'utiliser des pandas, tels que SQLite.

Henri
la source
0

SQL vous permet de persister et d'effectuer de nombreuses transactions de relation différentes et de toujours l'avoir facilement disponible pour plusieurs utilisations différentes. Essentiellement une source de vérité ou un endroit où aller. Il y a sûrement de la tête. Cependant, certaines analyses peuvent être très compliquées et nécessitent une quantité importante d'opérations basées sur des ensembles qui peuvent transformer même un petit ensemble de données en un grand très rapidement. J'ai eu des processus de données qui ont plus de 2000 requêtes qui traitent des téraoctets en moins de 5 minutes et peuvent marquer des milliards d'enregistrements pour un modèle prédictif à la fin et python et numpy ont marqué une fraction de l'ensemble de données en 10 fois en tant que magasin de données relationnelles et servir jusqu'à une couche de présentation.

Un point supplémentaire, si vous faites cela dans le cloud, assurez-vous que vous disposez d'une instance dynamique qui peut mettre à l'échelle sa mémoire. Avec SQL, il s'agit d'avoir un disque et suffisamment de calcul pour le faire en temps opportun.

Je vois de nombreuses façons de travailler en synergie. De nombreux emplois en science des données sont ce pour quoi Pandas a été conçu. Certains emplois en science des données sont ce que les RDB ont été conçus pour faire. Utilisez les deux en équilibre.

Il s'agit du bon outil pour faire le bon travail.

William komp
la source