armonic_mean() en Python

La media armónica (también conocida como media contraria) es uno de varios tipos de media y, en particular, una de las medias pitagóricas. Por lo general, se usa en situaciones en las que se desean tasas promedio. La media armónica es también el recíproco de la media aritmética de los recíprocos de un conjunto dado de observaciones.

Por ejemplo, la media armónica de 1, 4 y 4 se puede calcular como: 

{\displaystyle \left({\frac {1^{-1}+4^{-1}+4^{-1}}{3}}\right)^{-1}={\frac {3}{{\frac {1}{1}}+{\frac {1}{4}}+{\frac {1}{4}}}}={\frac {3}{1.5}}=2\, }

La media armónica se puede incorporar en Python3 usando la función harmonic_mean() del módulo de estadísticas.  

Sintaxis: harmonic_mean ([conjunto de datos])
Parámetros:  
[conjunto de datos] : que es una lista o tupla o iterador de números con valores reales.
Returntype: Devuelve el armonic_mean del conjunto de datos dado.
Errores y excepciones:
StatisticsError cuando se pasa un conjunto de datos vacío o si el conjunto de datos consta de valores negativos. 
TypeError para conjuntos de datos de valores de tipo no numérico. 
 

Nota: La media armónica se calcula solo usando valores positivos en la lista, el conjunto o cualquier secuencia. 
 
Código #1: 

Python3

# Python3 code to demonstrate the
# working of harmonic_mean() function
 
# Import statistics module
import statistics
 
# list of positive real valued numbers
data = [1, 3, 5, 7, 9]
 
# using harmonic mean function to calculate
# the harmonic mean of the given data-set
print("Harmonic Mean is % s " % (statistics.harmonic_mean(data)))

Producción : 

Harmonic Mean is 2.797513321492007 

Código #2: 

Python3

# Python3 program to demonstrate harmonic_mean()
# function from the statistics module
 
# Importing the statistics module
from statistics import harmonic_mean
 
# Importing fractions module as fr
from fractions import Fraction as fr
 
# tuple of positive integer numbers
data1 = (2, 3, 4, 5, 7, 9, 11)
 
# tuple of a set of floating-point values
data2 = (2.4, 5.1, 6.7, 8.9)
 
# tuple of a set of fractional numbers
data3 = (fr(1, 2), fr(44, 12), fr(10, 3), fr(2, 3))
 
# dictionary of a set of values
# Only the keys are taken in
# consideration by harmonic_mean()
data4 = {1: "one", 2: "two", 3: "three"}
 
# Printing the harmonic mean of above datasets
print("Harmonic Mean of data set 1 is % s"
                 % (harmonic_mean(data1)))
                  
print("Harmonic Mean of data set 2 is % s"
                 % (harmonic_mean(data2)))
 
print("Harmonic Mean of data set 3 is % s"
                 % (harmonic_mean(data3)))
                  
print("Harmonic Mean of data set 4 is % s"
                % (harmonic_mean(data4)))

Producción : 

Harmonic Mean of data set 1 is 4.299197943900386
Harmonic Mean of data set 2 is 4.574783168721765
Harmonic Mean of data set 4 is 55/56
Harmonic Mean of data set 5 is 1.6363636363636365

Código #3: Demostración de error de estadísticas 

Python3

# Python code to demonstrate StatisticsError
# while using harmonic_mean()
 
# importing statistics module
import statistics
 
# data-set of numbers containing
# a negative number
dat1 = [1, -1]
 
# Statistics Error is raised when the
# data-set passed as parameter is
# empty or contain a negative value
print(statistics.harmonic_mean(dat1))

Producción : 

Traceback (most recent call last):
  File "C:/Users/Souveek/PycharmProjects/Test.py", line 12, in 
    print(statistics.harmonic_mean((1, -1)))
  File "C:\Users\Souveek\AppData\Local\Programs\Python\Python36-32\Lib\statistics.py", line 356, in harmonic_mean
    T, total, count = _sum(1/x for x in _fail_neg(data, errmsg))
  File "C:\Users\Souveek\AppData\Local\Programs\Python\Python36-32\Lib\statistics.py", line 148, in _sum
    for n, d in map(_exact_ratio, values):
  File "C:\Users\Souveek\AppData\Local\Programs\Python\Python36-32\Lib\statistics.py", line 356, in 
    T, total, count = _sum(1/x for x in _fail_neg(data, errmsg))
  File "C:\Users\Souveek\AppData\Local\Programs\Python\Python36-32\Lib\statistics.py", line 285, in _fail_neg
    raise StatisticsError(errmsg)
statistics.StatisticsError: harmonic mean does not support negative values

Nota: Es posible que los siguientes códigos no se ejecuten en IDE en línea, ya que la función harmonic_mean() se introdujo recientemente en Python3.6 
  
Aplicaciones: 
Harmonic Mean es una de las muchas herramientas importantes en finanzas (en estadísticas). La media armónica ponderada es el método preferible para promediar múltiplos, como la relación precio-beneficio (P/E), en la que el precio está en el numerador. También se usa en cálculos en lugares donde la media aritmética sobreestima el resultado requerido. 
 

Publicación traducida automáticamente

Artículo escrito por retr0 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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