Ventajas del marco de datos de pandas para la base de datos relacional regular

13

En Data Science, muchos parecen estar usando marcos de datos de pandas como el almacén de datos. ¿Cuáles son las características de los pandas que lo convierten en un almacén de datos superior en comparación con las bases de datos relacionales normales como MySQL , que se utilizan para almacenar datos en muchos otros campos de programación?

Si bien los pandas proporcionan algunas funciones útiles para la exploración de datos, no puede usar SQL y pierde características como la optimización de consultas o la restricción de acceso.

Simon Böhm
fuente
55
pandas no es un almacén de datos. Apague su computadora y su marco de datos no estará allí. pandas es para munging en la memoria. Lo que significa que si no cabe en la memoria no funcionará. Pero tiene un hermano mayor llamado Spark, por lo que no es gran cosa. De hecho, el hermano mayor admite SQL y la optimización de consultas. Ver también pandas.pydata.org/pandas-docs/stable/comparison_with_sql.html
Emre

Respuestas:

8

Creo que la premisa de su pregunta tiene un problema. Pandas no es un "almacén de datos" como lo es un RDBMS. Pandas es una biblioteca de Python para manipular datos que caben en la memoria. Desventajas

  • Pandas no persiste los datos. Incluso tiene una función (lenta) llamada TO_SQL que persistirá su marco de datos de pandas en una tabla RDBMS.
  • Los pandas solo manejarán los resultados que quepan en la memoria, que es fácil de llenar. Puede usar dask para evitar eso, o puede trabajar en los datos en el RDBMS (que usa todo tipo de trucos como el espacio temporal) para operar en datos que exceden la RAM.
CalZ
fuente
2

De los pandas ( Página principal )

Biblioteca de análisis de datos de Python¶

pandas es una biblioteca de código abierto con licencia BSD que proporciona estructuras de datos y herramientas de análisis de datos de alto rendimiento y fáciles de usar para el lenguaje de programación Python.

Si bien los pandas ciertamente pueden acceder a los datos a través de SQL, o de varios otros métodos de almacenamiento de datos, su propósito principal es facilitar el uso de Python para el análisis de datos.

Con ese fin, pandas tiene varios métodos disponibles que permiten algunas operaciones de álgebra relacional que se pueden comparar con SQL.

También Pandas proporciona un fácil acceso a NumPy , que

es el paquete fundamental para la computación científica con Python. Contiene entre otras cosas:

  • un poderoso objeto de matriz N-dimensional
  • funciones sofisticadas (de transmisión)
  • herramientas para integrar código C / C ++ y Fortran
  • Álgebra lineal útil, transformada de Fourier y capacidades de números aleatorios
Stephen Rauch
fuente
2

Además de la respuesta aceptada:

Las bases de datos relacionales tienen una gran cantidad de bytes de sobrecarga por fila (ejemplo: esta pregunta ), que se utiliza para la contabilidad, para distinguir los valores nulos de los no nulos y garantizar estándares como ACID . Cada vez que lea / escriba una columna, no solo se leerán los pocos bytes que representan el valor de esta columna, sino que también se accederá a estos bytes de contabilidad y posiblemente se actualizarán.

En contraste, pandas (también R data.table) es más como un almacén de columnas en memoria. Una columna es solo una matriz de valores y puede usar operaciones vectorizadas rápidas / aprehensiones de listas que solo acceden a los valores que realmente necesita. Solo eso para las tablas con pocas columnas primitivas hace que las bases de datos relacionales sean muchas veces más lentas para muchos casos de uso de la ciencia de datos.

Valentas
fuente
2

Pandas es una herramienta de almacenamiento de datos en memoria. Esto le permite hacer cálculos muy rápidos sobre grandes cantidades de datos muy rápidamente.

SQL (generalmente) almacena datos de forma persistente y es una base de datos. También es posible ejecutar un db SQL en memoria que puede ser más rápido que usar pandas, como SQLite.

Enrique
fuente
0

SQL le permite persistir y hacer muchas transacciones de relación diferentes y siempre tenerlo disponible para múltiples usos diferentes. Esencialmente, una fuente de verdad o lugar a donde ir. Hay sobrecarga de seguro. Sin embargo, algunos análisis pueden ser muy complicados y requieren una cantidad significativa de operaciones basadas en conjuntos que pueden convertir incluso un pequeño conjunto de datos en uno muy rápido. He tenido procesos de datos que tienen más de 2000 consultas que procesan terabytes en menos de 5 minutos y puedo anotar miles de millones de registros para un modelo predictivo al final y python y numpy obtuvieron una fracción del conjunto de datos en 10 veces como un almacén de datos relacionales y servirlo hasta una capa de presentación.

Un punto adicional, si hace esto en la nube, asegúrese de tener una instancia dinámica que pueda escalar su memoria. Con SQL, se trata de tener un disco y un cálculo suficiente para hacerlo de manera oportuna.

Veo muchas formas en que pueden trabajar en sinergia. Muchos trabajos de ciencia de datos son para lo que Pandas fue diseñado para hacer. Algunos trabajos de ciencia de datos son para lo que los RDB fueron diseñados. Use ambos en equilibrio.

Se trata de la herramienta adecuada para hacer el trabajo correcto.

William komp
fuente