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.
Respuestas:
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
fuente
De los pandas ( Página principal )
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
fuente
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.
fuente
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.
fuente
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.
fuente