Tu Primer Ejercicio¶
Esta guia te llevara paso a paso por el proceso de completar y entregar tu primer ejercicio.
Flujo de Trabajo General¶
graph LR
A[Fork Repo] --> B[Clone a tu PC]
B --> C[Trabajar en Ejercicio]
C --> D[Documentar PROMPTS.md]
D --> E[Commit Cambios]
E --> F[Push a tu Fork]
F --> G[Evaluacion Automatica] Sistema de Evaluacion por PROMPTS
NO se usan Pull Requests. El sistema evalua tu archivo PROMPTS.md directamente en tu fork. Solo necesitas hacer git push.
Paso 1: Abrir el Proyecto en PyCharm¶
- Abre PyCharm
- File → Open...
- Selecciona la carpeta
ejercicios-bigdata/ - Click en "OK"
Primera vez en PyCharm?
PyCharm te preguntara si confias en el proyecto. Click en "Trust Project".
Paso 2: Configurar el Interprete de Python¶
PyCharm debe detectar automaticamente el entorno virtual. Si no lo hace:
- File → Settings (Windows/Linux) o PyCharm → Preferences (macOS)
- Project: ejercicios-bigdata → Python Interpreter
- Click en el icono de engranaje → Add
- Selecciona "Existing environment"
- Busca
.venv/Scripts/python.exe(Windows) o.venv/bin/python(macOS/Linux) - Click "OK"
Paso 3: Navegar a Tu Primer Ejercicio¶
En el explorador de archivos de PyCharm:
Estructura del Ejercicio
Cada ejercicio tiene:
- Codigo base: Archivo
.pycon instrucciones - Datos: Carpeta
datos/con los datasets - README: Explicacion detallada del ejercicio
Paso 4: Leer el Enunciado¶
IMPORTANTE: Lee TODO el archivo antes de empezar a codear.
El ejercicio tendra secciones como:
"""
Ejercicio 01: Carga de Datos con SQLite
OBJETIVO:
Aprender a cargar datos desde CSV a una base de datos SQLite
DATASET:
- Archivo: datos/muestra_taxi.csv
- Tamano: ~10MB
- Registros: ~100,000
TAREAS:
1. Cargar CSV en chunks a SQLite
2. Crear indices para optimizar queries
3. Ejecutar queries de analisis
4. Exportar resultados
TIEMPO ESTIMADO: 2-3 horas
"""
Paso 5: Crear una Rama de Trabajo¶
NUNCA trabajes directamente en main. Siempre crea una rama:
# Asegurate de estar en main y actualizado
git checkout main
git pull origin main
# Crea una rama con tu apellido y el numero de ejercicio
git checkout -b garcia-ejercicio-01
# Verifica que estas en la rama correcta
git branch
# Debera mostrar: * garcia-ejercicio-01
Nomenclatura de Ramas
Usa el formato: tu-apellido-ejercicio-XX
Ejemplos: - garcia-ejercicio-01 - martinez-ejercicio-02
Paso 6: Trabajar en el Ejercicio¶
Editar el Codigo¶
Abre ejercicios/01_cargar_sqlite.py y empieza a trabajar.
Ejemplo de Codigo
import sqlite3
import pandas as pd
# Tarea 1: Cargar CSV en chunks
def cargar_datos_sqlite(csv_path, db_path, chunksize=10000):
"""
Carga un CSV grande a SQLite en chunks para evitar problemas de memoria
"""
conn = sqlite3.connect(db_path)
# Leer CSV por partes
chunks = pd.read_csv(csv_path, chunksize=chunksize)
for i, chunk in enumerate(chunks):
chunk.to_sql('trips', conn, if_exists='append', index=False)
print(f"Chunk {i+1} cargado ({len(chunk)} registros)")
conn.close()
print("Carga completa!")
# Ejecutar
if __name__ == "__main__":
cargar_datos_sqlite(
csv_path='datos/muestra_taxi.csv',
db_path='datos/taxi.db'
)
Probar tu Codigo¶
Ejecuta tu codigo frecuentemente para verificar que funciona:
Debug Frecuente
No escribas todo el codigo de una vez. Escribe una funcion, pruebalas, y continua.
Paso 7: Guardar tu Trabajo con Git¶
Cuando tengas un avance significativo (por ejemplo, completaste una tarea):
# Ver que archivos cambiaste
git status
# Agregar los archivos modificados
git add ejercicios/01_cargar_sqlite.py
# Hacer commit con un mensaje descriptivo
git commit -m "Implementar carga de CSV a SQLite en chunks"
# Continua trabajando...
Buenos Mensajes de Commit
✅ BIEN: - "Implementar carga de CSV a SQLite en chunks" - "Agregar indices para optimizar queries" - "Completar analisis de ingresos por hora"
❌ MAL: - "update" - "fix" - "asdfasdf"
Paso 8: Subir a GitHub¶
Cuando hayas completado el ejercicio:
# Hacer un commit final
git add .
git commit -m "Completar ejercicio 01: carga de datos SQLite"
# Subir tu rama a GitHub
git push origin garcia-ejercicio-01
Primera vez haciendo push?
Git te pedira autenticacion. Usa tu usuario y password de GitHub, o configura SSH keys.
Paso 9: Verificar tu Entrega¶
- Ve a tu fork en GitHub:
https://github.com/TU_USUARIO/ejercicios-bigdata - Navega a tu carpeta de entrega
- Verifica que estan todos tus archivos, especialmente
PROMPTS.md
Entrega Completada
No necesitas hacer nada mas. El sistema evalua tu PROMPTS.md automaticamente.
Paso 10: El Archivo PROMPTS.md¶
Este es el archivo mas importante de tu entrega.
Documenta tus prompts de IA mientras trabajas:
# Prompts de IA - Ejercicio 01
## Prompt A: Cargar datos a SQLite
**IA usada:** ChatGPT / Claude / etc.
**Prompt exacto:**
> como cargo un csv grande a sqlite usando python con chunks
---
## Prompt B: Optimizar queries
[Mismo formato...]
---
## Blueprint Final
[Al terminar, pide a la IA un resumen de lo que construiste]
NO limpies tus prompts
Pega tus prompts TAL CUAL los escribiste, con errores y todo. El sistema detecta si fueron "limpiados".
Mejores Practicas¶
Codigo Limpio¶
# ✅ BIEN - Codigo legible con comentarios
def calcular_promedio_tarifas(db_path):
"""
Calcula el promedio de tarifas por hora del dia
Args:
db_path: Ruta a la base de datos SQLite
Returns:
DataFrame con promedio de tarifas por hora
"""
conn = sqlite3.connect(db_path)
query = """
SELECT
strftime('%H', pickup_datetime) as hora,
AVG(total_amount) as promedio_tarifa
FROM trips
GROUP BY hora
ORDER BY hora
"""
resultado = pd.read_sql_query(query, conn)
conn.close()
return resultado
# ❌ MAL - Sin documentacion, nombres confusos
def calc(p):
c = sqlite3.connect(p)
r = pd.read_sql_query("SELECT strftime('%H', pickup_datetime) as h, AVG(total_amount) as t FROM trips GROUP BY h", c)
c.close()
return r
Commits Atomicos¶
Haz commits pequenos y especificos:
# ✅ BIEN - Commits pequenos y descriptivos
git commit -m "Agregar funcion de carga de datos"
git commit -m "Implementar creacion de indices"
git commit -m "Agregar queries de analisis"
# ❌ MAL - Un solo commit gigante
git commit -m "Todo el ejercicio"
Probar Antes de Subir¶
# Siempre verifica que funciona antes de push
python ejercicios/01_cargar_sqlite.py
# Si funciona, entonces push
git push origin garcia-ejercicio-01
Checklist del Ejercicio¶
Antes de subir tu trabajo (git push), verifica:
- El codigo ejecuta sin errores
- Todas las tareas del ejercicio estan completas
- El codigo esta documentado (comentarios, docstrings)
- Los commits tienen mensajes descriptivos
- El codigo sigue las mejores practicas de Python
- Probaste con el dataset completo
Problemas Comunes¶
Error: ModuleNotFoundError: No module named 'pandas'
Causa: Entorno virtual no activado o dependencias no instaladas.
Solucion:
Git dice: 'Your branch is behind origin/main'
Causa: Tu rama main local esta desactualizada.
Solucion:
No puedo hacer push: 'Permission denied'
Causa: Problemas de autenticacion con GitHub.
Solucion: Configura SSH keys o usa Personal Access Token.
PyCharm no encuentra los datos
Causa: Ruta relativa incorrecta.
Solucion: Usa rutas relativas desde la raiz del proyecto:
---
Proximos Pasos¶
Una vez completado tu primer ejercicio:
- Sincronizar Fork - Mantener tu fork actualizado
- Roadmap del Curso - Ver todos los ejercicios disponibles
- Comandos Utiles - Cheatsheet de Git