#!/usr/bin/env python
"Calculate Tukey's five number summary (minimum, lower-hinge, median, upper-hinge, maximum) of a number sequence based on 1.5 times the interquartile distance"

import numpy
from statstools import run
from scipy.stats import scoreatpercentile

def fivenum(data):
  q1 = scoreatpercentile(data,25)
  q3 = scoreatpercentile(data,75)
  iqd = q3-q1
  md = numpy.median(data)
  whisker = 1.5*iqd
  return (min(data), md-whisker, md, md+whisker, max(data))

if __name__ == '__main__':
  run(fivenum, __doc__, format='min: %s\nlower hinge: %s\nmedian: %s\nupper hinge: %s\nmax: %s')
