Llegamos a ustedes gracias a:



Reportajes y análisis

5 herramientas más nuevas que debería usar con Python

[25/05/2023] El rico ecosistema de herramientas de ciencia de datos de Python es un gran atractivo para los usuarios. El único inconveniente de una colección tan amplia y profunda es que, a veces, las mejores herramientas pueden pasarse por alto.

[Reciba lo último de CIO Perú suscribiéndose a nuestro newsletter semanal]

Aquí hay un resumen de algunos de los mejores proyectos de ciencia de datos más nuevos o menos conocidos disponibles para Python. Algunos, como Polars, están recibiendo más atención que antes, pero aún merecen una atención más amplia; otros, como ConnectorX, son joyas ocultas.

ConnectorX

La mayoría de los datos se encuentran en una base de datos en algún lugar, pero el cálculo generalmente ocurre fuera de una base de datos. Obtener datos hacia y desde la base de datos para el trabajo real puede ser una ralentización. ConnectorX carga datos de bases de datos en muchas herramientas comunes de gestión de datos en Python, y mantiene las cosas rápidas al minimizar la cantidad de trabajo a realizar.

Al igual que Polars -del que hablaré pronto-, ConnectorX usa una biblioteca Rust en su núcleo. Esto permite optimizaciones como poder cargar desde una fuente de datos en paralelo con la partición. Los datos en PostgreSQL, por ejemplo, se pueden cargar de esta manera especificando una columna de partición.

Además de PostgreSQL, ConnectorX también soporta la lectura de MySQL/MariaDB, SQLite, Amazon Redshift, Microsoft SQL Server, Azure SQL y Oracle. Los resultados se pueden canalizar a Pandas o PyArrow DataFrame, o en Modin, Dask o Polars a través de PyArrow.

DuckDB

Las personas de ciencia de datos que usan Python deben conocer SQLite -una base de datos relacional pequeña, pero potente y rápida, empaquetada con Python. Dado que se ejecuta como una biblioteca en proceso, en lugar de una aplicación separada, es liviana y receptiva.

DuckDB es un poco como si alguien respondiera a la pregunta "¿Qué pasaría si hiciéramos SQLite para OLAP? Al igual que otros motores de bases de datos OLAP, utiliza un almacén de datos en columnas y está optimizado para cargas de trabajo de consultas analíticas de ejecución prolongada. Pero le brinda todo lo que espera de una base de datos convencional, como transacciones ACID. Y no hay un paquete de software separado para configurar; puede ejecutarlo en un ambiente de Python con un solo comando de instalación de pip.

DuckDB puede ingestar datos directamente en formato CSV, JSON o Parquet. Las bases de datos resultantes también se pueden particionar en varios archivos físicos para mayor eficiencia, en función de las claves -por ejemplo, por año y mes-. Las consultas funcionan como cualquier otra base de datos relacional basada en SQL, pero con características integradas adicionales, como la capacidad de tomar muestras aleatorias de datos o construir funciones de ventana.

DuckDB también tiene una pequeña pero útil colección de extensiones, que incluyen búsqueda de texto completo, importación/exportación de Excel, conexiones directas a SQLite y PostgreSQL, exportación de archivos Parquet y soporte para muchos formatos y tipos de datos geoespaciales comunes.

Optimus

Uno de los trabajos menos envidiables que puede realizar es limpiar y preparar datos para usar en un proyecto centrado en DataFrame. Optimus es un conjunto de herramientas todo en uno para cargar, explorar, limpiar y escribir datos en una variedad de fuentes de datos.

Optimus puede usar Pandas, Dask, CUDF (y Dask + CUDF), Vaex o Spark como su motor de datos subyacente. Los datos se pueden cargar y volver a guardar en Arrow, Parquet, Excel, una variedad de fuentes de bases de datos comunes o formatos de archivo plano como CSV y JSON.

La API de manipulación de datos se parece a Pandas, pero agrega accesores .rows() y .cols() para que sea más fácil hacer cosas como ordenar un marco de datos, filtrar por valores de columna, modificar datos según criterios, o reducir el rango de operaciones según algunos criterios. Optimus también viene con procesadores para manejar tipos de datos comunes del mundo real, como direcciones de correo electrónico y URL.

Un posible problema con Optimus es que todavía está en desarrollo activo, pero su último lanzamiento oficial fue en el 2020. Esto significa que es posible que no esté tan actualizado como otros componentes de su stack.

Polars

Si pasa gran parte de su tiempo trabajando con DataFrames y está frustrado por los límites de rendimiento de Pandas, busque Polars. Esta biblioteca DataFrame para Python ofrece una sintaxis conveniente similar a la de Pandas.

Sin embargo, a diferencia de Pandas, Polars usa una biblioteca escrita en Rust que aprovecha al máximo su hardware y viene lista para ser usada. No necesita utilizar una sintaxis especial para aprovechar las funciones de mejora del rendimiento, como el procesamiento en paralelo o SIMD; es todo automático, Incluso las operaciones simples como leer un archivo CSV son más rápidas.

Polars también proporciona modos de ejecución ansiosos y perezosos, por lo que las consultas se pueden ejecutar de inmediato o diferir hasta que se necesiten. También proporciona una API de transmisión para procesar consultas de forma incremental, aunque la transmisión aún no está disponible para muchas funciones. Y los desarrolladores de Rust pueden crear sus propias extensiones Polars usando pyo3.

Snakemake

Los flujos de trabajo de ciencia de datos son difíciles de configurar y aún más difíciles de configurar de una manera consistente y predecible. Snakemake se creó para habilitar precisamente eso: configurar automáticamente análisis de datos en Python de manera que garantice que todos los demás obtengan los mismos resultados que usted. Muchos proyectos de ciencia de datos existentes se basan en Snakemake. Cuantas más partes móviles tengan en su flujo de trabajo de ciencia de datos, es más probable que se beneficie de la automatización con Snakemake.

Los flujos de trabajo de Snakemake se asemejan a los flujos de trabajo de GNU -usted define las cosas que desea crear con reglas, que definen lo que reciben, lo que emiten y qué comandos ejecutar para lograrlo. Las reglas de flujo de trabajo pueden ser de subprocesos múltiples (suponiendo que eso les brinde algún beneficio), y los datos de configuración se pueden canalizar desde archivos JSON/YAML. También puede definir funciones en sus flujos de trabajo para transformar los datos utilizados en las reglas y escribir las acciones realizadas en cada paso en los registros.

Los trabajos de Snakemake están diseñados para ser portátiles -se pueden implementar en cualquier ambiente administrado por Kubernetes o en ambientes de nube específicos como Google Cloud Life Sciences o Tibanna en AWS. Los flujos de trabajo se pueden "congelar para usar un conjunto exacto de paquetes, y cualquier flujo de trabajo ejecutado con éxito puede tener pruebas unitarias generadas automáticamente y almacenadas con él. Y para el archivado a largo plazo, puede almacenar el flujo de trabajo como un tarball.