Saltar al contenido

Python – Promedio ponderado de una lista

Tenemos la solución a este rompecabezas, o por lo menos eso deseamos. Si sigues con inquietudes puedes escribirlo en el apartado de comentarios, que para nosotros será un placer ayudarte

Solución:

podrías usar numpy.average para calcular el promedio ponderado.

In [13]: import numpy as np

In [14]: rate = [14.424, 14.421, 14.417, 14.413, 14.41]

In [15]: amount = [3058.0, 8826.0, 56705.0, 30657.0, 12984.0]

In [17]: weighted_avg = np.average(rate, weights=amount)

In [19]: weighted_avg
Out[19]: 14.415602815646439

for g in range(len(rate)):
   rate[g] = rate[g] * amount[g] / sum(amount)
rate = sum(rate)

es lo mismo que:

sum(rate[g] * amount[g] / sum(amount) for g in range(len(rate)))

que es lo mismo que:

sum(rate[g] * amount[g] for g in range(len(rate))) / sum(amount)

que es lo mismo que:

sum(x * y para x, y en zip(tasa, cantidad)) / sum(cantidad)

Resultado:

14.415602815646439

Esto parece un promedio ponderado.

values = [1, 2, 3, 4, 5]
weights = [2, 8, 50, 30, 10]

s = 0
for x, y in zip(values, weights):
    s += x * y

average = s / sum(weights)
print(average) # 3.38

Esto produce 3.38que de hecho tiende más hacia los valores con los pesos más altos.

Comentarios y valoraciones del artículo

Si eres capaz, puedes dejar un escrito acerca de qué te ha gustado de este post.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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