CURSO BÁSICO DE PYTHON
Módulo 1: Introducción a Python
1.1 ¿Qué es Python?
Lenguaje de programación interpretado, multipropósito y fácil de aprender.
Usado en desarrollo web, ciencia de datos, inteligencia artificial, automatización, etc.
1.2 Instalación y Entorno de Desarrollo
Descargar Python desde: [Link]
Instalar un editor de código como VS Code, PyCharm o IDLE (incluido con Python).
Verificar instalación:
bash
python --version
1. Primer Programa: ¡Hola, Mundo!
python
print("¡Hola, Mundo!")
2. Variables y Tipos de Datos
# Variables básicas
nombre = "Juan" # str (cadena)
edad = 25 # int (entero)
altura = 1.75 # float (flotante)
es_estudiante = True # bool (booleano)
# Operaciones matemáticas
a = 10
b=3
suma = a + b # 13
resta = a - b #7
multiplicacion = a * b # 30
division = a / b # 3.333...
division_entera = a // b # 3
modulo = a % b #1
potencia = a ** b # 1000
3. Estructuras de Control
Condicionales (if, elif, else)
edad = 18
if edad >= 18:
print("Eres mayor de edad")
else:
print("Eres menor de edad")
Bucles (while y for)
# Bucle while
contador = 0
while contador < 5:
print(contador)
contador += 1
# Bucle for
for i in range(5): # 0, 1, 2, 3, 4
print(i)
4. Listas y Diccionarios
Listas (list)
frutas = ["manzana", "banana", "naranja"]
print(frutas[0]) # "manzana"
[Link]("uva") # Añade "uva" al final
Diccionarios (dict)
python
persona = {
"nombre": "Ana",
"edad": 30,
"ciudad": "Madrid"
}
print(persona["nombre"]) # "Ana"
5. Funciones
# Función básica
def saludar(nombre):
return f"Hola, {nombre}!"
mensaje = saludar("Carlos")
print(mensaje) # "Hola, Carlos!"
# Función con parámetros por defecto
def suma(a, b=5):
return a + b
print(suma(3)) # 8 (3 + 5)
print(suma(3, 7)) # 10
6. Proyecto Final: Calculadora Simple
def calculadora():
print("1. Suma")
print("2. Resta")
print("3. Multiplicación")
print("4. División")
opcion = input("Elige una opción (1-4): ")
num1 = float(input("Ingresa el primer número: "))
num2 = float(input("Ingresa el segundo número: "))
if opcion == '1':
print(f"Resultado: {num1 + num2}")
elif opcion == '2':
print(f"Resultado: {num1 - num2}")
elif opcion == '3':
print(f"Resultado: {num1 * num2}")
elif opcion == '4':
print(f"Resultado: {num1 / num2}")
else:
print("Opción inválida")
calculadora()
EJERCICIOS CON SCIPY - CURSO BÁSICO
SciPy es una biblioteca fundamental para computación científica en Python.
Módulo Aplicación típica
[Link] Álgebra lineal (matrices, sistemas de ecuaciones, descomposiciones).
[Link] Optimización y ajuste de modelos (minimización, regresión, root-finding).
[Link] Integración numérica y solución de ecuaciones diferenciales (ODEs).
[Link] Estadística (distribuciones, tests estadísticos, análisis de datos).
[Link] Procesamiento de señales (filtros, Fourier, wavelets).
[Link] Transformadas rápidas de Fourier (FFT).
[Link] Interpolación de datos (1D, 2D, splines).
[Link] Matrices dispersas (eficiencia en almacenamiento y operaciones).
[Link] Funciones matemáticas especiales (Bessel, gamma, erf, etc.).
[Link] Procesamiento de imágenes (filtros, morfología, medidas).
1. Álgebra Lineal ([Link])
from scipy import linalg
import numpy as np
# Ejercicio 1: Resolver sistema de ecuaciones
# 2x + y = 5
# x - 3y = -1
A = [Link]([[2, 1], [1, -3]])
b = [Link]([5, -1])
solucion = [Link](A, b)
print(f"Solución del sistema: x = {solucion[0]}, y = {solucion[1]}")
# Ejercicio 2: Calcular determinante e inversa
matriz = [Link]([[4, 7], [2, 6]])
det = [Link](matriz)
inversa = [Link](matriz)
print(f"Determinante: {det}\nInversa:\n{inversa}")
2. Optimización ([Link])
from [Link] import minimize
# Ejercicio 3: Minimizar función cuadrática
def funcion(x):
return x**2 + 5*x + 6
resultado = minimize(funcion, x0=0)
print(f"Mínimo en x = {resultado.x[0]:.2f}")
# Ejercicio 4: Ajuste de curva (regresión lineal)
x_data = [Link]([0, 1, 2, 3, 4])
y_data = [Link]([1.1, 1.9, 3.2, 4.0, 5.1])
def modelo(x, a, b):
return a*x + b
from [Link] import curve_fit
params, _ = curve_fit(modelo, x_data, y_data)
print(f"Parámetros: Pendiente = {params[0]:.2f}, Intercepto = {params[1]:.2f}")
3. Estadística ([Link])
from scipy import stats
# Ejercicio 5: Distribución normal
datos = [Link](loc=10, scale=2, size=100)
media, desviacion = [Link](datos)
print(f"Ajuste normal: μ = {media:.2f}, σ = {desviacion:.2f}")
# Ejercicio 6: Test t de Student
grupo1 = [Link](5, 1, 30)
grupo2 = [Link](6, 1, 30)
t_stat, p_valor = stats.ttest_ind(grupo1, grupo2)
print(f"Test t: p-valor = {p_valor:.4f} (significativo si p < 0.05)")
# 1. Estadísticas descriptivas
# Importar librerías necesarias
from scipy import stats
import numpy as np
import [Link] as plt
# 1. Generar datos de ejemplo (calificaciones de 0 a 20)
[Link](42) # Para reproducibilidad
calificaciones = [Link](loc=12, scale=3, size=50)
calificaciones = [Link](calificaciones, 0, 20) # Limitar entre 0 y 20
calificaciones = [Link](calificaciones, 1) # Redondear a 1 decimal
print("Muestra de calificaciones:", calificaciones[:10])
Cálculo de estadísticas descriptivas con SciPy
# 2. Medidas de tendencia central
media = [Link](calificaciones)
mediana = [Link](calificaciones)
moda_result = [Link](calificaciones)
# 3. Medidas de dispersión
desviacion = [Link](calificaciones)
rango = [Link](calificaciones) # Peak to peak (máx - mín)
rango_intercuartil = [Link](calificaciones)
# 4. Forma de la distribución
asimetria = [Link](calificaciones)
curtosis = [Link](calificaciones)
# 5. Mostrar resultados
print("\n--- Estadísticas Descriptivas ---")
print(f"Media: {media:.2f}")
print(f"Mediana: {mediana:.2f}")
print(f"Moda: {moda_result.mode[0]} (aparece {moda_result.count[0]} veces)")
print(f"\nDesviación estándar: {desviacion:.2f}")
print(f"Rango: {rango:.2f}")
print(f"Rango intercuartílico (IQR): {rango_intercuartil:.2f}")
print(f"\nAsimetría: {asimetria:.2f}")
print(f"Curtosis: {curtosis:.2f}")
Visualización de resultados
# 6. Crear gráficos
[Link](figsize=(12, 5))
# Histograma
[Link](1, 2, 1)
[Link](calificaciones, bins=10, edgecolor='black', alpha=0.7)
[Link](media, color='red', linestyle='--', label=f'Media ({media:.2f})')
[Link](mediana, color='green', linestyle=':', label=f'Mediana ({mediana:.2f})')
[Link]('Distribución de Calificaciones')
[Link]('Puntaje')
[Link]('Frecuencia')
[Link]()
# Boxplot
[Link](1, 2, 2)
[Link](calificaciones, vert=False)
[Link]('Diagrama de Caja')
[Link]('Puntaje')
plt.tight_layout()
[Link]()