python - para - Cómo encontrar la mediana
media en python (6)
Esta pregunta ya tiene una respuesta aquí:
- Encontrar la mediana de la lista en Python 18 respuestas
Tengo datos como este.
Ram,500
Sam,400
Test,100
Ram,800
Sam,700
Test,300
Ram,900
Sam,800
Test,400
¿Cuál es el camino más corto para eliminar la "mediana" de los datos anteriores? Mi resultado debería ser algo como ...
Mediana = 1/2 (n + 1), donde n es el número de valores de datos en la muestra.
Test 500
Sam 700
Ram 800
Comencé con la respuesta del usuario 3100512 y rápidamente me di cuenta de que no funciona para un número par de artículos. Le agregué algunos condicionales para calcular la mediana.
def median(x):
if len(x)%2 != 0:
return sorted(x)[len(x)/2]
else:
midavg = (sorted(x)[len(x)/2] + sorted(x)[len(x)/2-1])/2.0
return midavg
median([4,5,6,7])
debe devolver 5.5
La forma más fácil de obtener la mediana de una lista con datos enteros:
x = [1,3,2]
print "The median of x is:",sorted(x)[len(x)//2]
Mira esto:
def median(lst):
even = (0 if len(lst) % 2 else 1) + 1
half = (len(lst) - 1) / 2
return sum(sorted(lst)[half:half + even]) / float(even)
Nota:
sorted(lst)
produce una copia ordenada de lst
;
sum([1]) == 1
;
No está claro cómo se representan realmente sus datos, así que asumí que es una lista de tuplas:
data = [(''Ram'',500), (''Sam'',400), (''Test'',100), (''Ram'',800), (''Sam'',700),
(''Test'',300), (''Ram'',900), (''Sam'',800), (''Test'',400)]
from collections import defaultdict
def median(mylist):
sorts = sorted(mylist)
length = len(sorts)
if not length % 2:
return (sorts[length / 2] + sorts[length / 2 - 1]) / 2.0
return sorts[length / 2]
data_dict = defaultdict(list)
for el in data:
data_dict[el[0]].append(el[1])
print [(key,median(val)) for key, val in data_dict.items()]
print median([5,2,4,3,1])
print median([5,2,4,3,1,6])
#output:
[(''Test'', 300), (''Ram'', 800), (''Sam'', 700)]
3
3.5
La función median
devuelve la mediana de una lista. Si hay un número par de entradas, toma el valor medio de las dos entradas del medio (esto es estándar).
He usado defaultdict para crear un dictado por sus datos y sus valores, que es una representación más útil de sus datos.
Python 3.4 incluye statistics integradas, por lo que puedes usar el método statistics.median
:
>>> from statistics import median
>>> median([1, 3, 5])
3
Usa la función mediana de numpy .