Finding median of list in Python Finding median of list in Python python python

Finding median of list in Python


Python 3.4 has statistics.median:

Return the median (middle value) of numeric data.

When the number of data points is odd, return the middle data point. When the number of data points is even, the median is interpolated by taking the average of the two middle values:

>>> median([1, 3, 5])3>>> median([1, 3, 5, 7])4.0

Usage:

import statisticsitems = [6, 1, 8, 2, 3]statistics.median(items)#>>> 3

It's pretty careful with types, too:

statistics.median(map(float, items))#>>> 3.0from decimal import Decimalstatistics.median(map(Decimal, items))#>>> Decimal('3')


(Works with ):

def median(lst):    n = len(lst)    s = sorted(lst)    return (sum(s[n//2-1:n//2+1])/2.0, s[n//2])[n % 2] if n else None

>>> median([-5, -5, -3, -4, 0, -1])-3.5

numpy.median():

>>> from numpy import median>>> median([1, -4, -1, -1, 1, -3])-1.0

For , use statistics.median:

>>> from statistics import median>>> median([5, 2, 3, 8, 9, -2])4.0


The sorted() function is very helpful for this. Use the sorted functionto order the list, then simply return the middle value (or average the two middlevalues if the list contains an even amount of elements).

def median(lst):    sortedLst = sorted(lst)    lstLen = len(lst)    index = (lstLen - 1) // 2       if (lstLen % 2):        return sortedLst[index]    else:        return (sortedLst[index] + sortedLst[index + 1])/2.0