human
I wrote the below code

    def _bootstrap_median(data, N=5000):
        M = len(data)
        percentiles = [2.5, 97.5]
        bs_index = np.random.randint(M, size=(N, M))
        bsData = data[bs_index]
        estimate = np.median(bsData, axis=1, overwrite_input=True)
        CI = np.percentile(estimate, percentiles)
        return CI
    def _compute_conf_interval(data, med, iqr, bootstrap):
        if (bootstrap is not None):
            CI = _bootstrap_median(data, N=bootstrap)
            notch_min = CI[0]
            notch_max = CI[1]
        else:
            N = len(data)
            notch_min = (med - ((1.57 * iqr) / np.sqrt(N)))
            notch_max = (med + ((1.57 * iqr) / np.sqrt(N)))
        return (notch_min, notch_max)
    bxpstats = []
    X = _reshape_2D(X, u'X')
    ncols = len(X)
    if (labels is None):
        labels = repeat(None)
    elif (len(labels) != ncols):
        raise ValueError(u'Dimensions    of    labels    and    X    must    be    compatible')
    input_whis = whis
    for (ii, (x, label)) in enumerate(zip(X, labels), start=0):
        stats = {}
        if (label is not None):
            stats[u'label'] = label
        whis = input_whis
        bxpstats.append(stats)
        if (len(x) == 0):
            stats[u'fliers'] = np.array([])
            stats[u'mean'] = np.nan
            stats[u'med'] = np.nan
            stats[u'q1'] = np.nan
            stats[u'q3'] = np.nan
            stats[u'cilo'] = np.nan
            stats[u'cihi'] = np.nan
            stats[u'whislo'] = np.nan
            stats[u'whishi'] = np.nan
            stats[u'med'] = np.nan
            continue
        x = np.asarray(x)
        stats[u'mean'] = np.mean(x)
        (q1, med, q3) = np.percentile(x, [25, 50, 75])
        stats[u'iqr'] = (q3 - q1)
        if ((stats[u'iqr'] == 0) and autorange):
            whis = u'range'
        (stats[u'cilo'], stats[u'cihi']) = _compute_conf_interval(x, med, stats[u'iqr'], bootstrap)
        if np.isscalar(whis):
            if np.isreal(whis):
                loval = (q1 - (whis *...

What's a good function header?

=====
Here's a good function header?
assistant
#Here's a good function header.

def boxplot_stats(X, whis=1.5, bootstrap=None, labels=None, autorange=False):