Qué ocurrió
Bibliotecas de dataframes · Python · Ingeniería de rendimiento · Evaluación comparativa · Informe comparativoDatos hasta el 23 sep 2026
Las dos grandes bibliotecas de dataframes de Python, tal como están en septiembre de 2026
Polars y pandas: cuál conviene para cada trabajo
pandas es de código abierto desde 2009 y sigue siendo la biblioteca de tablas más descargada de Python. Polars, con su primer commit en junio de 2020 y escrita en Rust sobre el formato de memoria Apache Arrow, se creó para ser más rápida. Ambas cambiaron en 2026. pandas 3.0 activó por defecto un tipo de cadena dedicado y Copy-on-Write. Polars 2.0, ya en su segunda versión candidata, hace del motor de streaming el predeterminado y deja de garantizar el orden de las filas para lograrlo. La diferencia de velocidad es real y grande en trabajo analítico de gran tamaño. Lo que falta es una medición publicada de las dos tal como son hoy.
- 3.0.6pandas actual, publicada el 17 de septiembre de 2026; la serie 3.0 empezó el 21 de enero
- 1.44.2Polars actual, publicada el 9 de septiembre de 2026; la 2.0 va por su segunda versión candidata
- 94×ventaja de Polars sobre pandas 2.2.3 con unos 10 GB, en la prueba de la propia Polars de junio de 2025
- 10×ventaja de pandas en descargas de PyPI el último mes: 525.5 millones frente a 51.6 millones
Clasificado según la solidez de cada elemento Ordenado por solidez. Lo medido, lo que una empresa dice de sí misma y lo que solo se promete nunca comparten fila.
| Solidez | Qué consta | Dónde |
|---|---|---|
| Confirmado | Versiones actuales: pandas 3.0.6 (17 de septiembre de 2026) y Polars 1.44.2 (9 de septiembre de 2026). Polars 2.0.0rc1 salió el 2 de septiembre y la rc2 el 20 de septiembre. pandas requiere Python 3.11 o posterior; Polars, 3.10 o posterior | El índice de paquetes de Python (PyPI) |
| Confirmado | pandas 3.0 activó un tipo de cadena dedicado, respaldado por PyArrow cuando está instalado; hizo de Copy-on-Write el comportamiento por defecto, de modo que la asignación encadenada deja de funcionar y SettingWithCopyWarning desaparece; añadió una primera forma de expresiones pd.col(); y ahora interpreta por defecto las fechas en texto con resolución de microsegundos | Notas de la versión de pandas |
| Confirmado | Polars 2.0 ejecuta por defecto todas las consultas diferidas en el motor de streaming. Ese motor no garantiza el orden de las filas en uniones, agrupaciones y unpivot salvo que se pida con maintain_order. También rechaza conversiones de tipo con pérdida y concatenaciones descuadradas que antes dejaba pasar | El anuncio de Polars 2.0 |
| Confirmado | Polars no tiene índice de filas, guarda los datos en el formato columnar Apache Arrow en lugar de en arrays de NumPy, ejecuta más operaciones en paralelo y puede planificar y optimizar una consulta diferida antes de ejecutarla | La guía de Polars para usuarios de pandas |
| Medido | Con un factor de escala 10, unos 10 GB de CSV, el motor de streaming de Polars completó el conjunto de consultas en 3.89 segundos y pandas 2.2.3 en 365.71. Con unos 100 GB no se ejecutó pandas: se quedaba sin memoria | La prueba PDS-H de la propia Polars, junio de 2025 |
| Medido | Con dataframes grandes, Polars usó alrededor de una octava parte de la energía de pandas en tareas sintéticas y el 63% en tareas TPC-H. Con dataframes pequeños, las tareas TPC-H no mostraron diferencias significativas. Versiones probadas: pandas 2.1.1 y Polars 0.19.7 | Nahrstedt y otros, EASE 2024, revisado por pares |
| Afirmación de la empresa, no verificable aquí | La adopción pasó “de 250 000 a más de 23 millones de usuarios mensuales” tras la ronda semilla de 2023, y la biblioteca principal se usa en producción en finanzas, ciencias de la vida y logística | Polars; TechCrunch, citando a Polars |
| Afirmación de la empresa, no verificable aquí | “En conjunto esperamos que el motor de streaming sea fácilmente 5 veces más rápido”: una previsión del anuncio de la 2.0, no una medición | El anuncio de Polars 2.0 |
| Prometido, aún no publicado | “Soporte out-of-core de verdad para el motor de streaming”, es decir, trabajo fiable con datos mayores que la memoria, además de un planificador basado en costes y reordenación de uniones. Todo figura como aún en curso | El anuncio de Polars 2.0 |
| Prometido, aún no publicado | Polars 2.0 definitiva, prevista “en las próximas semanas” tras el 2 de septiembre. No había salido a 23 de septiembre | El anuncio de Polars 2.0; PyPI |
Cronología
De 2008 a septiembre de 2026 Todas las mediciones de velocidad y energía de abajo son anteriores a pandas 3.0. Ninguna compara las versiones actuales de ambas.
- 2008Empieza el desarrollo de pandas en AQR Capital Management, a cargo de Wes McKinney
- 2009pandas se publica como código abierto antes de fin de año; la versión 0.1 llega a PyPI el 25 de diciembre
- 2015pandas pasa a ser un proyecto patrocinado por NumFOCUS
- 21 sep 2017McKinney escribe que su regla práctica para pandas es tener de 5 a 10 veces más RAM que el conjunto de datos
- 23 jun 2020Ritchie Vink hace el primer commit de Polars
- 3 ago 2023Vink y Chiel Peters anuncian una empresa Polars, con una ronda semilla de unos 4 millones de dólares liderada por Bain Capital Ventures; la biblioteca sigue bajo licencia MIT
- 18 ene 2024scikit-learn 1.4 permite que sus transformadores devuelvan dataframes de Polars
- 18 jun 2024Un equipo de la Vrije Universiteit Amsterdam presenta en EASE 2024 su estudio de energía y rendimiento de pandas 2.1.1 y Polars 0.19.7
- 1 jul 2024Polars 1.0.0
- 17 sep 2024El motor GPU de Polars, hecho con NVIDIA sobre RAPIDS cuDF, se abre en beta
- 1 jun 2025Polars publica resultados PDS-H de Polars 1.30.0 frente a pandas 2.2.3, DuckDB, Dask y PySpark
- 29 sep 2025Polars cierra una serie A de 18 millones de euros liderada por Accel, unos 21 millones de dólares, con la vuelta de Bain Capital
- 21 ene 2026pandas 3.0.0: tipo de cadena y Copy-on-Write activados por defecto, primeras expresiones
pd.col(), Python 3.11 como mínimo - 2 sep 2026Polars 2.0.0rc1, con el motor de streaming como predeterminado para las consultas diferidas
- 9 sep 2026Polars 1.44.2, la versión estable actual
- 17 sep 2026pandas 3.0.6, la versión estable actual
- 20 sep 2026Polars 2.0.0rc2. Aún no hay 2.0 definitiva
El argumento
Mucho más rápida en trabajo grande, y medida con versiones ya superadas El argumento a favor de Polars tal como lo midieron sus creadores, y luego las dos cosas que lo matizan.
El argumento de Polars es de arquitectura, y su propia prueba le pone cifra. pandas ejecuta cada paso en cuanto se escribe, en un núcleo y sin optimizador. Polars puede tomar la consulta entera, optimizarla antes de ejecutarla y repartirla entre todos los núcleos. En la prueba PDS-H de Polars de junio de 2025, en una máquina de 96 núcleos, eso supuso 365.71 segundos frente a 3.89 con unos 10 GB. Polars dice que dejó fuera a pandas con unos 100 GB porque se quedaba sin memoria. La misma prueba muestra dos cosas que conviene retener. DuckDB, un tercer motor, quedó cerca de Polars a 10 GB y lo superó a 100 GB. Y el antiguo motor en memoria de Polars se frenó mucho a ese tamaño, que es por lo que la 2.0 hace del streaming el predeterminado.
- 3.89 sPolars en streaming, unos 10 GB, todo el conjunto
- 365.71 spandas 2.2.3, mismas consultas, misma máquina
| Motor, en la prueba PDS-H de Polars de junio de 2025 | Unos 10 GB, segundos | Unos 100 GB, segundos |
|---|---|---|
| Polars 1.30.0, streaming | 3.89 | 23.94 |
| DuckDB 1.3.0 | 5.87 | 19.65 |
| Polars 1.30.0, in-memory | 9.68 | 152.27 |
| Dask 2025.5.1 | 46.02 | 548.52 |
| PySpark 4.0.0 | 120.11 | 312.43 |
| pandas 2.2.3 | 365.71 | no ejecutado: sin memoria |
Hay dos matices. El primero es el tamaño. La única comparación revisada por pares, de un equipo de la Vrije Universiteit Amsterdam en EASE 2024, ejecutó tareas TPC-H del mismo tipo con 6 millones de filas y no halló diferencias significativas de energía; los autores señalan una ligera ventaja de pandas. Con 60 millones de filas, y en sus propias tareas sintéticas, Polars iba claramente por delante. El segundo es la antigüedad, y es una lectura de este artículo, no de una fuente. El pandas más reciente de cualquier medición aquí es el 2.2.3, de septiembre de 2024. El estudio usó pandas 2.1.1 y Polars 0.19.7. Las cadenas respaldadas por Arrow y el Copy-on-Write de pandas 3.0 llegaron después de todas ellas, igual que catorce versiones menores de Polars, de la 1.31 a la 1.44. Es muy probable que la diferencia siga siendo grande en trabajo grande. Cuánto, con las versiones actuales, nadie aquí lo ha medido.
- 6Mfilas: sin diferencia significativa en tareas TPC-H en el estudio revisado por pares
- 2.2.3el pandas más reciente que se ha medido aquí; la versión actual es la 3.0.6
Mientras tanto, las dos se han acercado, y los costes se han desplazado con ellas. También esto es una lectura de este artículo. pandas 3.0 adoptó cadenas respaldadas por Arrow, semántica de copia en escritura y la primera sintaxis de expresiones, ideas en torno a las que se construyó Polars. Polars 2.0 va en sentido contrario en una garantía que los usuarios de pandas dan por hecha: con el nuevo comportamiento por defecto, una unión o agrupación ya no promete conservar el orden original de las filas. Polars considera el cambio necesario para la velocidad del streaming y pide a quien dependa del orden que lo solicite con maintain_order. El código trasladado de una a otra, o actualizado dentro de Polars, puede cambiar su resultado sin lanzar ningún error.
Lo que añaden otros
Memoria, energía, GPU y usar ambas Del creador de la biblioteca, los autores del estudio, NVIDIA y los proyectos que rodean a ambas.
Memoria
Una regla práctica y una hoja de ruta
- El creador de pandas escribió en 2017 que su regla práctica era de 5 a 10 veces más RAM que el conjunto de datos: uno de 10 GB pide entre 64 y 128 GB
- Esa regla es más de ocho años anterior a pandas 3.0. No se encontró en ninguna fuente primaria una cifra comparable para Polars
- Polars sitúa el “soporte out-of-core de verdad”, el trabajo fiable más allá de la RAM, entre lo que aún está por llegar en la 2.x
Energía
Un estudio controlado
- 28 tareas, 10 repeticiones cada una en orden aleatorio, 560 ejecuciones, en un servidor aislado
- Dataframes grandes: Polars usó alrededor de una octava parte de la energía de pandas en tareas sintéticas y el 63% en tareas TPC-H
- La energía siguió de cerca al tiempo de ejecución, y los autores lo atribuyen a que Polars usa todos los núcleos
GPU
Hasta 13 veces, en el mejor caso
- Un motor opcional sobre cuDF de NVIDIA, activado con
collect(engine="gpu"); las consultas que no puede ejecutar vuelven a la CPU - El “hasta 13 veces” es la mejor de las cuatro mayores aceleraciones que NVIDIA representó, de 22 consultas PDS-H con factor de escala 80, en una H100
- Publicado como beta abierta en septiembre de 2024; su estado actual no se ha establecido aquí
- Un motor opcional sobre cuDF de NVIDIA, activado con
Juntas
Menos excluyentes
- Desde la 1.4, en enero de 2024, los transformadores de scikit-learn pueden devolver dataframes de Polars con
set_output(transform="polars") - Narwhals, una capa de compatibilidad sin dependencias, permite que una biblioteca escrita con un subconjunto de la API de Polars acepte pandas, Polars, cuDF, Modin o PyArrow
- También ofrece soporte solo diferido para Dask, DuckDB, Ibis, PySpark y SQLFrame
- Desde la 1.4, en enero de 2024, los transformadores de scikit-learn pueden devolver dataframes de Polars con
Adopción
A un orden de magnitud
- Descargas del último mes: pandas 525 518 404 y Polars 51 587 659, una proporción de 10.2
- Las descargas cuentan instalaciones, incluidas todas las compilaciones automáticas, no personas
- En agosto de 2023 Polars declaró más de 6 millones de descargas en total; en septiembre de 2025, más de 23 millones de usuarios mensuales
El peso que soporta la prueba principal depende de quién la hizo, así que sus condiciones importan. PDS-H es una derivación de TPC-H de la propia Polars, y Polars advierte que sus resultados no son comparables con los resultados publicados de TPC-H. Sus reglas prohíben podar a mano una tabla antes de una unión y reordenar uniones a mano, y exigen que cada solución ejecute todas las consultas con un solo motor: “Nada de elegir a conveniencia”. La entrada también nombra dónde perdió Polars: frente a DuckDB a 100 GB, y en la consulta 21, una unión por rangos que el motor de streaming aún no implementaba. El artículo de EASE, escrito sin el fabricante, observó que las pruebas anteriores no eran ni sistemáticas ni revisadas por pares. Con datos grandes, sus resultados apuntan en la misma dirección que los de Polars.
Conclusión
Cuál conviene para cada trabajo Dos bibliotecas gratuitas que cada vez colaboran más. La pregunta es la carga de trabajo del lector, no cuál gana.
pandas
Para código existente y trabajo paso a paso
- Le conviene a: código ya escrito con ella, trabajo que etiqueta filas con un índice o modifica una tabla en su sitio, y conjuntos de datos lo bastante pequeños como para que el estudio controlado no hallara diferencias significativas en sus tareas TPC-H
- Su punto fuerte: el alcance. Se descarga diez veces más que Polars y es de código abierto desde 2009
- Su punto fuerte desde la 3.0: copias más predecibles y cadenas más rápidas sin salir de la API conocida
- A cambio: ejecución inmediata, en gran parte de un solo hilo, y mucha memoria con datos grandes según la regla práctica de su propio creador
Polars
Para grandes flujos analíticos
- Le conviene a: uniones, agrupaciones y lecturas sobre decenas de millones de filas o gigabytes, flujos escritos como consultas completas y máquinas con muchos núcleos
- Su punto fuerte: velocidad y energía en trabajo grande. Iba dos órdenes de magnitud por delante de pandas 2.2.3 con unos 10 GB en su propia prueba, y en el estudio independiente consumió mucho menos con datos grandes
- Otro punto fuerte: el rigor. Da error ante conversiones con pérdida y longitudes descuadradas en lugar de producir en silencio otro resultado
- A cambio: no hay índice y hay que pensar en expresiones; con la 2.0, el orden de las filas en uniones y agrupaciones hay que pedirlo; el trabajo más allá de la RAM aún se está terminando
Lo que está establecido
Las versiones actuales son pandas 3.0.6 y Polars 1.44.2, con Polars 2.0 en su segunda versión candidata. pandas 3.0 hizo predeterminadas las cadenas respaldadas por Arrow y el Copy-on-Write. Polars 2.0 hace predeterminado el streaming y deja de garantizar el orden de las filas en uniones y agrupaciones. En trabajo analítico grande, versiones anteriores de Polars fueron mucho más rápidas que versiones anteriores de pandas, en la prueba de la propia Polars y en el estudio revisado por pares. En las tareas TPC-H pequeñas del estudio la diferencia no fue significativa. Y las dos pueden usarse juntas, mediante scikit-learn y Narwhals.
Qué tomar con reservas
Cualquier cifra única de aceleración: 94 veces es una ejecución del fabricante, a un tamaño y frente a pandas 2.2.3, y 13 veces es la mejor consulta GPU de 22. La ganancia de 5 veces del streaming y el trabajo fiable más allá de la RAM son previsiones. Las afirmaciones sobre usuarios y producción son de la propia empresa. La cifra de 5 a 10 veces de RAM es una regla práctica de 2017. Y la lectura de que la diferencia sigue siendo grande con las versiones actuales es de este artículo: aún no hay una medición publicada que compare pandas 3.0 con Polars.