Intro a Jupyter y Pandas

Guillermo Barrios del Valle

Temas

  • Paseo por Jupyter Notebook
  • ¿Por qué Jupyter Notebook?
  • Buenas y malas prácticas
  • CSV vs Excel
  • Intro a pandas
  • El mighty DataFrame
  • Vamos por un ejemplo

Jupyter Notebook

Paseo por Jupyter Notebook

¿Qué es?

Un entorno interactivo que permite combinar código, texto y visualizaciones en un solo documento.

. . .

Componentes principales

  • Celdas de código — donde escribes y ejecutas Python
  • Celdas de Markdown — donde documentas tu análisis
  • Salidas — resultados, tablas, gráficas debajo de cada celda

Interfaz de Jupyter

  • Barra de menús — File, Edit, View, Cell, Kernel, Help
  • Barra de herramientas — atajos para acciones comunes
  • Área de trabajo — donde viven tus celdas

Atajos esenciales

Atajo Acción
Shift + Enter Ejecutar celda y avanzar
Ctrl + Enter Ejecutar celda sin avanzar
A / B Insertar celda arriba / abajo
M / Y Cambiar a Markdown / Código

¿Por qué Jupyter Notebook?

Ventajas

  • Reproducibilidad
  • Documentación integrada
  • Exploración interactiva de datos
  • Fácil de compartir

Ideal para

  • Análisis exploratorio
  • Prototipos rápidos
  • Enseñanza y talleres
  • Reportes con código
  • Compartir en repositorios

Buenas prácticas

  1. Ejecutar las celdas en orden, de arriba a abajo
  2. Usar Restart & Run All periodicamente (antes de guardar)
  3. Documentar con celdas de Markdown
  4. Mantener cada celda con una sola idea
  5. Nombrar las variables de forma descriptiva
  6. Agrupar código que haga sentido
  7. Nombrar libretas con numeración
  8. Tener un espacio de trabajo claro

Malas prácticas

  • Ejecutar celdas fuera de orden y depender de ese estado
  • Dejar celdas con código comentado o sin usar
  • Poner todo el análisis en una sola celda gigante
  • No reiniciar el kernel antes de guardar/documentar
  • No importar paquetes en la primera celda
  • No nombrar libretas

CSV vs Excel

¿Qué es un CSV?

Comma Separated Values — un archivo de texto plano

estado,indicador,valor,año
Morelos,1.1.1,23.5,2020
Puebla,1.1.1,31.2,2020
  • Cualquier editor de texto lo puede abrir
  • Ligero y portable
  • Sin formato visual, sin fórmulas, sin hojas múltiples

¿Qué es un archivo Excel?

Formato binario/XML (.xlsx) con muchas más capacidades

  • Múltiples hojas en un solo archivo
  • Formato visual (colores, negritas, bordes)
  • Fórmulas y gráficas embebidas
  • Más pesado que un CSV

CSV vs Excel — Comparación

Característica CSV Excel (.xlsx)
Formato Texto plano Binario/XML
Tamaño Ligero Más pesado
Hojas múltiples No
Formato visual No
Fórmulas No
Interoperabilidad Si No
Editable en texto No

¿Cuándo usar cuál?

Usa CSV cuando

  • Intercambias datos entre sistemas
  • Necesitas un formato universal
  • Trabajas con datos tabulares simples
  • Quieres archivos ligeros

Usa Excel cuando

  • Necesitas múltiples hojas
  • Requieres formato visual
  • Tu audiencia no es técnica
  • Necesitas fórmulas integradas

Espacio de trabajo

intro-jupyter-pandas/
├── data/
│   ├── ods03.csv
│   └── economia.csv
├── notebooks/
│   ├── 001_paseo_jupyter.ipynb
│   ├── 002_EDA_ODS.ipynb
│   └── 003_primera_historia.ipynb
└── pyproject.toml

Intro a pandas

Preparar espacio de trabajo

# Crear y moverte a espacio trabajo/directorio
mkdir intro-jupyter-pandas
cd intro-jupyter-pandas

# Crear espacio de trabajo
mkdir data 
mkdir notebooks 

# Crear un entorno virtual
uv init 

# Instalar pandas, jupyter notebook
uv add pandas jupyter notebook openpyxl

## Correr libreta de jupyter
uv run jupyter notebook

¿Qué es pandas?

La biblioteca estándar de Python para análisis de datos tabulares

import pandas as pd

Leer datos

# Desde un CSV
nombre = pd.read_csv("datos_ods.csv")

# Desde un Excel
nombre2 = pd.read_excel("datos_ods.xlsx")

# Desde un Excel con hoja específica
nombre3 = pd.read_excel("datos_ods.xlsx", sheet_name="Indicadores")

Buenos nombres para DataFrames

El nombre debe contar qué datos contiene, como parte de una narrativa

# Leer los datos
ods_morelos = pd.read_csv("data/ods03.csv")
economia = pd.read_csv("data/economia.csv")

# Filtrar y transformar
ods_morelos_2020 = ods_morelos[ods_morelos['anio'] == 2020]
economia_por_estado = economia.groupby('estado').mean()

El código se lee como una historia:

“Tomo los datos de ODS de Morelos, filtro los del 2020…”

Malos nombres para DataFrames

# No hagas esto
df = pd.read_csv("data/ods03.csv")
df2 = pd.read_csv("data/economia.csv")
df3 = df[df['anio'] == 2020]
datos = df3.groupby('estado').mean()

Evita tambien

  • Acentos y caracteres especiales en nombres de variables: economía, año, índice
  • Espacios en nombres de archivos: mis datos.csv
  • Nombres genéricos: df, data, temp, x, resultado
  • Nombres muy largos: dataframe_con_todos_los_indicadores_del_ods_tres

. . .

Si mañana abres tu libreta y no entiendes qué es df2… el nombre era malo.

El mighty DataFrame

Un DataFrame es una tabla con filas y columnas, similar a una hoja de cálculo.

ods03.head()
estado indicador valor año
0 Morelos 1.1.1 23.5 2020
1 Puebla 1.1.1 31.2 2020
2 Oaxaca 1.1.1 45.1 2020
  • Filas — cada registro (observación)
  • Columnas — cada variable
  • Índice — identificador de cada fila (por defecto 0, 1, 2…)

Exploración rápida (ojo con el nombre)

df.shape        # (filas, columnas)
df.columns      # nombres de columnas
df.dtypes       # tipo de dato por columna
df.info()       # resumen completo
df.describe()   # estadísticas descriptivas
df.head()       # primeras 5 filas
df.tail()       # últimas 5 filas
df.sample(10)   # 10 filas aleatorias

Vamos por un ejemplo

Agenda 2030 México

Vamos a trabajar con datos abiertos de agenda2030.mx