Bienvenido a Python Educativo
Esta plataforma interactiva cubre todo lo necesario para aprender Python: desde fundamentos hasta temas avanzados como NumPy, Pandas, broadcasting en entornos distribuidos y GPU. Incluye quizzes, ejecución de código en vivo con Brython (para basics) y ejemplos prácticos. Progreso:
Instala Python en python.org o usa editores online como Replit.
Historia y Evolución de Python
Python fue creado por Guido van Rossum en los Países Bajos a finales de los 80s. Lanzado en 1991, su nombre viene de "Monty Python's Flying Circus".
Evolución Clave
- 1991: Python 0.9.0 con módulos básicos.
- 2000: Python 2.0 con list comprehensions.
- 2008: Python 3.0 rompe compatibilidad.
- 2020: Fin de soporte para Python 2.
- 2025: Python 3.12+ con +50% velocidad y patrones de coincidencia.
Comunidad activa via PSF. Más info.
Quiz: ¿Quién creó Python?
Contenido Básico
Fundamentos para principiantes: variables, control de flujo, funciones.
Hola Mundo
Variables y Tipos
Control de Flujo
Quiz: Output de range(3)
Contenido Avanzado
POO, decoradores, generadores, manejo de excepciones.
POO
Decoradores
Quiz: ¿Qué es un decorador?
Tutorial Pandas
Pandas es esencial para datos tabulares. Instala con pip install pandas. Basado en docs 2.3.3 (2025).
Crear DataFrame
import pandas as pd
data = {'Nombre': ['Ana', 'Bob'], 'Edad': [25, 30]}
df = pd.DataFrame(data)
print(df)
Filtrar Datos
mayores = df[df['Edad'] > 25]
print(mayores)
Estadísticas
print(df.describe())
Explicación: DataFrames como Excel en Python. Más en Getting Started y User Guide.
Quiz: ¿Qué hace df.describe()?
Bibliotecas Clave de Python en 2025
| Categoría | Biblioteca | Descripción |
|---|---|---|
| Manipulación de Datos | NumPy | Arrays y matemáticas eficientes. |
| Manipulación de Datos | Pandas | Análisis de datos tabulares. |
| Visualización | Matplotlib | Gráficos estáticos. |
| ML | PyTorch | Deep learning dinámico. |
| ML | TensorFlow | Deep learning con GPU. |
| Web | Django | Framework full-stack. |
| Web | FastAPI | APIs asincrónicas. |
| NLP | SpaCy | Procesamiento de lenguaje. |
| Scraping | Requests | Solicitudes HTTP. |
Ejemplos de Código
NumPy Media
import numpy as np
arr = np.array([1,2,3,4,5])
print(np.mean(arr))
Pandas Filtrar
import pandas as pd
data = {'Edad': [25,30]}
df = pd.DataFrame(data)
print(df[df['Edad'] > 25])
Tutorial Paso a Paso de NumPy
NumPy para arrays numéricos. Instala: pip install numpy.
Crear Arrays
import numpy as np
arr1 = np.array([1, 2, 3])
print(arr1)
Operaciones
suma = arr1 + 10
print(suma)
Estadísticas
media = np.mean(arr1)
print(media)
Explicación
Arrays multidimensionales, vectorización para eficiencia. Ejemplo práctico: Análisis de temperaturas.
Ejemplo Completo
temps = np.array([22.5, 24.0, 23.1])
print(np.mean(temps))
Más en Docs NumPy.
Quiz: ¿Qué hace np.mean?
Broadcasting en NumPy
Broadcasting opera arrays de shapes diferentes expandiendo dims de 1.
Reglas
- Compara dims desde la derecha.
- Dims iguales o 1 se expanden.
import numpy as np
a = np.array([1,2,3])
b = 2
print(a * b) # [2 4 6]
Ejemplo 2D
c = np.ones((3,2))
d = np.array([5,10])
print(c * d)
Explicación: d se expande a (1,2) y luego a (3,2). Más en Docs.
Quiz: Shapes compatibles (3,2) y (2,)?
Broadcasting Avanzado en NumPy
Aplicaciones complejas: dims superiores, np.newaxis, máscaras.
3D Broadcasting
import numpy as np
a = np.ones((3,2,1))
b = np.array([10,20])
print(a * b)
Con np.newaxis
c = np.array([1,2,3])
d = c[:, np.newaxis] + c
print(d)
Máscaras
e = np.array([[1,2,3],[4,5,6]])
mask = e > 3
f = np.where(mask, e*2, e/2)
print(f)
Explicación: np.newaxis agrega dims para expansión. Útil en ML para outer products. Pitfalls: Formas incompatibles lanzan ValueError.
Ejercicio
Calcula distancias euclidianas con broadcasting.
Quiz: ¿Qué hace np.newaxis?
Broadcasting con Dask Arrays
Dask extiende NumPy para big data, con broadcasting lazy en chunks.
Setup
import dask.array as da
import numpy as np
a = da.from_array(np.arange(6).reshape(2,3), chunks=(1,3))
b = da.from_array(np.ones(3), chunks=3)
result = a + b
print(result.compute())
da.broadcast_to
x = da.from_array(np.array([1,2,3]), chunks=3)
y = da.broadcast_to(x, shape=(4,3), chunks=(1,3))
print(y.compute())
Explicación: Lazy evaluation, chunks para paralelismo. No copia datos. Más en Dask Docs.
Quiz: ¿Qué es lazy en Dask?
Broadcasting en GPU con PyTorch
PyTorch acelera broadcasting en GPU para ML.
Setup
import torch
device = 'cuda' if torch.cuda.is_available() else 'cpu'
c = torch.ones((3,2)).to(device)
d = torch.tensor([5.,10.]).to(device)
result = c * d
print(result)
3D
e = torch.ones((2,3,4)).to(device)
f = torch.tensor([100.,200.,300.]).to(device)
result2 = e * f.unsqueeze(0)
print(result2.shape)
Explicación: Similar a NumPy, pero GPU acelera. Útil en batches. Más en PyTorch Docs.
Quiz: Device en PyTorch
Broadcasting con CuPy
CuPy: NumPy en GPU.
Simple
import cupy as cp
c = cp.ones((3,2))
d = cp.array([5.,10.])
result = c * d
print(result.get())
Multidimensional
e = cp.ones((2,3,4))
f = cp.array([100.,200.,300.])
result2 = e * f[:, cp.newaxis]
print(result2[0].get())
Explicación: broadcast_to como NumPy. Más en CuPy Docs.
Quiz: .get() en CuPy
Integración Dask-CuPy
Dask con CuPy para distributed GPU.
Crear Array
import dask.array as da
import cupy as cp
cupy_arr = cp.arange(100000).reshape(100,1000)
dask_arr = da.from_array(cupy_arr, chunks=(10,100), asarray=False)
print(dask_arr.shape)
Operación
result = (dask_arr + 1).sum().compute()
print(result)
Explicación: Chunks en GPU, lazy. Para multi-GPU, usa LocalCUDACluster. Más en Dask GPU Docs.
Quiz: asarray=False en Dask-CuPy
Importancia y Aplicaciones
Python domina en 2025: IA, data science.
- Web: Django/Flask para Instagram.
- ML: PyTorch en Netflix.
- Automatización: Scripts DevOps.
- IA: xAI con Python.