Estadística con Python

Procesos estadísticos en Python

Estadística con Python: En el post de hoy, vamos a construir un pequeño programa en Python que va a permitir a un docente, calcular un estadístico para las notas de sus alumnos, la media. Es decir, el promedio de los resultados de las calificaciones de cada alumno y del conjunto de la clase.

Módulo Statistics de Python para Estadística con Python

Para llevar a cabo el procedimiento de Estadística con Python, no vamos a utilizar Pandas, sino que emplearemos variables y listas y el módulo Statistics. Las variables irán recogiendo mediante el método imput los nombres de los alumnos y sus notas, y mediante el método append se irán agregando a cada lista. De ahí, con el modulo Statistics calcularemos la media de cada secuencia de notas. Comentar que Statistics dispone de otros estadísticos para procesos de Estadística con Python más alla de la media aritmética.

estadistica con Python
En primer lugar creamos las listas

Convertir el valor de una variable en parte de la secuencia de elementos de una lIsta en Python

Mediante el siguiente procedimiento, recogemos el valor de una variable y lo agregamos a una lista, dentro de un bucle While.

En este caso vamos añadiendo los nombres de los alumnos:

Alumno es una variable que recoge un valor, este valor que será el nombre del alumno es agregado a la lista de alumnos mediante el método append

Igual que se van recogiendo los nombres de los alumnos en el listado en orden, se van añadiendo las notas de las diferentes asignaturas:

input recoge la nota de matematicas como variable, la convierte a float y la añade al listado de notas de matemáticas

A medida que se cumplimentan las notas de Matematicas, Lengua, Ciencias Sociales y Ciencias Naturales, estás van agregándose al igual que el nombre, a sus propios listado. Declaramos en el inicio del documento.

Método Zip en Python

Mediante la función zip de Python, he unido las listas de alumnos y las notas de las 4 asignaturas.

estadistica con Python
Se ha creado una nueva lista media_alumno, que va agregando el resultado promedio de las 4 notas de cada alumno.

Por último mediante un bucle for, se ha extraído cada par de valores, alumnos y media para cada alumno, iterando sobre el elemento zipeado.

Para finalizar el ejercicio se ha extraído la media de cada una de las listas de notas, esto es para: Matemáticas, Lengua, Ciencias Sociales y Ciencias Naturales.

estadistica con Python
La librería Statistics dispone de algunos estadísticos interesantes alternativos a Pandas

A continuación dispones de todo el código del ejercicio para que lo pegues en tu editor de Python:

# -*- coding: utf-8 -*-
"""
Created on Sat Oct  2 09:23:56 2021

@author: ruizg
"""
import statistics as st

lista_alumnos = [] # para crear el listado con los nombres de los alumnos
media_alumno = [] # para almacenar sus medias
nota_matematicas = [] # para listar las notas de matemáticas
nota_lengua = [] # para listar las notas de lengua
nota_ciencias_sociales = [] # para listar las notas de ciencias sociales
nota_ciencias_naturales = [] # para listar las notas de ciencias naturales

while True:
     alumno = input("Introduce el nombre del alumno: ") # una pregunta que recoja los nombres
     if alumno == 'quit': break # con break salimos del bucle << quit >>
     lista_alumnos.append(alumno) # Agregamos los elementos alumno a su lista 
     
     matematicas = input("Nota de Matemáticas: ") # Recogemos en la variable matematicas la nota
     matematicas = float(matematicas) # La convertimos en float
     nota_matematicas.append(matematicas) # vamos añadiendo la variable nota a la lista de notas de matematicas

     lengua = input("Nota de Lengua: ")
     lengua = float(lengua)
     nota_lengua.append(lengua)     

     ciencias_sociales = input("Nota de Ciencias Sociales: ")
     ciencias_sociales = float(ciencias_sociales)
     nota_ciencias_sociales.append(ciencias_sociales)   
     
     ciencias_naturales = input("Nota de Ciencias Naturales: ")
     ciencias_naturales = float(ciencias_naturales)
     nota_ciencias_naturales.append(ciencias_naturales)     
     
     # Sumamos las notas y las convertimos en nota media
     nota_media = matematicas + lengua + ciencias_sociales + ciencias_naturales
     nota_media /= 4 # la dividimos por su longitud (4)
     media_alumno.append(nota_media) # la almacenamos como lista


media_zip = zip(lista_alumnos,media_alumno) # unimos con zip lista_alumnos, 
                                            # media_alumno para lanzarla en bucle 
                                            # como un diccionario
print("Las notas medias de los alumnos:")
for lista_alumnos,media_alumno in media_zip: 
    print(f"-{lista_alumnos.title()} nota media: {media_alumno}")

print("Nota media de Matemáticas",end="-> ")
media_matematicas = st.mean(nota_matematicas)
print(round(media_matematicas,1))
print("Nota media de Lengua",end="-> ")
media_lengua = st.mean(nota_lengua)
print(round(media_lengua,1))
print("Nota media de Ciencias Sociales",end="-> ")
media_ciencias_sociales = st.mean(nota_ciencias_sociales)
print(round(media_ciencias_sociales))
print("Nota media de Ciencias Naturales",end="-> ")
media_ciencias_naturales = st.mean(nota_ciencias_naturales)
print(round(media_ciencias_naturales,1))

Este sería su pantallazo:

estadistica con Python
El procedimiento permite extraer las notas medias de cada alumno y del conjunto de alumnos

Round para redondear la salida de resultados

Comentar el uso de round, se especifica 1 que es el número de decimales que se desea extraer.

La ejecución del ejercicio sería la siguiente. Se van introduciendo los nombres y notas de cada uno de los alumnos y cuando escribimos quit como nombre de los alumnos para salir, el intérprete de Python nos devuelve la nota media de cada uno de los alumnos de la clase y a continuación, nos devuelve las notas medias de cada una de las asignaturas:

estadistica con Python
Salida del interprete de Python en Spyder

Así pues, llevar a cabo un pequeño software que recoja los nombres y notas de los alumnos para que el interprete de Python los procese y devuelva sus estadísticos, es de suma facilidad.

Recuerda que al igual que puedes utilizar el método mean para el cálculo de la media aritmética, dispones de otros comandos en el módulo Statistics: desviación típica, varianza, mediana, moda… pruebalas en este mismo ejercicio o en otros. Siempre que quieras utilizar el módulo statistics simplemente debes encabezar el documento con import statistics como se ha hecho aquí. Introduciendo import statistics as st nos ha permitido utilizar un alias abreviado en la llamada a la libreria Statistics.

Mucho más sobre Python en database-academy.eu

Autor: ignacio

Profesor de Sistemas de Gestión de Información

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *