Miles de ejemplos
Detecta patrones
Predice y genera
Toca cada tarjeta para profundizar.
Sistemas que realizan tareas que asociamos con la inteligencia humana: reconocer, predecir, decidir.
La máquina aprende de ejemplos en lugar de seguir reglas escritas a mano una por una.
Modelos que crean contenido nuevo: texto, imágenes y, clave para nosotros, código.
Large Language Model: entrenado con enormes cantidades de texto para entender y generar lenguaje.
Pasa el cursor por cada hito.
Lo que antes tomaba una carrera universitaria, hoy es accesible en una tarde — si sabes qué preguntar.
Un LLM genera texto pieza por pieza (cada pieza se llama token). En cada paso calcula qué tan probable es cada palabra y elige. Pulsa para verlo.
Clic o → para avanzar la animación
Clic o → para avanzar la animación
Clic o → para avanzar la animación
Clic o → para avanzar la animación
Clic o → para avanzar la animación
Token, vector, predicción, modelo y contexto no son teoría: se pueden tocar. Abre estas tres páginas en otra pestaña y trae de vuelta lo que encuentres.
Escribe cualquier frase y mira cómo se parte en tokens. Verás que una palabra no siempre es un token — y que el español cuesta más tokens que el inglés.
Compara todos los modelos en calidad, velocidad (tokens por segundo) y precio por millón de tokens. Es el tablero para decidir cuál usar.
La ficha técnica de cada modelo: ventana de contexto, parámetros, licencia y resultados en pruebas estándar, todo en una tabla ordenable.
Los tres se abren en una pestaña nueva: la presentación se queda donde está. Tomen 5 minutos, exploren y comentamos.
Seis definiciones, nueve términos: tres sobran. Arrastra con el mouse o toca el término y luego la casilla.
Es la pieza mínima en la que se parte el texto para que el modelo pueda procesarlo. Una palabra larga puede valer varias.
Una lista de números que ubica cada palabra como un punto en el espacio: las de significado parecido quedan cerca.
En cada paso el modelo calcula qué tan probable es cada candidato y elige uno para continuar el texto.
El archivo entrenado donde vive todo lo que aprendió. No guarda los textos originales: guarda los pesos.
Todo lo que el modelo puede tener a la vista en una conversación. Cuando se llena, lo más viejo se pierde.
La rama de la IA que crea contenido nuevo —texto, imágenes, código— en lugar de solo clasificar o predecir un número.
En corto: la IA te responde; el agente hace el trabajo mientras tú diriges. Más adelante en este módulo instalaremos dos agentes en tu computador.
Planifica · actúa · verifica
Tú diriges, el agente ejecuta — y aprendes en el proceso.
Es la intersección de tres mundos. Ahí, justo en el centro, vive el científico de datos.
Resumir datos, ver patrones y encontrar señales que no son obvias a simple vista.
Estimar ventas, demanda, riesgo, resultados o comportamientos futuros.
Comparar opciones con evidencia en lugar de decidir solo por intuición.
Clasificar casos, priorizar tareas y descubrir anomalías antes de que crezcan.
Python es la herramienta · la IA es el copiloto · tú eres el científico de datos.
Abrimos un modelo conversacional y exploramos. Primero con un prompt suelto, como escribe todo el mundo. Después con las cinco piezas que lo convierten en un encargo.
Desde qué oficio quieres que te responda. Cambia el vocabulario, el nivel y qué considera importante.
Quién eres tú, para qué lo necesitas y con qué material. Va antes de la tarea: primero encuadras, después pides.
Un verbo claro y una sola cosa por pedir: explica, resume, compara, calcula, crea. Sin verbo no hay encargo.
Cómo quieres recibirlo: tabla, viñetas, informe, código, JSON. Si no lo dices, el modelo inventa uno.
Extensión, idioma, tono y lo que no debe hacer. Las restricciones son las que hacen la respuesta usable.
El prompt suelto sirve para explorar; el estructurado sirve para producir. Hoy usamos los dos, en cuatro ejercicios seguidos.
Lanza los dos prompts en la misma conversación y compara. Después compara con tu compañero de al lado, que usó otro modelo.
Activa Deep Research / Investigación profunda antes de enviar. La IA navega, lee decenas de fuentes y tarda varios minutos: esto ya no es un chat, es un encargo.
Cada mesa usa una IA distinta con el mismo prompt. Al final comparamos: ¿cuál entendió la metáfora y cuál solo dibujó bonito?
Un artefacto es una mini-aplicación que la IA escribe y ejecuta ahí mismo: Artifacts en Claude, Canvas en ChatGPT y Gemini. Deja de responder y empieza a construir.
En los cuatro ejercicios le pediste cosas y respondió. Pero si no entiendes lo que devuelve, no puedes verificarlo — y verificar es tu trabajo. Las tres diapositivas que siguen abren esa caja.
Una secuencia de pasos ordenados para llegar a un resultado. Lo usas todos los días sin darte cuenta.
Programar es, en esencia, escribir recetas que la computadora ejecuta. Este esquema —datos, cálculo, decisión— es el esqueleto de casi todo lo que haremos en el curso.
De todos los lenguajes que existen, este curso usa Python por tres razones muy concretas.
Con 4 líneas puedes abrir un Excel de 100.000 filas y ver sus datos. Todavía no hay que entenderlo: es solo un anticipo de a dónde vamos.
Elige una tarea, mira el código que "genera" la IA y ejecútalo aquí mismo. Esto es exactamente lo que harás con tu agente cuando lo instales en tu computador.
Usaste la IA de otro, en la web de otro, con datos de ejemplo. Para trabajar con tus archivos —tu Excel, tus 40.000 filas, lo que no puedes subir a una página cualquiera— necesitas el taller en tu propio computador. Eso es lo que sigue.
Siete piezas, cada una con un papel distinto. Se instalan en este orden porque unas dependen de otras. Toca una tarjeta para ir directo a su instalación.
Instalamos dos agentes porque con dos basta para aprender a dirigirlos. Estos son otros que verás mencionados: la lógica de uso es la misma en todos.
Qué pedirle, cómo verificar lo que entrega y entender el código que produce. Eso se transfiere a cualquier agente que salga el año que viene.
Inventa nombres de funciones, asume columnas que no existen y a veces "arregla" cosas que no debía. Por eso el siguiente bloque —los fundamentos— no es opcional.
Abre una terminal y comprueba uno por uno. Si algo falla, lo arreglamos ahora: el resto del curso depende de esto.
Con las herramientas listas, empezamos a escribir. Cada tema trae un ejemplo que puedes ejecutar aquí mismo, y los más importantes terminan con un reto "manos al teclado".
Variables
cajas de almacenamiento
Palabras reservadas
las 35 que ya están ocupadas
Comentarios
notas para humanos
Tipos de datos
int · float · str · bool
print()
el megáfono
type()
¿de qué tipo es?
input()
el micrófono
Operadores
calcular y comparar
Texto
limpiar y partir cadenas
Listas
mochilas de datos
Tuplas
la caja sellada
Diccionarios
clave y valor
Conjuntos
sin repetidos
Condicionales
if · elif · else
Bucles
el trabajador incansable
Funciones
recetas guardadas
Errores
try · except
Librerías
las que ya escribió otro
Retos
manos al teclado
Antes de calcular nada hay que saber escribirlo: dónde se guardan los datos, qué nombres están prohibidos y cómo dejar notas que el computador ignora.
Una variable es una caja con una etiqueta donde guardas un dato para usarlo después. El signo = significa "guarda esto aquí".
Reglas OBLIGATORIAS para nombrar cajas (variables):
nombre_estudianteñEdad y edad son cajas distintastotal_ventas, no xPython tiene 35 palabras con un significado fijo en el lenguaje. Son suyas: no puedes usarlas para nombrar las variables que acabas de aprender a crear. Si lo intentas, el programa se detiene con un error.
Todo lo que va después de un # lo ignora el computador. Sirve para explicarle a otra persona —o a ti dentro de un mes— qué hace cada parte del código.
De qué material está hecho cada dato, cómo mostrarlo en pantalla, cómo pedírselo al usuario y cómo calcular y comparar con él.
Así como en la vida real hay cosas de madera, vidrio o plástico, en Python cada dato está hecho de un "material" distinto. Elegir bien el tipo evita errores. Son dos cosas distintas: crear un dato de cada tipo y convertirlo a otro.
1 Crear · una caja de cada material
2 Convertir · de un material a otro
int · Entero
Números sin decimales: 25, -4
float · Decimal
Con punto: 1.75, 3.14
str · Texto
Entre comillas: "Ana"
bool · Lógico
Solo True o False
Los dos recuadros salen en blanco
Es correcto: los datos quedan guardados, pero todavía no le hemos pedido a Python que los muestre. Eso llega en el capítulo 05.
Convertir no es comprobar
El recuadro 2 cambia un dato de tipo con int(), str() o float(). Para comprobar de qué tipo es algo existe type(), en el capítulo 06.
print(): el megáfono
Hasta ahora guardábamos datos y no se veía nada. print() es la orden de "habla". Ejecuta las cuatro ventanas en orden.
1 Texto tal cual · entre comillas
2 Números y cuentas · sin comillas
3 El contenido de una variable · sin comillas
4 Texto y variables mezclados · f-string
Fíjate en la diferencia: print("nombre") muestra la palabra nombre; print(nombre) muestra lo que hay dentro de la caja. La f antes de las comillas permite meter variables entre llaves { } sin cortar el texto.
type(): ¿de qué está hecho?
Ya sabes que existen int, float, str y bool, y ya sabes mostrar cosas con print(). Al juntarlos obtienes la herramienta que responde: ¿de qué tipo es este dato? Se usa siempre igual: metes el dato en type() y lo envuelves en print() para verlo.
1 Preguntar el tipo · uno por cada material
2 Comprobar una conversión · ¿salió bien?
¿Para qué sirve en la práctica?
Cuando un cálculo falle sin motivo aparente, type() suele dar la respuesta: casi siempre es un número que en realidad era texto. Lo verás en el capítulo siguiente.
Compara las dos consolas
En el recuadro 1 cada dato responde con su clase. En el recuadro 2 el mismo 25 aparece dos veces: primero como int y después, tras str(), como str.
input(): el micrófono
Si print() es el megáfono que saca información, input() es el micrófono que la recibe: muestra un mensaje, espera a que la persona escriba y guarda lo que escribió. Ejecuta los tres recuadros y responde dentro de la consola negra.
1 Preguntar y guardar · lo básico
El texto del paréntesis es la pregunta. Si no guardas el resultado en una variable, se pierde.
2 Siempre devuelve texto · aunque escribas un número
Escribe 25 y fíjate: responde str, no int.
3 Convertir para operar · con int() o float()
Quita la línea del int() y verás el error: aquí une variable + tipo + conversión + print().
El error más común de todo el curso
input() devuelve siempre texto (str), aunque escribas un número: eso es lo que demuestra el recuadro 2. Por eso "25" + 1 falla; hay que convertirlo antes con int() o float(), como en el recuadro 3.
Utilizando el editor de abajo, escribe un programa que cumpla lo siguiente:
print() dos veces para imprimir ambas variables.mi_nombre = "Ana" mi_edad = 25 print(mi_nombre) print(mi_edad)
Si las variables son los sustantivos, los operadores son los verbos. Son cuatro familias: ejecuta cada recuadro por separado.
1 Aritméticos · calcular
2 Comparación · siempre dan True o False
3 Lógicos · combinar condiciones
4 Asignación · guardar y actualizar
No confundas = con ==
Uno solo guarda un valor (edad = 25). Dos preguntan si son iguales y responden True o False (edad == 25).
Los recuadros 2 y 3 son la base de los condicionales
Sin comparar ni combinar, el programa no puede decidir nada. Vuelven en el capítulo 14.
Los datos reales llegan sucios: " Bogotá " con espacios, "BOGOTA" en mayúsculas, "bogota" sin tilde. Para Python son tres ciudades distintas. Cada recuadro arregla una cosa.
1 Limpiar · quitar lo que sobra
2 Normalizar · unificar mayúsculas
3 Medir · cuántos caracteres
4 Partir · una lista con las piezas
Se pueden encadenar
Fíjate en el recuadro 2: .strip().lower() aplica una limpieza detrás de otra en la misma línea. Se leen de izquierda a derecha.
.split() devuelve una lista
Míralo en el recuadro 4: aparecen los corchetes. Es justo el objeto con el que abre el bloque siguiente.
Hasta aquí, una caja para un dato. Ahora, contenedores capaces de guardar muchos a la vez: así es como llegan los datos del mundo real.
Fíjate: diccionarios y conjuntos comparten las mismas llaves. Lo que los distingue es si dentro hay pares clave: valor o solo elementos sueltos.
Una variable es una caja para UN solo objeto. Pero, ¿y si necesitamos llevar muchos, como en una mochila escolar? Para eso están las listas, con corchetes []. Son tres gestos distintos: crearla, sacar un objeto y meter otro.
1 Crear · corchetes y comas
2 Leer uno · por su posición
3 Añadir · .append() al final
Se empieza a contar desde cero
Míralo en el recuadro 2: el primer objeto de tu mochila está en la posición [0], no en la 1. Es el despiste número uno de todo principiante.
Las listas son mutables
El recuadro 3 es la prueba: puedes añadir, quitar o cambiar sus elementos cuando quieras. Las dos pantallas siguientes van justo de eso.
Rara vez quieres la lista entera. Casi siempre necesitas un trozo: el último, los tres primeros, o saber si algo está dentro. Los cuatro recuadros trabajan sobre la misma lista de compras: ejecútalos uno a uno y compara.
1 Contar · len()
2 Contar desde el final · índices negativos
3 Rebanadas · un trozo de la lista
4 Buscar · in · .index() · .count()
El truco de las rebanadas
En [1:3] el primer número entra y el segundo no. Suena raro al principio; mira las tres líneas del recuadro 3 y se te queda.
Ninguno de estos modifica la lista: solo preguntan. Cambiarla es la pantalla siguiente.
Aquí es donde las listas se ganan el nombre de mutables: puedes reescribirlas entera o parcialmente sin crear una nueva. Los cuatro recuadros parten siempre de las mismas notas, así ves exactamente qué cambia cada método.
1 Cambiar uno · por su posición
2 Añadir · .append() y .insert()
3 Quitar · .remove() · .pop() · del
4 Reordenar · .sort() y .reverse()
Modifican la lista original
.sort() no te devuelve una lista ordenada: reordena la que ya tenías. Fíjate en el recuadro 4: después de .sort() la variable notas ya no es la de antes. Si necesitas conservar el orden original, haz una copia primero.
.remove() quita por valor · del y .pop() quitan por posición, pero solo .pop() te devuelve lo que sacó.
.append() para añadir un cuarto color.mis_colores = ["Rojo", "Azul", "Verde"]
mis_colores.append("Amarillo")
print(mis_colores)
print(mis_colores[0])
Una tupla es como una lista, pero sellada con pegamento: una vez la creas, sus elementos no se pueden cambiar. Se escribe con paréntesis () y se lee igual que una lista, con índices. Ejecuta los tres recuadros: el último falla a propósito.
1 Crear y leer · paréntesis e índices
Mismos índices que las listas: se empieza a contar en [0].
2 Para qué sirven · datos que no cambian
Coordenadas de un mapa, colores de una bandera, tu fecha de nacimiento: nada de eso debería poder cambiarse por accidente.
3 Intentar cambiarla · error garantizado
Falla, y está bien que falle: esa protección es justo para lo que existen. En una lista la misma línea funcionaría.
Lista o tupla: la decisión
Si el dato va a crecer o a corregirse, usa una lista (corchetes). Si tiene que quedarse tal cual, usa una tupla (paréntesis) y Python te avisará —como en el recuadro 3— cuando alguien intente tocarla.
Guardan pares clave: valor con llaves {}. En vez de buscar por posición, buscas por nombre: persona["edad"]. Tres gestos, tres recuadros: crearlo, consultarlo y actualizarlo.
1 Crear · llaves y pares clave: valor
2 Consultar · por su clave, no por número
3 Añadir o cambiar · basta con asignar
Es una fila de Excel
Cada clave es el nombre de una columna y cada valor, su contenido. Por eso los diccionarios son la estructura clave en ciencia de datos.
Añadir y cambiar se escriben igual
En el recuadro 3, persona["profesion"] = ... crea la clave porque no existía. Si ya existiera, la sobrescribiría. Misma línea, dos efectos.
Con datos reales, tarde o temprano pides una clave que no existe. Lo que hagas en ese momento decide si tu programa sigue o se cae. Ejecuta los recuadros 1 y 2 seguidos: mismo dato que falta, dos finales distintos.
1 Con corchetes · se cae con KeyError
2 Con .get() · responde y sigue
3 Comprobar · in y len()
4 Ver el contenido · keys · values · items
Corchetes frente a .get()
Compara las consolas 1 y 2. estudiante["telefono"] revienta con KeyError y corta el programa; .get("telefono") devuelve None, o el valor por defecto que le pongas, y el programa continúa.
Las tres últimas se envuelven en list() solo para poder verlas impresas; en un for se usan tal cual.
Los tres primeros recuadros son las formas de cambiar un diccionario. El cuarto es el que importa de verdad: un diccionario puede guardar dentro listas y otros diccionarios, y ahí aparece la estructura más importante de todo el curso.
1 Añadir y cambiar · misma sintaxis
2 Varios de una vez · .update()
3 Quitar · .pop() y del
4 Anidar · listas dentro y lista de diccionarios
El recuadro 4 es la puerta a pandas
Cada diccionario es una fila; cada clave, una columna. Así es exactamente como llegan los datos de un Excel, de una encuesta o de internet.
Igual que en las listas: .pop() te devuelve lo que quitó (recuadro 3), del simplemente lo borra.
"nombre", "ciudad" y "edad"."curso" con el valor "Ciencia de Datos" e imprime todo.mi_perfil = {
"nombre": "Ana",
"ciudad": "Bogotá",
"edad": 25
}
print(mi_perfil["ciudad"])
mi_perfil["curso"] = "Ciencia de Datos"
print(mi_perfil)
Un conjunto (set) guarda elementos únicos: si metes algo dos veces, solo queda una copia. Se escribe con llaves {}, pero sin pares clave: valor. Un recuadro para verlo y otro para el uso que le darás de verdad.
1 Crear un conjunto · lo repetido se descarta
2 Quitar duplicados · set() sobre una lista
El truco del recuadro 2
Convertir una lista a set() quita los duplicados en una sola línea. Es de lo más usado cuando llegan datos repetidos de un Excel.
No tienen orden fijo
Ejecuta el recuadro 1 varias veces: los elementos pueden salir en distinto orden. Un conjunto sirve para saber qué hay, no en qué posición está.
Aquí el programa deja de ser una lista de órdenes que se leen de arriba abajo y empieza a decidir por sí solo qué hacer y cuántas veces.
Con if el programa decide: si se cumple una condición, haz esto; si no, haz aquello. Aquí es donde tu código empieza a "pensar". Los tres recuadros van de menos a más: cambia el número de edad en cada uno y vuelve a ejecutar.
1 Dos caminos · if / else
O se cumple, o no. Nunca se ejecutan las dos ramas.
2 Varios caminos · elif
elif es "si no, PERO…": solo se revisa cuando la condición de arriba fue falsa.
3 Condiciones combinadas · and / or
Pon tiene_boleto = False y vuelve a ejecutar: cambia qué línea se imprime.
Los operadores que usarás (capítulo 08)
== igual que
!= distinto de
> mayor · < menor
>= · <=
and ambas
or alguna
La sangría importa
Los 4 espacios de los tres recuadros no son decoración: son lo que le dice a Python qué está dentro del if. Quítalos y el programa no arranca.
"Aprobó". Si no, "Debe repetir".elif que imprima "¡Excelente!" cuando la nota sea 4.5 o más.nota = 4.6
if nota >= 4.5:
print("¡Excelente!")
elif nota >= 3:
print("Aprobó")
else:
print("Debe repetir")
Un for repite las mismas instrucciones para cada elemento. Es lo que convierte "hazlo una vez" en "hazlo 10.000 veces". Se escribe igual en los dos casos; lo único que cambia es qué va después del in: un rango de números o una lista.
1 Repetir N veces · for con range()
Fíjate: el 6 no aparece. En range() el último número no entra, igual que en las rebanadas.
2 Recorrer una lista · for sobre elementos
Aquí no hay números: la variable fruta va tomando, una a una, cada palabra de la lista.
El verdadero superpoder de programar
Cambia la lista del recuadro 2 por 10.000 filas de un Excel y el código sigue siendo exactamente el mismo. Eso es lo que estamos comprando aquí.
Lo indentado es lo que se repite
En el recuadro 1, el print("Iniciando...") y el print("¡Terminado!") salen una sola vez porque están fuera del for. Solo la línea con sangría se repite.
Con for repites una vez por elemento: sabes de antemano cuántas vueltas serán. Con while repites mientras se cumpla una condición, sin saber cuántas. Y con break y continue cortas la repetición desde dentro. Una idea por recuadro.
1 while · repetir por condición
"Mientras queden intentos", "mientras el usuario no acierte". No sabes cuántas vueltas dará.
2 break · salir antes de tiempo
El bucle iba hasta el 9, pero break lo abandona del todo en el 4.
3 continue · saltarse solo esa vuelta
Aquí el bucle no se abandona: solo se salta las vueltas que no interesan.
El bucle infinito
Borra la línea intentos -= 1 del recuadro 1 y el programa no para nunca. Dentro de un while, asegúrate siempre de que algo avanza en cada vuelta.
Compara las consolas 2 y 3: break sale del bucle y no vuelve · continue salta esa vuelta y sigue con la siguiente.
for e imprime cada una.range(1, 11) para imprimir la tabla del 5.ciudades = ["Bogotá", "Medellín", "Cali"]
for ciudad in ciudades:
print(ciudad)
for i in range(1, 11):
print(5 * i)
Empaquetar tu código para no repetirlo, protegerlo de los fallos y sumarle el trabajo de miles de personas. Es la puerta a la ciencia de datos.
Con def guardas una receta con nombre. No se ejecuta al definirla: se ejecuta cuando la llamas. Primer recuadro: definirla y usarla una vez. Segundo: la ganancia real, usar la misma receta con ingredientes distintos.
1 Definir y llamar · def y return
Borra la última línea y ejecuta: no aparece nada. Definir una función no la ejecuta.
2 Reutilizar · la misma receta, otros datos
La lógica se escribe una vez y se usa las veces que haga falta. Si mañana cambia la fórmula, la corriges en un solo sitio.
Las dos piezas de la receta
Parámetros: los ingredientes que recibe → (base, altura).
return: el plato que devuelve para poder usarlo después, como en resultado = calcular_area(5, 10).
Esto es lo que te va a devolver un agente
Cuando le pidas "hazme una función que…", lo que recibirás tiene exactamente la forma del recuadro 1. Ahora ya sabrás leerlo.
return) la suma dividida entre la cantidad de notas.[3.5, 4.2, 2.8, 3.9] e imprime el resultado.if para decir si el grupo aprobó (≥ 3.0).def promedio(notas):
return sum(notas) / len(notas)
resultado = promedio([3.5, 4.2, 2.8, 3.9])
print("Promedio:", resultado)
if resultado >= 3.0:
print("El grupo aprobó")
else:
print("El grupo no aprobó")
Cuando algo falla, Python detiene el programa entero en esa línea. Con try / except le dices: "inténtalo; y si sale mal, haz esto otro en lugar de morirte". Un recuadro por cada error que ya te has cruzado en este bloque.
1 ValueError · no era un número
El error clásico del input() del capítulo 07.
2 KeyError · esa clave no existe
Es el mismo error que reventaba el recuadro 1 del capítulo 12, ahora domesticado.
3 ZeroDivisionError · dividir entre cero
Aparece en cuanto calculas un promedio de una lista vacía.
La estructura, idéntica en los tres
try:
# lo que puede fallar
except TipoDeError:
# el plan B si falla
Los tres primeros son los recuadros de arriba. El de ámbar llega en el capítulo siguiente, en cuanto intentes abrir un archivo que no está donde creías.
No sirve para todo
Un error de sintaxis —como usar class de nombre de variable, del capítulo 02— no se atrapa: hay que arreglarlo. try protege de lo que falla al ejecutar, no de lo que está mal escrito.
Una librería es una caja de funciones que ya escribió otra persona. Algunas vienen dentro de Python (math, random). Otras, como pandas, hay que instalarlas aparte. Sigue los tres pasos en orden.
1 Sin instalar · pulsa Ejecutar
Falla, y está bien que falle: pandas no viene con Python.
2 Instalarla · en la terminal
pip install pandas
Collecting pandas Installing collected packages: pandas Successfully installed pandas-2.2.3
No se escribe en Python, sino en la terminal. Y solo una vez por computador.
3 Ahora sí · el mismo código
import pandas as pd
df = pd.read_csv("ventas.csv")
print(df.head())
fecha ciudad ventas 0 2026-01-05 Bogotá 1250 1 2026-01-06 Medellín 980 2 2026-01-07 Cali 1430
Tres líneas y el Excel ya está dentro de Python. Si el archivo no aparece, salta FileNotFoundError: ahí usas el try/except del capítulo anterior.
El as pd es solo un apodo para escribir menos. Es la forma que verás en todo internet.
Aquí empieza la ciencia de datos
pandas para tablas, matplotlib para gráficas, scikit-learn para modelos. Todo el resto del curso son librerías: los fundamentos que acabas de ver son lo que te permite entender qué le estás pidiendo a cada una.
Estas son las que vas a necesitar, ordenadas por el módulo donde aparecen. No hace falta entenderlas todavía: solo tenerlas instaladas antes de empezar.
pandas abre y transforma tablas · numpy hace el cálculo numérico por debajo · openpyxl es lo que permite leer y escribir .xlsx.
matplotlib es la base de todo gráfico · seaborn la deja presentable con una línea · plotly hace gráficas interactivas para el dashboard.
Convierte tu script en una aplicación web con la que otros pueden interactuar, sin escribir nada de HTML.
Los modelos de machine learning listos para usar: clasificar, predecir y agrupar con las mismas tres líneas de siempre.
1 Instálalas todas de una vez · en la terminal
pip install pandas numpy openpyxl matplotlib seaborn plotly streamlit scikit-learn
Successfully installed pandas-2.2.3 numpy-2.1.3 openpyxl-3.1.5 matplotlib-3.9.2 seaborn-0.13.2 plotly-5.24.1 streamlit-1.39.0 scikit-learn-1.5.2
2 Comprueba que quedaron · en Python
import pandas, numpy, matplotlib
import seaborn, plotly, streamlit, sklearn
print("Todo listo para empezar")
Todo listo para empezar
Si alguna línea da ModuleNotFoundError, esa es la que faltó instalar.
pip install scikit-learn pero se escribe import sklearn. Y openpyxl no se importa nunca: lo usa pandas por dentro cuando abres un Excel.
Ya entiendes qué es la IA, tienes tu estación de trabajo montada y sabes escribir código de verdad. Con esto puedes leer, entender y modificar lo que te entregue cualquier agente.
Hoy dominas
18 capítulos: cómo se escribe · datos y operaciones · texto · las cuatro estructuras · decidir y repetir · funciones, errores y librerías
Lo que sigue
pandas: abrir Excel y CSV, limpiar y transformar datos
Después
gráficos, tableros y automatización de reportes
Al final
tu propio aplicativo publicado con GitHub Pages
Trabajo Científico · @TCientifico · Democratizando la ciencia de datos