Skip to content

Cómo utilizar DuckDB y Pandas para el análisis de datos

Cuando se trata de análisis de datos, las herramientas que utilizas pueden marcar una gran diferencia. Ahí es donde entran DuckDB y Pandas. Estos dos han estado causando sensación en el mundo del análisis de datos, y por una buena razón. Este artículo trata sobre ponerte al día con estas herramientas, sus fortalezas, sus diferencias y cómo pueden trabajar juntas para potenciar tus tareas de análisis de datos.

¿Qué es DuckDB?

Comencemos con DuckDB. DuckDB es una base de datos analítica en memoria escrita en C++. Está diseñada para soportar consultas de SQL analíticas y tareas intensivas en datos. Pero aquí está el detalle: DuckDB es rápida. Quiero decir, realmente rápida. Está construida para ser una base de datos en memoria rápida, lo que la convierte en la opción principal para tareas que se deben realizar rápidamente.

Pero no se trata solo de velocidad. DuckDB también se trata de eficiencia. Está diseñada para ejecutar consultas complejas en conjuntos de datos grandes, lo cual es una gran ventaja si estás trabajando con una gran cantidad de datos. ¿Y la mejor parte? Se integra perfectamente con los DataFrames de Pandas, lo que te permite ejecutar estas consultas directamente sobre ellos. No es necesario mover datos de un lado a otro. ¿Qué tan genial es eso?

¿Qué es Pandas?

Ahora, hablemos de Pandas. Si te dedicas al análisis de datos, es probable que te hayas encontrado con Pandas. Es una biblioteca flexible de análisis de datos en Python que es amada por muchos por su simplicidad y potencia. Puede manejar una amplia gama de formatos y tamaños de datos, y en su mayor parte, es bastante intuitiva de usar.

Pero esto es lo interesante. Si estás familiarizado con SQL, sabrás lo poderoso que puede ser cuando se trata de manejar transformaciones de datos complejas. Y ahí es donde entra DuckDB. Al combinar la velocidad y eficiencia de DuckDB con la flexibilidad de Pandas, obtienes una herramienta poderosa para el análisis de datos que es difícil de superar.

¿Quieres crear visualizaciones de datos rápidamente desde un Dataframe de Pandas en Python sin código?

PyGWalker es una biblioteca de Python para el análisis exploratorio de datos con visualización. PyGWalker (opens in a new tab) puede simplificar tu flujo de trabajo de análisis y visualización de datos en Jupyter Notebook, convirtiendo tu dataframe de Pandas (y dataframe de polars) en una interfaz de usuario estilo Tableau para exploración visual.

PyGWalker para visualización de datos (opens in a new tab)

Comparando DuckDB y Pandas

Bien, hemos hablado de DuckDB y Pandas por separado. ¿Pero cómo se comparan entre sí? Descubrámoslo.

DuckDB vs Pandas

Cuando se trata de rendimiento, DuckDB tiene una clara ventaja. Es más rápido y utiliza menos memoria, lo cual es muy importante cuando se trabaja con conjuntos de datos grandes. Pero eso no es todo. DuckDB también brilla cuando se trata de capacidades de SQL. Te permite ejecutar consultas de SQL en DataFrames de Pandas, lo cual puede ser un cambio fundamental si te sientes más cómodo con SQL que con Python.

Por otro lado, Pandas no se queda atrás. Es increíblemente flexible y potente, capaz de manejar una amplia gama de formatos y tamaños de datos. Además, es bastante intuitivo de usar, lo cual siempre es una ventaja.

Pero aquí está la cosa: no tienes que elegir entre DuckDB y Pandas. De hecho, funcionan mejor cuando se usan juntos. Al combinar la velocidad y eficiencia de DuckDB con la flexibilidad de Pandas, obtienes una herramienta poderosa para el análisis de datos que es difícil de superar.

Pero no me creas solo a mí. Echemos un vistazo a algunos ejemplos.

Empezando con DuckDB y Pandas

Antes de adentrarnos en los ejemplos, hablemos de cómo puedes comenzar a utilizar DuckDB y Pandas. No te preocupes, es bastante sencillo.

Guía de instalación

Lo primero, necesitarás instalar DuckDB y Pandas. Si estás utilizando Python, puedes hacerlo usando pip, el instalador de paquetes de Python. Así es cómo puedes hacerlo:

pip install duckdb pandas

¡Eso es todo! Ahora tienes DuckDB y Pandas instalados y listos para usar.

Configuración de DuckDB con Pandas

Una vez que hayas instalado DuckDB y Pandas, puedes empezar a utilizarlos juntos. El primer paso es importar las bibliotecas en tu script de Python o notebook de Jupyter. Así es cómo puedes hacerlo:

import duckdb
import pandas as pd

Con estas líneas de código, le estás diciendo a Python que quieres utilizar las bibliotecas DuckDB y Pandas en tu script o notebook.

