Cálculo y Estadística
Python dispone de una amplia colección de módulos matemáticos dentro de su biblioteca estándar, que permiten realizar cálculos numéricos, operaciones aleatorias y análisis estadístico de forma precisa y eficiente. Estos módulos se utilizan constantemente tanto en programación científica como en aplicaciones de ingeniería, finanzas, educación o análisis de datos.
En este bloque se estudiarán tres de los módulos más relevantes en este ámbito:
math: proporciona funciones matemáticas avanzadas, constantes y conversiones.random: permite generar valores aleatorios y realizar simulaciones o selecciones al azar.statistics: ofrece herramientas básicas de análisis estadístico.
Su conocimiento resulta esencial para resolver problemas numéricos en Python de manera eficaz y profesional.
1️⃣ Módulo math
El módulo
mathincluye una gran variedad de funciones matemáticas y trigonométricas que complementan las operaciones básicas del lenguaje. Es especialmente útil para trabajar con raíces, potencias, logaritmos, redondeos, ángulos o constantes matemáticas como π (pi) y e.A diferencia de las operaciones básicas (
+,-,*,/,**), el módulomathproporciona mayor precisión, rendimiento optimizado y un conjunto de funciones diseñadas para cálculos científicos.
Antes de utilizarlo, debe importarse con la instrucción:
import math
🟩 Funciones más utilizadas
| Función | Descripción | Ejemplo |
|---|---|---|
sqrt(x) | Calcula la raíz cuadrada de x. | math.sqrt(16) → 4.0 |
pow(x, y) | Eleva x a la potencia y. | math.pow(2, 3) → 8.0 |
ceil(x) | Redondea hacia arriba el valor. | math.ceil(3.2) → 4 |
floor(x) | Redondea hacia abajo el valor. | math.floor(3.8) → 3 |
factorial(x) | Devuelve el factorial de x. | math.factorial(5) → 120 |
log(x, base) | Calcula el logaritmo de x en una base determinada (por defecto, e). | math.log(8, 2) → 3.0 |
sin(x), cos(x), tan(x) | Devuelven los valores trigonométricos del ángulo x (en radianes). | math.sin(math.pi/2) → 1.0 |
degrees(x) / radians(x) | Convierte entre grados y radianes. | math.degrees(math.pi) → 180.0 |
pi, e | Constantes matemáticas. | math.pi → 3.14159 |
🟦 Ejemplos prácticos
Cálculos geométricos
import math
radio = 5
area = math.pi * math.pow(radio, 2)
longitud = 2 * math.pi * radio
print(f"Área del círculo: {area:.2f}")
print(f"Longitud de la circunferencia: {longitud:.2f}")
- Este programa calcula el área y la longitud de una circunferencia utilizando la constante
piy la funciónmath.pow()para elevar al cuadrado el radio. - El formato
{:.2f}muestra el resultado con dos decimales, lo que mejora la presentación en pantalla.
Funciones trigonométricas
import math
angulo_grados = 30
angulo_radianes = math.radians(angulo_grados)
print(f"Seno({angulo_grados}°) = {math.sin(angulo_radianes):.3f}")
print(f"Coseno({angulo_grados}°) = {math.cos(angulo_radianes):.3f}")
- Las funciones trigonométricas del módulo
mathtrabajan en radianes, no en grados. - Por eso se convierte el valor de 30° a radianes con
math.radians(). - Esto es fundamental en aplicaciones geométricas o gráficas donde se requieran ángulos precisos.
🟨 Diferencia entre pow() y **
Aunque Python permite elevar números con el operador **, el uso de math.pow() puede ser preferible en cálculos científicos por su compatibilidad con números de coma flotante.
| Expresión | Resultado | Comentario |
|---|---|---|
5 ** 2 | 25 | Operador nativo, más rápido en enteros. |
math.pow(5, 2) | 25.0 | Devuelve siempre un float, más adecuado para cálculos de precisión. |
Usar ** es suficiente para exponentes simples; math.pow() conviene cuando se trabaja con valores decimales o funciones que esperan flotantes.
2️⃣ Módulo random
El módulo
randompermite generar valores aleatorios y realizar operaciones basadas en el azar. Es ampliamente utilizado en simulaciones, juegos, pruebas estadísticas y cualquier situación en la que se necesite un comportamiento no determinista.Internamente, Python utiliza algoritmos pseudoaleatorios: los resultados parecen aleatorios, pero se pueden reproducir si se define una semilla específica mediante
random.seed().
Para usarlo, se importa así:
import random
🟩 Funciones más utilizadas
| Función | Descripción | Ejemplo |
|---|---|---|
random() | Devuelve un número decimal aleatorio entre 0 y 1. | random.random() → 0.7431 |
randint(a, b) | Devuelve un número entero aleatorio entre a y b (ambos incluidos). | random.randint(1, 6) |
uniform(a, b) | Devuelve un número decimal aleatorio entre a y b. | random.uniform(5, 10) |
choice(seq) | Devuelve un elemento aleatorio de una secuencia. | random.choice(["rojo","azul","verde"]) |
shuffle(lista) | Reordena aleatoriamente los elementos de una lista. | random.shuffle(cartas) |
seed(x) | Establece una semilla para que los resultados sean reproducibles. | random.seed(10) |
🟦 Ejemplos prácticos
import random
dado = random.randint(1, 6)
print(f"Has sacado un {dado}")
Cada ejecución del programa genera un valor aleatorio entre 1 y 6, simulando el lanzamiento de un dado.
import random
cartas = ["A", "K", "Q", "J", "10", "9"]
random.shuffle(cartas)
print("Cartas barajadas:", cartas)
print("Carta extraída:", random.choice(cartas))
La función shuffle() mezcla aleatoriamente los elementos de una lista, mientras que choice() selecciona uno al azar.
Esta combinación es común en juegos o procesos de selección aleatoria.
🟨 Concepto de semilla
Los valores generados por random pueden repetirse de forma controlada si se utiliza una semilla.
Esto es útil cuando se necesita reproducir exactamente los mismos resultados en pruebas o simulaciones.
import random
random.seed(42)
print(random.random())
print(random.randint(1, 10))
- La llamada a
seed(42)inicializa el generador aleatorio con un valor fijo. - Cada vez que se ejecute el programa con la misma semilla, se obtendrán los mismos resultados.
3️⃣ Módulo statistics
El módulo
statisticsproporciona herramientas básicas para realizar análisis estadísticos descriptivos sobre colecciones de datos numéricos. Incluye funciones para calcular medias, medianas, modas, varianzas y desviaciones estándar. Aunque no reemplaza a librerías más completas comoNumPyopandas, resulta suficiente para tareas educativas o análisis sencillos.
Para usarlo se importa con:
import statistics
🟩 Funciones más utilizadas
| Función | Descripción | Ejemplo |
|---|---|---|
mean(datos) | Calcula la media aritmética. | statistics.mean([1, 2, 3]) → 2 |
median(datos) | Calcula la mediana. | statistics.median([1, 3, 3, 6, 7]) → 3 |
mode(datos) | Devuelve la moda. | statistics.mode([2, 2, 3, 3, 3, 4]) → 3 |
stdev(datos) | Calcula la desviación estándar. | statistics.stdev([1, 2, 3, 4, 5]) → 1.58 |
variance(datos) | Calcula la varianza. | statistics.variance([1, 2, 3, 4, 5]) → 2.5 |
🟦 Ejemplos prácticos
Estadísticas básicas
import statistics
notas = [7, 8.5, 6, 9, 7.5, 8]
print("Media:", statistics.mean(notas))
print("Mediana:", statistics.median(notas))
print("Moda:", statistics.mode(notas))
print("Desviación estándar:", round(statistics.stdev(notas), 2))
- El módulo
statisticspermite calcular las medidas más comunes de tendencia central y dispersión con gran sencillez. - El redondeo con
round()mejora la presentación de los resultados numéricos.
Análisis aplicado
import statistics
temperaturas = [22, 21, 23, 22, 24, 20, 22]
media = statistics.mean(temperaturas)
desviacion = statistics.stdev(temperaturas)
print(f"Temperatura media: {media:.1f}°C")
print(f"Variabilidad: {desviacion:.2f}°C")
Este ejemplo aplica el módulo statistics a un conjunto de datos reales, mostrando cómo obtener la media y la variabilidad de una serie de temperaturas diarias.
🟨 Comparación con librerías externas
El módulo statistics está orientado a análisis simples sobre listas pequeñas o medianas.
En cambio, librerías externas como NumPy o pandas están diseñadas para manejar grandes volúmenes de datos y ofrecen operaciones vectorizadas mucho más eficientes.
| Característica | statistics | NumPy |
|---|---|---|
| Incluido en la biblioteca estándar | ✅ | ❌ (requiere instalación) |
| Velocidad con grandes volúmenes | Media | Muy alta |
| Complejidad de uso | Baja | Media |
| Tipo de datos | Listas y secuencias | Arrays multidimensionales |
| Uso típico | Educación y análisis básico | Ciencia de datos, IA, simulaciones |
📊 Tabla resumen
| Módulo | Propósito principal | Ejemplo representativo |
|---|---|---|
math | Operaciones matemáticas, trigonometría y constantes. | math.sqrt(25) |
random | Generación de valores aleatorios y simulaciones. | random.randint(1, 6) |
statistics | Cálculos estadísticos básicos sobre datos numéricos. | statistics.mean(datos) |
Estos tres módulos constituyen la base de las operaciones numéricas y estadísticas en Python. Su comprensión es esencial para abordar tareas de cálculo, análisis de datos y simulación, tanto en contextos académicos como en el desarrollo de software técnico o científico.