¿Habrá mucha gente mañana?
Una tienda de alquiler de bicicletas tiene que decidir cada mañana cuántas bicis sacar. Si saca pocas, la gente se marcha andando. Si saca demasiadas, se quedan bajo la lluvia. Un año de registros responde mejor que una corazonada, siempre que sepas leerlos.
Al terminar esta lección
Nota
Puedo usar pandas para cargar una tabla de datos y resumirla.
Palabras clave
- Conjunto de datos: una colección de registros sobre un mismo tema.
- Archivo CSV: una tabla guardada como texto, un registro por línea y comas entre los valores.
- DataFrame: una tabla de pandas, con columnas con nombre.
- Media: la suma dividida entre cuántos valores hay.
- Cuaderno (notebook): una página de código, resultados y texto que se ejecuta celda a celda.
- Modelo: una regla sacada de los datos que predice un valor.
Para empezar: lo que ya sabes
Nota
Responde mentalmente. 1. ¿Qué guarda una fila de una tabla? 2. ¿Cómo calculas la media de 2, 4 y 6? 3. ¿Para qué sirve print en Python? Vas a usar las tres cosas en esta lección. Respuestas: un registro; se suman y se divide entre 3, y sale 4; muestra un valor en pantalla.
Antes de empezar
Nota
Pulsa Iniciar el laboratorio en la barra de arriba de la lección y espera a que diga que está en marcha. Hay un solo contenedor, jupyter, y el terminal llega a su Python con docker exec jupyter, que ejecuta una orden dentro de él. El enlace JupyterLab abre su página web, en el puerto 8888. Cada botón Ejecutar de abajo escribe su orden en el terminal de tu laboratorio, una detrás de otra en la misma sesión. Para verlas o escribir las tuyas, pulsa Abrir terminal (pestaña nueva) en la barra.
Un proyecto de datos es una carpeta de datos y código
ls lista la carpeta de trabajo: los datos hires.csv (los alquileres), el cuaderno start.ipynb y la carpeta steps. cat muestra el primer script. Son cuatro líneas de Python: importar pandas, leer el archivo y mostrar su tamaño y sus primeras filas.
docker exec jupyter lsSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
docker exec jupyter cat steps/load.pySe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
pandas lee un archivo CSV en un DataFrame
pd.read_csv lee el archivo entero en un DataFrame llamado hires. La respuesta empieza por (365, 7): 365 filas, una por día, y 7 columnas. Después vienen las cinco primeras filas. La primera es el 1 de enero de 2025, un miércoles nublado a 0,9 grados, con 137 bicis alquiladas.
docker exec jupyter python3 steps/load.pySe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Un resumen describe una columna entera
describe resume una columna en ocho números. La columna hires tiene una media de 270,3 bicis al día, un día más tranquilo de 41 y uno más ajetreado de 487. El segundo script usa groupby para repartir las filas según el tiempo y sacar la media de cada grupo: sunny (soleado) 312,2, cloudy (nublado) 267,0 y rainy (lluvioso) 227,6.
docker exec jupyter python3 steps/summary.pySe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
docker exec jupyter python3 steps/weather.pySe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Comprueba
Consejo
¿Por qué columna repartió groupby las filas, y con qué tiempo hubo más alquileres? Respuesta: por la columna weather, y en los días soleados, con una media de 312,2.
Un gráfico enseña lo que una tabla esconde
Matplotlib dibuja gráficos. Este script pone un punto por cada día, la temperatura en horizontal y las bicis alquiladas en vertical, y lo guarda como hires.png. Ábrelo desde la lista de archivos de JupyterLab: los puntos suben de izquierda a derecha, así que los días más cálidos tienen más alquileres.
docker exec jupyter python3 steps/picture.pySe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Un modelo convierte la tendencia en una regla
scikit-learn ajusta una regresión lineal: una regla en línea recta que va de la temperatura y la lluvia a los alquileres. La respuesta dice que un grado más vale unos 11,2 alquileres, y que un milímetro más de lluvia cuesta unos 8,2. R² vale 0,776, así que la regla explica cerca de tres cuartas partes del cambio de un día a otro.
docker exec jupyter python3 steps/model.pySe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Un error frecuente
Advertencia
Mucha gente cree que un modelo que se ajusta bien demuestra qué causa el cambio. Solo muestra que los valores se mueven juntos en estos datos. Los días cálidos tienen más alquileres, pero también son más secos y en verano caen más a menudo en fin de semana. Di «va unido a», no «causa», salvo que otra cosa lo demuestre.
El mismo trabajo en un cuaderno
Abre JupyterLab desde la barra y haz doble clic en start.ipynb. Hace lo mismo que los cinco scripts, celda a celda. Haz clic en una celda y pulsa Mayús y Intro para ejecutarla. La respuesta aparece debajo de la celda y el gráfico aparece en la página. La última celda es para tu propia pregunta.
Comprobación final
Consejo
Responde sin mirar atrás. 1. ¿Qué función de pandas lee un archivo CSV? 2. ¿Cuántas filas tiene hires.csv, y por qué ese número? 3. ¿Qué método reparte las filas en grupos? 4. ¿Demuestra un buen modelo qué causa el cambio? Respuestas: pd.read_csv; 365, una por cada día de 2025; groupby; no, muestra que los valores se mueven juntos.
Para el profesorado
Consejo
Esta lección es un pequeño ejemplo de una lección practicada en un laboratorio: los pasos y los botones Ejecutar son la lección, y el laboratorio es la copia propia de cada alumno. El laboratorio es un solo servicio, JupyterLab con pandas, NumPy, Matplotlib y scikit-learn, y nada de lo que hay aquí se corrige solo: el alumno entrega un cuaderno propio sobre hires.csv, descargado desde JupyterLab, y una frase sobre lo que mostró. Ideas clave: 1. pandas lee un archivo CSV en un DataFrame. 2. describe y groupby resumen una columna. 3. Un gráfico y un modelo muestran una tendencia. Error frecuente: tomar un buen ajuste por una causa. Material: el laboratorio y un navegador. Consejo: pida al alumnado que adivine cada número antes de pulsar Ejecutar. Los datos se inventan a partir de una semilla fija, así que todas las copias dan los mismos números. Cópiela en su propio módulo y modifíquela, o cree una desde cero con el menú Laboratorio del constructor de lecciones.