Jupyter: Data Science aplicada

Gracias al Big Data las empresas pueden almacenar, procesar e interpretar grandes volúmenes de datos a gran velocidad. Aunque aún la mayoría de las empresas no trabajan con este tipo de tecnologías y sólo son un puñado de ellas las que se benefician de las ventajas que supone trabajar con Big Data.

¿Cuál es el siguiente paso? El objetivo es obtener el máximo valor de estos datos, dotarlos de inteligencia y extraer conocimiento. Nace así una nueva disciplina: la ciencia de datos o Data Science.

En este post profundizaremos en Jupyter, un novedoso entorno de trabajo open source orientado a científicos que soporta los lenguajes R y Python, entre otros, y que está revolucionando la forma de trabajar en el mundo de los datos.

Jupyter1

Con esta disciplina nace un nuevo perfil: el científico de datos, que debe tener conocimientos de negocio, ingeniería de datos, machine learning, matemáticas, estadística, computación distribuida y visualización.

Historia

Jupyter surge en 2014 como una evolución del proyecto IPython, una potente consola vitaminada para Python. Sin embargo, Jupyter es mucho más ambicioso que IPython, se pretende construir una plataforma agnóstica del lenguaje que ofrezca a los científicos un conjunto de potentes herramientas para trabajar con datos, visualizarlos y poder compartir los resultados.

El origen de su nombre es un homenaje a Galileo, al que se considera autor del primer “paper” científico de astronomía de la era moderna en 1610, en el cual describe sus observaciones astronómicas a través de un telescopio de las lunas de Júpiter. Galileo demostró que la Tierra orbita el Sol de la misma manera que las lunas de Júpiter orbitan dicho planeta.

Jupyter2

El proyecto fue iniciado por Fernando Pérez, un científico y profesor de la Universidad de California Berkeley. Sin embargo, el proyecto es software libre y está basado en componentes libres, por lo que está apoyado, desarrollado y mantenido por una amplia comunidad.

La adopción y el éxito de Jupyter ha sido muy grande, de tal modo que se está convirtiendo en un standard para el trabajo de los científicos de datos. Hoy en día la herramienta está integrada algunas de las plataformas y entornos más importantes y extendidas como Google Cloud, Microsoft Azure, AWS, IBM Bluemix, Databricks Platform, GitHub, Rackspace, Continuum, Jetbrains.

¿Cómo funciona Jupyter?

Jupyter nos ofrece una shell interactiva vía web, a la que podemos acceder desde un navegador. La shell está organizada en pequeños bloques, cada bloque puede contener texto arbitrario formateado en Markdown, fórmulas matemáticas en LaTeX, código en multitud de lenguajes, resultados, gráficos, vídeos, widgets o cualquier elemento multimedia.

Podemos escribir código de programación en estas celdas e ir ejecutándolo paso a paso o todo de golpe, obteniendo todos los resultados parciales. También podemos usar los bloques de texto para documentar el código o añadir las explicaciones oportunas, que pueden contener enlaces, imágenes, vídeos u otros elementos.

Esta serie de piezas de código, notas y resultados se guardan en un notebook, que es un fichero que contiene toda esta información. Uno de los principales objetivos de Jupyter es fomentar y simplificar la compartición de conocimiento y resultados a través de los notebooks. Plataformas como GitHub o Databricks Community Edition facilitan esta tarea. De esta manera los notebooks pueden ser fácilmente difundidos y los resultados pueden ser reproducidos y validados en diferentes entornos. Por supuesto esto es muy útil para la divulgación y la formación o en entornos educativos.

Jupyter soporta integración con más de 40 lenguajes de programación en los que podemos escribir el código de nuestro notebooks, por ejemplo Python, R, Scala, Ruby o Go. Pero también es fácilmente integrable con herramientas y plataformas de Big Data como Spark, lo que permite abstraerse de la complejidad de estas herramientas, aprovechando todo su potencial desde un entorno muy amigable.

Una forma muy sencilla de probar Jupyter es a través de Try Jupyter!, una página hospedada por Rackspace que nos ofrece una instancia de prueba donde podemos ejecutar algunos notebooks de ejemplo o escribir los nuestros propios.

Arquitectura e instalación

¿Cómo funciona internamente Jupyter? Usa un sistema basado en Kernel. Cada Kernel es un motor de ejecución para un lenguaje o plataforma concreta que ejecuta en el servidor. A través de un sistema de colas basado en ZMQ el código que necesita ser ejecutado es enviado al Kernel correspondiente.

Por otro lado, el navegador se comunica con el servidor a través de Websockets para optimizar el tráfico y mejorar la experiencia de usuario en el entorno de trabajo. Los notebooks son persistidos en disco para guardar todos nuestros cambios y resultados.

Jupyter4

Podemos ejecutar Jupyter localmente en nuestro sistema. Instalarlo es tan fácil como instalar Anaconda, la plataforma abierta para data science basada en Python, o directamente con la herramienta de instalación de paquetes de Python, Pip: $ pip3 install jupyter

También podemos usarlo remotamente conectándonos a un servidor donde esté instalado. Para simplificar este tipo de despliegues tenemos JupyterHub, una extensión orientada a entornos de trabajo compartido donde múltiples usuarios se quieran conectar al mismo servidor.

JupyterLab: la siguiente generación

El desarrollo y la evolución de Jupyter están más vivos que nunca. En la SciPy 2016, conferencia sobre Python aplicado al mundo científico, se anunciaron algunas de las nuevas características de la siguiente generación que será conocida como JupyterLab.

Jupyter5

En esta versión se han incluido notables mejoras en la interfaz, ofreciéndonos un entorno más limpio, rico y flexible basado en widgets drag&drop. También nos ofrece una mejor integración con la shell del sistema, lo que nos simplifica labores como la monitorización.

Conclusión

Jupyter es una herramienta libre fantástica que se está convirtiendo en el standard en el mundo del análisis de datos. La comunidad que lo impulsa es muy activa y heterogénea, lo que está enriqueciendo el desarrollo y la integración con otras herramientas y plataformas.

Su impacto está siendo tan importante que hasta la prestigiosa revista científica Nature le ha dedicado un artículo que incluye una interesante demo interactiva y describe todas las ventajas de utilizar Jupyter en el mundo del análisis de datos científicos.

Manuel Zaforas es Ingeniero Superior en Informática por la UPM. Está interesado en HPC, IoT, Cloud, NoSQL, Big Data, Data Science, Machine Learning y Agile. Apoya activamente la implantación de software libre, la calidad en los procesos de desarrollo de software a través de la mejora continua y la innovación en las metodologías de desarrollo y gestión de equipos. Actualmente trabaja en Paradigma como Scrum Master y Arquitecto Software.

Ver toda la actividad de Manuel Zaforas

Recibe más artículos como este

Recibirás un email por cada nuevo artículo.. Acepto los términos legales

Comentarios

  1. A quien le interesa Jupyter, le recomiendo que vea algo sobre Stratio Intelligence (https://stratio.atlassian.net/wiki/display/SI0x9x0/Introduction). Un saludo :)

Escribe un comentario