Introducción a Python#
🎯 Objetivos de la sesión#
Al finalizar, el estudiante podrá:
✅ Reconocer el entorno de trabajo (Jupyter Notebook y sandbox) y entender cómo afecta el estado del kernel y el orden de ejecución.
✅ Explicar y usar fundamentos de Python: variables, tipos de datos (
int,float,str,bool), operaciones y formateo de strings.✅ Describir qué es Pandas y diferenciar DataFrame vs Series vs índice.
✅ Realizar una exploración inicial de un dataset con Pandas usando:
.head(),.tail(),.sample(),.info(),.describe(),.shape.columns,.dtypes.unique(),.nunique(),.value_counts()
🧭 Agenda de la sesión#
Introducción a Python + code with me - 50 mins
Break - 10 mins
Introducción a Pandas + code with me - 40 mins
Por qué Python?#
Python es un lenguaje de programación de alto nivel, interpretado y de propósito general.
Es ampliamente utilizado en diversas áreas como el análisis de datos, desarrollo web, inteligencia artificial, automatización y más.
✅ Sintaxis simple y legible
✅ Multiparadigma
✅ Lenguaje interpretado: Se ejecuta linea por linea
✅ Extensa librería estándar
✅ Gran comunidad
📓 Jupyter Notebooks y Sandbox#
📓 Jupyter Notebook#
Funciona por celdas:
Code: ejecuta Python.
Markdown: texto con formato.
El kernel es el proceso que ejecuta tu código:
Si lo reinicias, se pierde el estado (variables, imports, etc.).
El orden importa: si ejecutas celdas “fuera de secuencia”, puedes generar resultados inconsistentes.
🧪 Sandbox (plataforma)#
Entorno controlado para practicar/entregar.
Suele incluir archivos del proyecto, validaciones y un flujo de “run / submit”.
Regla de oro: leer el error y ubicar línea + causa.
Variables, Tipos de Datos y Operaciones Aritméticas#
🧩 Variables#
Una variable es un nombre que apunta a un valor.
Sirven para almacenar resultados, reutilizarlos y darles significado (hacer el código legible).
En Python, el tipo no se declara explícitamente en la variable: el tipo lo determina el valor asignado.
Buenas prácticas:
Nombres descriptivos (que expliquen qué representan).
Consistencia en estilo (habitualmente
snake_case).Evitar nombres ambiguos o demasiado cortos que no comuniquen intención.
Variables y Print#
print("Hola Mundo")
print('Hola Mundo')
Hola Mundo
Hola Mundo
print("Hola Mundo")
print ('Hola Mundo')
Hola Mundo
Hola Mundo
Los nombres de las variables solo pueden empezar por letras o por el carácter de guion bajo _.
Los nombres de las variables solo pueden contener letras, números y guiones bajos; otros caracteres especiales no están permitidos.
variable = 'Este es mi texto'
print(variable)
Este es mi texto
variable = 'Este es mi texto'
print(variable)
variable = 'Este es mi otro texto'
print(variable) #El nuevo valor de variable, el anterior se perdió
Este es mi texto
Este es mi otro texto
variable1 = 'Este es mi texto'
print(variable1)
variable2 = 'Este es mi otro texto'
print(variable2)
print(variable1) #Se conserva cada variable por separado
print(variable1 , variable2)
Este es mi texto
Este es mi otro texto
Este es mi texto
Este es mi texto Este es mi otro texto
nombre = 'Pedro' # Variable de tipo String (str)
Apellido = 'Fuentes'
edad = 87 # Variable de tipo Entero (int)
altura = 1.50 # Variable de tipo punto flotante (float)
is_single= False # Variable Booleana True/False (Bool)
print('nombre:', nombre)
print('Apellido:', Apellido)
print('edad:', edad)
print('altura:', altura)
print('is_single:', is_single)
print("Su nombre es ", nombre, "tiene ", edad, "años,", "mide", altura, ". ¿Esta soltera? ", is_single)
nombre: Pedro
Apellido: Fuentes
edad: 87
altura: 1.5
is_single: False
Su nombre es Pedro tiene 87 años, mide 1.5 . ¿Esta soltera? False
ciudad= "Buenos aires"
print("la edad del usuario es", edad, "y vive en:", ciudad)
la edad del usuario es 87 y vive en: Buenos aires
➕ Operaciones#
Las operaciones son acciones que combinan o transforman valores. Lo esencial es que el resultado depende de:
El operador (suma, resta, comparación, etc.).
Los tipos de datos involucrados.
Operaciones aritméticas#
Se aplican a números y producen resultados numéricos. Algunas operaciones pueden devolver decimales aunque los operandos sean enteros (depende del operador).
Operaciones de comparación#
Comparan dos valores y devuelven un valor booleano: verdadero o falso.
Operaciones lógicas#
Combinan valores booleanos para construir condiciones más complejas.
print(1+1.5)
print(2.8-1)
print(3.5*2)
print(4/2)
print(5%2) #El residuo de la división por la parte entera
print(6**2)
print(7//2) #Redondea a ala baja
2.5
1.7999999999999998
7.0
2.0
1
36
3
var1 =3
var2 =4.6
print(var1+var2)
print(var1-var2)
print(var1*var2)
print(var1/var2)
print(var1%var2)
print(var1**var2)
print(var1//var2)
7.6
-1.5999999999999996
13.799999999999999
0.6521739130434783
3.0
156.58774563947273
0.0
Orden de las operaciones#
Exponentes.
Multiplicaciones y divisiones.
Sumas y restas.
a=5
b=7
c=3
print(a+b*c)
print((a+b)*c)
print(a**c+b*a-8) #125+35-8
print(a**(c+b)*(a-8)) # 5**10 * -3
26
36
152
-29296875
🧱 Tipos de datos esenciales#
Los tipos de datos indican qué clase de información estás manejando y qué operaciones tienen sentido.
Enteros (
int): números sin parte decimal.Decimales (
float): números con parte decimal.Texto (
str): cadenas de caracteres (letras, símbolos, números como texto).Booleanos (
bool): valores lógicos (verdadero/falso).
Por qué importan: el tipo define cómo se comporta un valor al operar con otros (por ejemplo, sumar números no es lo mismo que combinar textos).
edad=float(24)
print(edad)
24.0
#¿Recuerdas los tipos de datos?
nombre = 'Ana'
Apellido = 'Fuentes'
edad = 24
altura = 1.50
is_single= False
print(type(nombre)) #Función dentro de otra función
print(type(Apellido))
print(type(edad))
print(type(altura))
print(type(is_single))
#Guardamos el resultado de una función en una variable
a = type(edad)
#lo imprimimos
print("El tipo de dato de edad es: ", a)
<class 'str'>
<class 'str'>
<class 'int'>
<class 'float'>
<class 'bool'>
El tipo de dato de edad es: <class 'int'>
#¿Que pasa si operamos entre ellos?
#print(nombre + Apellido)
#print(nombre + Apellido + edad)
#print(nombre+ Apellido + str(edad))
🔄 Conversión de tipos (casting)#
Convertir tipos es transformar un dato de un tipo a otro (por ejemplo, texto a número).
Se usa cuando los datos vienen en un formato diferente al que necesitas (muy común con entradas de usuario, archivos, APIs).
No siempre es posible: si el contenido no representa algo convertible, ocurre un error.
Idea clave: antes de operar, asegúrate de que los datos estén en el tipo correcto.
#Conversiones
#print("Oscar" * "Alma")
print("Oscar" + "Alma")
#print("Oscar" - "Alma")
print("Oscar" , "Alma")
#print("Oscar" + False)
print("Oscar" + str(False))
#print("Oscar" * 2.5)
print("Oscar" * int(2.5))
OscarAlma
Oscar Alma
OscarFalse
OscarOscar
#Más ejemplos
print(float(True))
print(float(False))
print(int(True))
print(int(False))
print(str(True))
print(str(False))
print("Oscar" + str(True))
print("Oscar" * int(True)) # Y si fuera False?
print("Oscar" * int(2.5))
1.0
0.0
1
0
True
False
OscarTrue
Oscar
OscarOscar
#Cuidado con:
a="1987" #Almacenado como String
b= 2345
print(a+b)
c= "El perro"
print(b+c)
print(b+int(c))
print(a+c)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[16], line 6
3 a="1987" #Almacenado como String
4 b= 2345
----> 6 print(a+b)
8 c= "El perro"
10 print(b+c)
TypeError: can only concatenate str (not "int") to str
🧵 Strings (texto)#
Un string es una secuencia de caracteres. Conceptos básicos:
Longitud: cantidad de caracteres.
Indexación: acceder a un carácter por posición.
Inmutabilidad: no se “edita” un string en el lugar; se crean nuevos strings.
Concatenación: unir textos para formar uno nuevo.
mytexto= "Esto es un string"
mytexto2= 'Esto es un string'
print(mytexto)
print(mytexto2)
Esto es un string
Esto es un string
mytexto = """Este es un string
con varias lineas"""
print(mytexto)
print("----------")
mytexto = "Este tambien es un \n string con \nvarias lineas"
print(mytexto)
Este es un string
con varias lineas
----------
Este tambien es un
string con
varias lineas
mytexto = "Este es\t \t un string con\t tabulaciones \t\t."
print(mytexto)
Este es un string con tabulaciones .
✨ Formateo de strings#
El formateo de strings es insertar valores dentro de texto de forma controlada y legible.
Permite construir mensajes, reportes y salidas con variables dentro.
También permite controlar la presentación de números (por ejemplo, decimales, separadores, porcentajes).
En Python moderno, la forma recomendada es el formateo directo dentro del string (f-strings), por claridad y facilidad de lectura.
nombre= "Gina"
apellido = "Buvoli"
ciudad = "Barranquilla"
print("Mi nombre es:",nombre, Apellido, "y vivo en:",ciudad)
Mi nombre es: Gina Buvoli y vivo en: Barranquilla
F-Strings#
nombre= "Gina"
apellido = "Buvoli"
ciudad = "Barranquilla"
print(f"Mi nombre es {nombre} {apellido} y vivo en {ciudad}")
producto= "Arroz"
precio= 356
descuento = 10
print(f"El precio del {producto} es ${precio}, con el descuento aplicado le queda en ${precio*(1- descuento/100)}")
Mi nombre es Gina Buvoli y vivo en Barranquilla
El precio del Arroz es $356, con el descuento aplicado le queda en $320.40000000000003
Actividad Práctica#
a = 5
b = 3
resultado = #####
print(# La suma de a + b es: Respuesta)
x = 4
y = "2"
producto = #####
print(#El resultado de la multiplicación es)
Problema
Juan tiene 35 años y planea retirarse a los 65 años. Actualmente, ahorra 300 dólares cada mes.
Si mantiene este ritmo de ahorro hasta su edad de retiro:
Calcula cuántos años le faltan para jubilarse. Convierte los años faltantes a meses. Calcula cuánto dinero habrá ahorrado en total. Muestra los resultados concatenando las variables en print, sin usar formato especial.
# Datos del problema
edad_actual = "35" # Edad de Juan como cadena de texto
edad_retiro = "65" # Edad de retiro como cadena de texto
ahorro_mensual = "300" # Ahorro mensual como cadena de texto
# Conversión de variables
edad_actual = int(edad_actual)
edad_retiro = int(edad_retiro)
ahorro_mensual = int(ahorro_mensual)
# Cálculos
anos_faltantes = edad_retiro - edad_actual
meses_faltantes = anos_faltantes * 12
total_ahorrado = meses_faltantes * ahorro_mensual
# Mostrar resultados
print("Juan tiene " + str(edad_actual) + " años y se retirará a los " + str(edad_retiro) + ".")
print("Le faltan " + str(anos_faltantes) + " años para jubilarse, lo que equivale a " + str(meses_faltantes) + " meses.")
print("Si ahorra $" + str(ahorro_mensual) + " al mes, habrá ahorrado un total de $" + str(total_ahorrado) + ".")
Juan tiene 35 años y se retirará a los 65.
Le faltan 30 años para jubilarse, lo que equivale a 360 meses.
Si ahorra $300 al mes, habrá ahorrado un total de $108000.
Conversión de minutos a horas
📌Un video dura “135” minutos. Convierte ese tiempo a horas y minutos.
✏ Pasos:
Convierte los minutos a número.
Divide entre 60 para obtener horas.
Calcula los minutos restantes.
Muestra el resultado en un print.
# Datos iniciales
tiempo_minutos = "135"
# Conversión y operación
minutos = int(tiempo_minutos)
horas = minutos // 60
min_restantes = minutos % 60
# Mostrar resultado
print("El video dura " + str(horas) + " horas y " + str(min_restantes) + " minutos.")
El video dura 2 horas y 15 minutos.
Mini reto integrador#
Calculadora de reserva:
Inputs como variables (no pedir input):
tarifa por noche, número de noches, fee de limpieza, descuento %, impuesto %
Calcula:
subtotal antes de descuento
descuento en dinero
subtotal con descuento
impuestos
total final
Genera un mensaje final con formateo:
muestra cada concepto y el total
Extra (si hay tiempo):
Crea una variable booleana
is_weekendy un “recargo” si es fin de semanaUsa dos totals, uno con recargo y otro sin recargo
👀 Ver solución
# =========================
# Reto integrador: Calculadora de reserva (SOLUCIÓN)
# =========================
# Inputs (variables base)
nightly_rate = 175.0 # tarifa por noche
nights = 4 # número de noches
cleaning_fee = 85.0 # fee de limpieza
discount_pct = 12.0 # descuento en %
tax_pct = 11.0 # impuesto en %
# 1) Subtotal antes de descuento
subtotal_before_discount = nightly_rate * nights + cleaning_fee
# 2) Descuento en dinero
discount_amount = subtotal_before_discount * (discount_pct / 100)
# 3) Subtotal con descuento
subtotal_after_discount = subtotal_before_discount - discount_amount
# 4) Impuestos (sobre el subtotal con descuento)
tax_amount = subtotal_after_discount * (tax_pct / 100)
# 5) Total final
total = subtotal_after_discount + tax_amount
# Mensaje final (formateado)
message = (
f"📌 Resumen de tu reserva\n"
f"- Noches: {nights}\n"
f"- Tarifa por noche: ${nightly_rate:,.2f}\n"
f"- Limpieza: ${cleaning_fee:,.2f}\n"
f"- Subtotal (antes de descuento): ${subtotal_before_discount:,.2f}\n"
f"- Descuento ({discount_pct:.0f}%): -${discount_amount:,.2f}\n"
f"- Subtotal (con descuento): ${subtotal_after_discount:,.2f}\n"
f"- Impuestos ({tax_pct:.0f}%): ${tax_amount:,.2f}\n"
f"✅ Total: ${total:,.2f}"
)
print(message)
# =========================
# EXTRA: escenario con recargo de fin de semana (sin condicionales)
# =========================
is_weekend = True
weekend_surcharge_pct = 8.0 # recargo %
# Total con recargo (escenario hipotético)
subtotal_weekend = (nightly_rate * (1 + weekend_surcharge_pct / 100)) * nights + cleaning_fee
discount_weekend = subtotal_weekend * (discount_pct / 100)
subtotal_weekend_after_discount = subtotal_weekend - discount_weekend
tax_weekend = subtotal_weekend_after_discount * (tax_pct / 100)
total_weekend = subtotal_weekend_after_discount + tax_weekend
print("\n🧾 Escenario con recargo de fin de semana (hipotético):")
print(f"- Total sin recargo: ${total:,.2f}")
print(f"- Total con recargo ({weekend_surcharge_pct:.0f}%): ${total_weekend:,.2f}")