Utilizando DuckDB para consultar DataFrames de Pandas

Ahora que has configurado DuckDB y Pandas, hablemos de cómo puedes utilizar DuckDB para consultar DataFrames de Pandas. Aquí es donde sucede la magia.

Consultas SQL básicas en DataFrames

Con DuckDB, puedes ejecutar consultas de SQL directamente en DataFrames de Pandas. Esto significa que puedes utilizar la potencia y familiaridad de SQL para manipular y analizar tus datos. Aquí tienes un ejemplo:

# Crea un DataFrame de Pandas
df = pd.DataFrame({
   'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
   'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
   'C': np.random.randn(8),
   'D': np.random.randn(8)
})
 
# Utiliza DuckDB para ejecutar una consulta de SQL en el DataFrame
result = duckdb.query("SELECT A, AVG(D) FROM df GROUP BY A").to_df()

En este ejemplo, estamos creando un DataFrame de Pandas y luego utilizando DuckDB para ejecutar una consulta de SQL en él. La consulta está calculando el promedio de la columna 'D' para cada valor único en la columna 'A'. El resultado es otro DataFrame con los resultados de la consulta.

Operaciones SQL avanzadas con DuckDB

Pero DuckDB no solo es para consultas SQL básicas. También puedes usarlo para operaciones más avanzadas, como joins, funciones de ventana e incluso operaciones de aprendizaje automático. Aquí tienes un ejemplo de una operación de join:

# Crear dos DataFrames de Pandas
df1 = pd.DataFrame({
   'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
   'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
   'C': np.random.randn(8),
   'D': np.random.randn(8)
})
 
df2 = pd.DataFrame({
   'A': ['foo', 'bar', 'baz', 'bat'],
   'E': ['apple', 'orange', 'banana', 'grape']
})
 
# Utilizar DuckDB para realizar una operación de join en los DataFrames
result = duckdb.query("SELECT df1.A, df1.B, df2.E FROM df1 JOIN df2 ON df1.A = df2.A").to_df()

En este ejemplo, estamos creando dos DataFrames de Pandas y luego utilizando DuckDB para realizar una operación de join en ellos. El resultado es un nuevo DataFrame con los datos unidos.

¿Quieres crear rápida y fácilmente visualizaciones de datos a partir de un DataFrame de Pandas sin código?

PyGWalker es una biblioteca de Python para el análisis exploratorio de datos con visualización. PyGWalker (opens in a new tab) puede simplificar tu flujo de trabajo de análisis y visualización de datos en Jupyter Notebook, convirtiendo tu DataFrame de pandas (y DataFrame de polars) en una interfaz de usuario de estilo Tableau para exploración visual.

PyGWalker para visualización de datos (opens in a new tab)

Conclusión

Y eso es solo la punta del iceberg. Con DuckDB y Pandas, puedes potenciar tus tareas de análisis de datos, haciéndolas más rápidas, eficientes e intuitivas. ¿Por qué no probarlo? Podrías descubrir que es el dúo dinámico que estabas buscando.

Preguntas frecuentes

¿Es DuckDB más rápido que Pandas?

Sí, DuckDB generalmente es más rápido que Pandas cuando se trata de ejecutar consultas SQL en conjuntos de datos grandes. Esto se debe a que DuckDB es una base de datos analítica en memoria diseñada para velocidad y eficiencia. Sin embargo, el rendimiento real puede depender de la tarea específica y del tamaño del conjunto de datos.

¿Cuál es la diferencia entre DuckDB y Polars?

DuckDB y Polars son dos herramientas utilizadas para el análisis de datos, pero tienen algunas diferencias clave. DuckDB es una base de datos analítica en memoria que destaca en la ejecución de consultas SQL en conjuntos de datos grandes. Por otro lado, Polars es una biblioteca de DataFrame implementada en Rust y Python que está diseñada para ser rápida y flexible. Mientras que DuckDB se centra en proporcionar capacidades de SQL, Polars proporciona una API de DataFrame similar a la de Pandas.

¿DuckDB es multihilo?

Sí, DuckDB es multihilo. Utiliza múltiples hilos para ejecutar consultas, lo que puede llevar a mejoras significativas en el rendimiento en sistemas multinúcleo. Esta es una de las razones por las que DuckDB puede ser más rápido que otras herramientas de análisis de datos para ciertas tareas.

¿SQLite es más rápido que Pandas?

SQLite y Pandas tienen propósitos diferentes y su rendimiento puede variar según la tarea. SQLite es un motor de base de datos optimizado para el almacenamiento y recuperación de datos, mientras que Pandas es una biblioteca de análisis de datos que sobresale en la manipulación y transformación de datos. Para tareas que involucran consultas SQL complejas, SQLite puede ser más rápido. Sin embargo, para tareas que implican manipulación de datos complejos, Pandas puede ser más rápido. Cuando se utilizan juntos, pueden proporcionar una herramienta potente para el análisis de datos.