Este ejercicio te lo dejo para que lo intentes solo/a. Abajo encontrarás un código de ejemplo para que lo compares y un video explicativo, pero intenta verlo después de hacer el tuyo.
Consigna del Ejercicio
📌 Generación y Análisis de Datos Aleatorios
🔹 Objetivo:
Crear un programa en Python que genere una cantidad determinada de datos aleatorios sobre personas y realice cálculos estadísticos básicos a partir de ellos.
🔹 Instrucciones:
1️⃣ Solicitar al usuario la cantidad de datos a generar.
2️⃣ Crear una matriz para almacenar la información, con las siguientes columnas:
- Sexo: Puede ser “MASCULINO”, “FEMENINO” o “NO ESPECIFICA” (elegido aleatoriamente).
- Edad: Número entero aleatorio entre 28 y 60 años.
- Altura: Número entero aleatorio entre 150 cm y 210 cm.
- Peso: Número entero aleatorio entre 50 kg y 110 kg.
- Horas de descanso: Número decimal aleatorio entre 1 y 9 horas, con dos decimales.
- Horas de trabajo/estudio: Número decimal aleatorio entre 0 y 9 horas, con dos decimales.
- Horas de ejercicio: Número decimal aleatorio entre 0 y 4 horas, con dos decimales.
3️⃣ Mostrar los datos generados en formato tabular con encabezados adecuados.
4️⃣ Calcular y mostrar la media de:
- Altura (en cm)
- Peso (en kg)
- Horas de descanso
- Horas de trabajo/estudio
- Horas de ejercicio
🔹 Ejemplo de salida esperada:
Ingrese la cantidad de datos a generar: 5
Sexo Edad Altura Peso Hs Descanso Hs Trab/Est Hs Ejercicio
MASCULINO 35 180 75 6.50 4.20 1.50
FEMENINO 42 170 65 7.80 3.90 2.00
NO ESPECIFICA 50 190 85 5.40 6.00 0.80
MASCULINO 29 175 68 8.00 2.30 3.20
FEMENINO 56 185 80 4.90 5.10 1.70
Media de altura: 180.00 cm
Media de peso: 74.60 kg
Media de horas de descanso: 6.52
Media de horas de trabajo/estudio: 4.30
Media de horas de ejercicio: 1.84
💡 Notas:
- Usa
numpy
para manejar los arrays y cálculos. - Asegúrate de redondear los valores de horas a dos decimales.
- Prueba con diferentes cantidades de datos para verificar el funcionamiento del código.
¡Intenta resolverlo y luego compara con el código de ejemplo y el video explicativo! 🚀
cantidad_datos = int(input('Ingrese la cantidad de datos a generar: '))
sexos = ['MASCULINO', 'FEMENINO', 'NO ESPECIFICA']
datos = np.empty((cantidad_datos, 7), dtype=object)
for i in range(cantidad_datos):
datos[i, 0] = np.random.choice(sexos)
datos[i, 1] = np.random.randint(28, 61) # Edad
datos[i, 2] = np.random.randint(165, 211) # Altura en cm
datos[i, 3] = np.random.randint(50, 111) # Peso en kg
datos[i, 4] = round(np.random.uniform(1, 9), 2) # Horas de descanso
datos[i, 5] = round(np.random.uniform(0, 9), 2) # Horas de trabajo/estudio
datos[i, 6] = round(np.random.uniform(0, 4), 2) # Horas de ejercicio
# Mostrar datos en formato tabular (texto)
cabeceras = ['Sexo', 'Edad', 'Altura', 'Peso', 'Hs Descanso', 'Hs Trab/Est', 'Hs Ejercicio']
print("{:<15} {:<10} {:<10} {:<10} {:<15} {:<15} {:<15}".format(*cabeceras))
for fila in datos:
print("{:<15} {:<10} {:<10} {:<10} {:<15} {:<15} {:<15}".format(*fila))
# Cálculo de medias
alturas = datos[:, 2].astype(int)
pesos = datos[:, 3].astype(int)
descansos = datos[:, 4].astype(float)
trabajo = datos[:, 5].astype(float)
ejercicio = datos[:, 6].astype(float)
print(f"Media de altura: {np.mean(alturas):.2f} cm")
print(f"Media de peso: {np.mean(pesos):.2f} kg")
print(f"Media de horas de descanso: {np.mean(descansos):.2f}")
print(f"Media de horas de trabajo/estudio: {np.mean(trabajo):.2f}")
print(f"Media de horas de ejercicio: {np.mean(ejercicio):.2f}")