
Importar una librería puede implicar leer archivos, ejecutar su código de inicialización y cargar otras dependencias. Ese trabajo se paga aunque después solo queramos mostrar la ayuda de una herramienta. Python 3.15 incorpora Explicit Lazy Imports, definido en el PEP 810 y recogido en las novedades de Python 3.15: podemos declarar un import y aplazar su carga hasta el primer uso.

Cada mañana, un ETL recibe un CSV, convierte la edad a entero y carga los clientes. Ayer funcionaba con este fichero:
id,name,age
1,John,25
2,Mary,30
Hoy, el proveedor añade el país:
id,name,age,country
1,John,25,USA
2,Mary,30,UK
Unos días después, llega otra sorpresa:

Te llega un fichero CSV. Antes de cargarlo en una base de datos, quieres saber qué columnas tiene, si faltan valores y qué registros te interesan. Abrir una hoja de cálculo funciona, pero resulta poco cómodo cuando tienes que repetir la misma operación con varios archivos. Escribir un programa para cada comprobación tampoco siempre compensa.

Un fichero contiene José, pero después de pasar por un pipeline aparece José. Otro conserva las tildes, aunque una búsqueda de Jose devuelve también José. Y en un tercero los emojis se convierten en ?.
Los tres casos parecen problemas de texto, pero conviene investigar causas distintas: cómo interpretamos los bytes, cómo comparamos las cadenas y qué información se ha perdido durante el recorrido. Cambiar a UTF-8 sin localizar el fallo puede limitarse a guardar correctamente un texto que ya estaba estropeado.

Python sigue siendo uno de los lenguajes más cómodos para explorar y transformar datos. Sin embargo, la comodidad de un DataFrame no siempre se traduce en velocidad: cuando crecen las columnas y las filas, el coste de memoria y de CPU se vuelve muy visible. Polars aborda ese problema con una librería de DataFrames escrita en Rust y con una API disponible desde Python.