Episodio 72 🐍⚙️🐼 pandas 2.0
¡pandas 2.0! Versiones nuevas de Polars y Great Expectations, anotando cantos de pájaros, y despidiéndome para unas breves vacaciones
🐼 ¡Tenemos pandas 2.0! Claramente la noticia de la semana y de lo que llevamos de año.
Marc García, el release manager para esta versión, escribió un excelente artículo desgranando el cambio clave de esta versión, que es el cambio de motor de NumPy a Arrow. Estas ideas al final nacen del ya clásico “Apache Arrow y las 10 cosas que odio de pandas”, escrito hace casi 6 años por Wes McKinney, creador de ambos. Haber llegado por fin a empezar a ejecutar esa visión es un hito de la comunidad y todos los usuarios de pandas nos vamos a beneficiar de ese duro trabajo.
Para mayor entretenimiento, Marc contó todo el proceso, que duró varias horas, en su Twitter:
(¿Parece que Substack ya no puede incrustar tweets? ¡Gracias, Elon!)
La gente de Airbyte también se hizo eco de esta nueva versión, y han publicado un análisis bastante completo:
Eso sí, muy importante tener en cuenta algunas sorpresas, como por ejemplo que DataFrame.append
estaba obsoleto desde hace tiempo y en pandas 2.0 ha desaparecido, como humorísticamente ha estado recordando Marco Gorelli, otro de los mantenedores del proyecto.
A consecuencia de este cambio a Arrow, una cosa ha mejorado notablemente: el tiempo de ejecución. Como comparte Sebastian Raschka, pandas con PyArrow es entre 3 y 10 veces más rápido para algunas operaciones.
Para hacer uso del nuevo backend, puedes pasar dtype_backend="pyarrow" a read_csv y otras funciones:
La nota negativa es que recientemente he empezado a ver en LinkedIn mucha gente un tanto sensible con la nueva alternativa, que es Polars, y están proliferando artículos mal escritos y comparativas mal hechas. Si sigues este noticiero ya sabrás que me encanta Polars, pero querría aprovechar este momento para matizar algunas cosas importantes:
La tecnología no es neutra pero es inerte, y por tanto no tiene sentimientos y no necesita que la “defendamos”.
Que Polars sea más rápido que pandas no significa que tengas que tirar a la basura todo tu código y empezar desde cero. Ningún proyecto serio se maneja así.
Las microcomparativas (microbenchmarks) rara vez se pueden extrapolar a cargas de trabajo reales. Y además, escribir comparativas honestas es muy difícil. Saca tus propias conclusiones antes de lanzarte a la piscina. (Lo cual me lleva a ese famoso artículo que dice que Python es malo para el planeta porque es lento… en fin.)
Ni siquiera hace falta elegir, puesto que puedes usar las dos: Polars tiene métodos
from_pandas
yto_pandas
. Y ahora que ambos están basados en Arrow, ni siquiera hay copias de memoria entre uno y otro si se hace bien.“La optimización prematura es la raíz de todo mal” (Donald E. Knuth), así que no te obsesiones con el rendimiento: lo más probable es que el 20 % de tu código se lleve el 80 % del tiempo de ejecución (principio de Pareto). Analiza, y después optimiza.
Más allá de estos cambios grandes, tienes las notas completas de la versión en la documentación.
¡En resumen, disfruta de pandas 2.0 y ya me contarás si has notado la diferencia!
🚀 Primera newsletter de mes, así que resumen de novedades en Polars: las operaciones melt
y explode
ya soportan el modo continuo (streaming), inferencia automática de fechas ISO-8601 (AAAA-MM-DD), mejoras varias en write_excel
, mejoras varias de rendimiento, y mucho más.
Por otro lado, tenemos versiones nuevas de Great Expectations, que incluyen compatibilidad con SQLAlchemy 2.0, mejoras en SQLDatasource, y más. Puedes consultar un resumen en el blog de la empresa.
💡 Esta semana he descubierto crowsetta, una herramienta para anotar audio. Inicialmente pensada para anotar cantos de pájaros, me parece que puede servir para más cosas.
🏕️ Y por hoy ya está bien, porque ¡mañana voy al PyCamp España en Girona! Espero desconectar y relajarme pero también programar algo divertido. ¡Buenas vacaciones!
¿Buscas proveedor de dominios y hosting bueno, bonito y barato para tu próximo proyecto? Llevo años con Dinahosting (enlace afiliado) y no me cambio por nada, el soporte 24 horas es 🔝, y son de Galicia 🇪🇸