5. Simulación de Datos Demográficos

numpy/numpy-aplicado-parte6
@Lautaroff 04-03-2025

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:

3️⃣ Mostrar los datos generados en formato tabular con encabezados adecuados.

4️⃣ Calcular y mostrar la media de:

🔹 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:

¡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}")
Lección Anterior Curso Siguiente Lección