Herramientas “base” que usa un equipo de ciencia de datos

La tecnología avanza tan rápido como el desarrollo de herramientas para llevarla a cabo. Con el paso de los días nos damos cuenta de que existen nuevas formas de hacer las cosas y también nuevas herramientas que nos ayudan en el proceso.

En esta ocasión, describiré muy pero muy brevemente algunas de las herramientas tecnológicas usadas por los equipos de ciencia de datos para lograr su cometido: ¡Extraer valor de los datos!

Comencemos sin un orden en particular

Lenguajes de programación:

Python: Mi lenguaje favorito para hacer ciencia de datos debido a la cantidad de librerías que maneja para diferentes propósitos (pandas, numpy, multiprocessing, etc) y la versatilidad del lenguaje, que nos puede servir tanto  para graficar, analizar, procesar… como para hacer una API.

R: Lenguaje muy popular para la parte estadística del proceso de ciencia de datos, análisis exploratorio y machine learning entre tantas de sus cualidades.

Scala: Lenguaje utilizado para manejar muchos datos. Su compatibilidad con Spark (ambos hechos en Java) lo lleva a ser una gran alternativa para el procesamiento de datos.

Cloud:

AWS: ¡Lo tiene todo! IaaS, SaaS, cuenta gratuita 😛 … nos permite salir de lo local y empezar a trabajar con más poder de cómputo tal cual lo vayamos necesitando. Nos provee de muchas herramientas para el almacenamiento y procesamiento de datos, incluso nos provee herramientas para hacer machine learning. 

Google Cloud: Además de contar con muchas de las características que maneja AWS, nos permite trabajar de una manera más nativa con los frameworks desarrollados por google, como tensor flow.

Azure: El menos popular pero que sin duda ofrece muchas herramientas para el manejo de datos, entre ellas nos permite usar Databricks para lograr una configuración de Spark más rápida y dedicarle más tiempo al procesamiento de los datos y al machine learning. 

Visualización de datos:

Matplotlib: La librería para gráficos que python nos ofrece para presentar diferentes tipos de charts que vayan de acuerdo a nuestro análisis exploratorio o presentación de resultados, entre muchos otros usos.

Tableau: Herramienta que se conecta a tu base de datos y te permite crear visualizaciones en modo “drag and drop”. Se usa mucho para el análisis de datos exploratorio ya que su objetivo es ayudarnos a entender nuestros datos.

D3.js: Una librería muy dinámica en javascript que nos permite manipular el DOM para hacer nuestros gráficos a la medida. Cuenta con una infinidad de templates y tiene la ventaja de que se habla perfectamente con el ambiente web. Así que si queremos exponer resultados animados utilizando la web esta librería es la opción.

Control de versiones:

Git: Controlador de versiones que nos permite guardar el estado de nuestro código de un cambio a otro. El uso de un controlador de versiones  tiene muchas ventajas, las más importantes diría yo, es que nos permite regresar en el tiempo para ver los cambios que hemos realizado  y recuperar versiones anteriores de nuestro trabajo, y, mantiene nuestro código/proyecto visible para múltiples contribuidores…. La verdad es que podría hablar de muchas otras ventajas pero se nos va la vida 😀

Miscelánea:

Docker: Entre otras cosas, nos permite simular/configurar ambientes de trabajo y guardarlo en una imagen para compartir. Nos permite trabajar de manera “aislada”de nuestra máquina física para entrar en el mundo virtual.

Spark: Es un framework que nos permite procesar datos de manera distribuida. Su alcance es tal, que aunado a diferentes librerías y/o herramientas podemos hacer procesamiento de datos en tiempo real.

Terminal: Para mi es una herramienta básica, es como un orquestador de herramientas que nos facilita su acceso, manejo y ejecución a través de comandos (que poco a poco vamos memorizando).

La verdad es que este es un resumen muy corto de todo lo que las tecnologías antes mencionadas nos pueden ofrecer, es un overview muy particular. También cabe mencionar que este no es un stack de tecnologías que todos los equipos de ciencia de datos usan, yo creo que no hay mejor manera de seleccionar un stack que analizando (si, también) los requerimientos del proyecto. No cometamos el error de hacer un proyecto complejo solo por utilizar tecnologías que están de moda; pero tampoco reinventemos la rueda y trabajemos en algo que ya existe: encontremos el balance entre lo que necesitamos y lo que hay en el mercado.

Deja un comentario