Laboratorio JupyterLab de ciencia de datos: pandas, Matplotlib y scikit-learn en el navegador

Este laboratorio da a cada alumno un JupyterLab propio, con las bibliotecas de Python para ciencia de datos ya instaladas: pandas para tablas, NumPy para números, Matplotlib para gráficos y scikit-learn para modelos. La carpeta de trabajo tiene un año de alquileres de bicicletas inventados, una fila por día con el tiempo que hizo, y un cuaderno inicial que los carga, los resume, los dibuja y los modela.

No es un laboratorio de ataques. Ninguna copia tiene salida a internet ni acceso a otros alumnos, así que no se puede descargar nada en ella y nada de lo que hay dentro puede llegar a nadie más.

Qué aprende el alumnado

Cómo un archivo CSV se convierte en un DataFrame con pandas, y cómo describe y groupby resumen una columna y comparan grupos: los días soleados tienen más alquileres y los de lluvia, menos. Después, un diagrama de dispersión con Matplotlib que muestra que los días más cálidos tienen más movimiento, y una primera regresión lineal con scikit-learn que convierte esa tendencia en una regla, con R² para saber qué parte del cambio explica. Por el camino trabajan en un cuaderno, celda a celda, como se hace en ciencia de datos. Encaja en introducciones a la ciencia de datos, a la estadística con código y al aprendizaje automático; consulte la redacción exacta en la unidad de su propio organismo certificador, aquí no se cita ninguna.

Ejecútalo en tu navegador

El laboratorio inicia un solo servicio, jupyter, que escribe los datos, el cuaderno y los scripts cortos en su carpeta de trabajo, y está listo en pocos segundos. Usa unos 75 MB en reposo y unos 235 MB con un cuaderno en marcha, dentro de los 512 MB que puede tener un servicio. JupyterLab no pide ningún token, porque la puerta de la plataforma ya sabe quién lo abre. El terminal que hay junto al laboratorio no tiene Python propio, así que llega al del laboratorio con docker exec jupyter, seguido de la orden que se ejecuta dentro.

  1. Abre la página Contenedor. Abre «Crear» en la barra y elige «Ejecutar un contenedor». Cualquiera puede abrir la página, y el laboratorio de Git y el de SQL se inician sin cuenta. Todos los demás laboratorios necesitan una cuenta gratuita: crea una, inicia sesión y pulsa «Iniciar».
  2. Busca el laboratorio. La tarjeta «Laboratorios de ejemplo» lista todos los ejemplos. Busca JupyterLab: ciencia de datos con pandas.
  3. Pulsa «Iniciar». «Iniciar» lo ejecuta tal cual, con una sola pulsación. «Editar el archivo primero» abre el archivo compose para que lo cambies antes de iniciarlo.
  4. Ábrelo. En la página del laboratorio, la barra del laboratorio tiene un enlace llamado JupyterLab: púlsalo para abrir JupyterLab en tu navegador y haz doble clic en start.ipynb. Después pulsa «Abrir terminal» y escribe docker exec jupyter python3 steps/load.py para ver el tamaño de los datos, 365 filas y 7 columnas, y sus cinco primeras filas.

Qué pedir que entreguen

Un cuaderno propio sobre hires.csv que responda a una pregunta que hayan elegido, por ejemplo con qué tiempo hay más alquileres el fin de semana, qué mes es el más tranquilo o si un modelo acierta más cuando conoce el día de la semana, descargado desde JupyterLab con File, Download. Después, una o dos frases con sus propias palabras sobre lo que mostraron los datos y lo que no demuestran. Nada se corrige automáticamente: la frase muestra si lo han entendido. Para un trabajo más completo, pida un gráfico que apoye la respuesta y un modelo comparado con otro más sencillo.

Una lección básica en este laboratorio

JupyterLab Basics es una lección corta que se hace en este laboratorio. En ella el alumno lista la carpeta de trabajo, carga los datos con pandas, resume los alquileres y los compara según el tiempo, guarda un gráfico, ajusta una regresión lineal y luego abre el mismo trabajo en el cuaderno inicial.

Las cuentas personales gratuitas la tienen en el módulo Basics, que está en Inicio, cualquier centro puede copiarla desde la carpeta Basics de la Biblioteca, y un centro nuevo empieza con ella en un módulo llamado Data Labs (Sample). Es corta a propósito: enseña a un profesor qué es una lección practicada en un laboratorio, y el laboratorio hace el resto. Cópiela en un módulo propio para cambiarla.

El código en GitHub

El archivo compose no tiene Dockerfile: ejecuta una sola imagen pública, la scipy-notebook de Jupyter Docker Stacks, fijada a una etiqueta con fecha, con su propia cuenta sin privilegios y 512 MB de memoria. La imagen tiene licencia BSD-3-Clause y no la distribuimos nosotros. El archivo escribe los datos a partir de una semilla fija al arrancar, así que todas las copias tienen los mismos números y no se descarga nada. Los límites son sinceros: los datos son inventados y pocos, no hay GPU, no se puede instalar nada desde internet y un modelo que necesite mucha más memoria de la que tiene la copia fallará. Nada se guarda al parar el laboratorio, así que el alumno descarga antes su cuaderno.

Asignarlo como trabajo

Indica en la tarea qué hay que entregar.

  1. Crea el laboratorio. En tu módulo añade una tarea y elige la tarjeta «Laboratorio de contenedores», y después «En un repositorio de GitHub». Indica https://github.com/mitsurutech/lab-jupyter-data con la rama main. El archivo compose es el predeterminado, compose.yaml. Haz un fork del repositorio antes si quieres modificarlo, por ejemplo para usar tu propio archivo CSV.
  2. Publica y pruébalo. «Publicar» fija el commit que te mostraron, así que un cambio posterior en el repositorio no altera un laboratorio que ya has asignado. Inicia primero tu propia copia.
  3. Asígnalo. Asígnalo como cualquier tarea, con una fecha de entrega si quieres, e indica en la tarea qué hacer y qué entregar.
  4. Califica lo entregado. Abre la copia de un alumno y el trabajo que ha entregado, califícalo y devuélvelo con un motivo si necesita más.

Preguntas frecuentes

¿Por qué no hay token ni contraseña que escribir?
A la página web de un laboratorio solo se llega por la puerta de la plataforma, que ya sabe quién eres y solo deja pasar a ti y al profesorado de tu módulo. Por eso JupyterLab arranca sin token. No lo ejecutes así en una máquina a la que pueda llegar otra gente.
¿Por qué el terminal usa docker exec jupyter?
El terminal del laboratorio tiene curl, psql y algunos clientes más, pero no Python. docker exec jupyter ejecuta una orden dentro del contenedor del laboratorio, que tiene Python y todas las bibliotecas. JupyterLab también tiene un terminal propio, en File, New, Terminal.
¿Puede el alumnado instalar más paquetes o usar sus propios datos?
No desde internet, al que una copia no puede llegar, así que las bibliotecas son las de la imagen. Para otros datos, haz un fork del repositorio, cambia las filas que escribe el archivo compose y asigna el fork como laboratorio.