Pandas vs Polars vs Dask, en gráficos en vivo
Tres bibliotecas de dataframes de Python, tres gráficos Chart.js en vivo: un bubble chart para el ecosistema, un bubble chart scriptable cuyo color sale del valor y no de la biblioteca, y un gráfico de líneas con animación progresiva para la adopción. Sin capturas de pantalla – el canvas de arriba lo renderiza su navegador.
Quería una página que mostrara de verdad la diferencia entre pandas, Polars y Dask, en lugar de limitarse a decir que Polars es «rápido». Los tres gráficos de arriba son Chart.js, ejecutándose en el cliente, sobre un conjunto de datos fijo que elegí a mano – no una plantilla genérica con números de relleno. Las estadísticas del ecosistema como bubble chart. Un benchmark como bubble chart scriptable, donde el color se calcula a partir del valor en lugar de fijarse por biblioteca. Una curva de adopción que se dibuja progresivamente, de izquierda a derecha, tal como se desplegó el crecimiento real año tras año.
Tres bibliotecas, un solo trabajo – datos tabulares en Python – y tres compensaciones muy distintas entre rendimiento, memoria y cuánto de su código pandas actual sobrevive al cambio. Las cifras de abajo están redondeadas, fechadas en septiembre de 2026, y el benchmark es ilustrativo, no una ejecución que haya reproducido exactamente en esta página. Prefiero repetirlo una vez de más que dejar que un gráfico sugiera más precisión de la que tiene.
1. Por qué solo tres bibliotecas se reparten las burbujas
Los bubble charts y los diagramas de dispersión son el único tipo de gráfico donde cualquier marca puede acabar justo al lado de cualquier otra, así que una paleta categórica tiene que sobrevivir a cada par posible, no solo a los vecinos en una leyenda. Al pasar esa comprobación «todos los pares» sobre mi juego habitual de ocho tonos, solo las tres primeras superan la prueba, tanto en modo claro como oscuro, para una lectora daltónica. No es una cuestión de gusto: es la razón real por la que el gráfico de ecosistema de arriba compara exactamente pandas, Polars y Dask, en vez de cinco bibliotecas en cinco colores turbios. PySpark y Modin se llevan un párrafo más abajo en vez de una burbuja.
pandas sigue ganando en descargas por un orden de magnitud, justo lo que cabría esperar de un estándar de quince años con miles de integraciones. Lo más interesante es lo cerca que ha llegado Polars de Dask en estrellas de GitHub con más o menos una décima parte de los contribuidores: un equipo pequeño y enfocado que reescribe el motor desde cero en lugar de extender una API existente puede, al parecer, adelantar a uno mucho más grande.
2. Color scriptable, no color de identidad
El gráfico de rendimiento ejecuta un groupby con agregación sobre un CSV en dos tamaños – 2 GB, que cabe cómodamente en memoria, y 20 GB, al límite de un portátil típico. Chart.js permite definir elements.point.radius y backgroundColor como funciones en lugar de valores fijos, que es justo lo que muestra el propio ejemplo de opciones scriptables de Chart.js. Aquí lo usé para algo con sentido real: el color se calcula directamente a partir del tiempo de ejecución en segundos – rápido, moderado, lento – sin fijarse por biblioteca, así que el mismo verde puede pertenecer a Polars con 2 GB o a Dask con 20 GB. El radio de la burbuja sale del pico de RAM, en escala de raíz cuadrada, para que sea el área, y no el radio bruto, la que siga la memoria de forma aproximadamente lineal.
A 2 GB, Dask pierde incluso frente a pandas normal – construir un grafo de tareas tiene un coste que solo se amortiza cuando hay suficiente trabajo que repartir. A 20 GB el panorama se invierte: pandas monohilo, copiando datos en memoria, se degrada más; Polars, sobre Rust con SIMD y ejecución en streaming, se mantiene en la franja «moderada»; Dask, dividiendo el archivo en trozos, mantiene la memoria bajo control y cierra la mayor parte de la diferencia de tiempo con Polars.
3. Líneas progresivas, y qué elegiría de verdad
El gráfico de crecimiento sigue las descargas semanales estimadas de PyPI de 2019 a 2026 para las mismas tres bibliotecas, y se anima como el propio ejemplo progressive-line de Chart.js: cada punto recibe su propio retraso según su índice, de modo que la línea se dibuja sola de izquierda a derecha en lugar de simplemente aparecer con un fundido. Es un eco deliberado del tema, no una decoración: la adopción real también se desplegó año a año. pandas se está estabilizando, que es el aspecto de un estándar maduro de quince años, no el de una biblioteca que pierde terreno. Polars, lanzado en 2020, muestra la curva de libro de texto del arranque tardío: apenas visible al principio, y luego un giro brusco cuando gente fuera de la burbuja de entusiastas de Rust empezó a escribir sobre su velocidad.
Entonces, ¿qué elegiría de verdad? pandas cuando el ecosistema y la memoria muscular del equipo pesan más que los segundos en bruto. Polars para un pipeline nuevo en una sola máquina potente, donde la memoria y la CPU cuestan dinero de verdad. Dask cuando los datos directamente dejan de caber en una sola máquina y se prefiere conservar código con forma de pandas en lugar de reescribirlo en PySpark. PySpark y Modin quedan un paso más allá: PySpark cuando ya se está firmemente en territorio de clústeres o Spark ya sostiene la infraestructura, Modin cuando el objetivo honesto es una aceleración paralela con un cambio de import de una línea y ninguna gana de reescribir.
- pandas – datos de hasta unos pocos GB, máximo ecosistema, un equipo que ya domina la API de memoria.
- Polars – una sola máquina potente, un pipeline nuevo sin código legacy que arrastrar, memoria y CPU que de verdad cuestan dinero.
- Dask – datos que ya no caben en una sola máquina, una API con forma de pandas que no se quiere abandonar, un clúster que existe o está por llegar.
- PySpark o Modin – un paso más allá: PySpark cuando ya se está firmemente en territorio de clústeres, Modin para un cambio de import de una línea cuando reescribir no es una opción.
Sobre las cifras
Las estrellas de GitHub y las descargas semanales de PyPI son estimaciones redondeadas a septiembre de 2026, tomadas de rastreadores públicos como pepy.tech y de los propios repositorios de cada proyecto. Las cifras del benchmark reproducen la forma típica de las comparativas públicas de groupby, no una ejecución que haya hecho para esta página exacta – los segundos reales dependen del hardware, las versiones y la forma de sus datos. Los tres gráficos están construidos sobre Chart.js: un bubble chart, un bubble chart scriptable y una animación progressive-line, los mismos tres patrones de ejemplo que Chart.js incluye en su propia documentación.
¿Hablamos de tu proyecto?
Soy ingeniera web senior, especializada en React y Next.js - disponible para proyectos freelance en cualquier país.
Ubicación
Kyiv, Ucrania
Upwork
Ver perfilTelegram
ContáctameViber
Contáctame