summaryrefslogtreecommitdiff
path: root/tablib/packages/statistics.py
blob: e97a6c932e5602e5207df67866ba488c65c565f5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from __future__ import division


def median(data):
    """
    Return the median (middle value) of numeric data, using the common
    "mean of middle two" method. If data is empty, ValueError is raised.

    Mimics the behaviour of Python3's statistics.median

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

    """
    data = sorted(data)
    n = len(data)
    if not n:
        raise ValueError("No median for empty data")
    i = n // 2
    if n % 2:
        return data[i]
    return (data[i - 1] + data[i]) / 2