def bootstrap_plot(series, fig=None, size=50, samples=500, **kwds):
    """
    Bootstrap plot on mean, median and mid-range statistics.

    The bootstrap plot is used to estimate the uncertainty of a statistic
    by relaying on random sampling with replacement [1]_. This function will
    generate bootstrapping plots for mean, median and mid-range statistics
    for the given number of samples of the given size.

    .. [1] "Bootstrapping (statistics)" in \
    https://en.wikipedia.org/wiki/Bootstrapping_%28statistics%29

    Parameters
    ----------
    series : pandas.Series
        Pandas Series from where to get the samplings for the bootstrapping.
    fig : matplotlib.figure.Figure, default None
        If given, it will use the `fig` reference for plotting instead of
        creating a new one with default parameters.
    size : int, default 50
        Number of data points to consider during each sampling. It must be
        greater or equal than the length of the `series`.
    samples : int, default 500
        Number of times the bootstrap procedure is performed.
    **kwds :
        Options to pass to matplotlib plotting method.

    Returns
    -------
    matplotlib.figure.Figure
        Matplotlib figure.

    See Also
    --------
    DataFrame.plot : Basic plotting for DataFrame objects.
    Series.plot : Basic plotting for Series objects.

    Examples
    --------

    .. plot::
            :context: close-figs

            >>> s = pd.Series(np.random.uniform(size=100))
            >>> fig = pd.plotting.bootstrap_plot(s)  # doctest: +SKIP
    """
    import random
    import matplotlib.pyplot as plt

    # random.sample(ndarray, int) fails on python 3.3, sigh
    data = list(series.values)
    samplings = [random.sample(data, size) for _ in range(samples)]

    means = np.array([np.mean(sampling) for sampling in samplings])
    medians = np.array([np.median(sampling) for sampling in samplings])
    midranges = np.array([(min(sampling) + max(sampling)) * 0.5
                          for sampling in samplings])
    if fig is None:
        fig = plt.figure()
    x = lrange(samples)
    axes = []
    ax1 = fig.add_subplot(2, 3, 1)
    ax1.set_xlabel("Sample")
    axes.append(ax1)
    ax1.plot(x, means, **kwds)
    ax2 = fig.add_subplot(2, 3, 2)
    ax2.set_xlabel("Sample")
    axes.append(ax2)
    ax2.plot(x, medians, **kwds)
    ax3 = fig.add_subplot(2, 3, 3)
    ax3.set_xlabel("Sample")
    axes.append(ax3)
    ax3.plot(x, midranges, **kwds)
    ax4 = fig.add_subplot(2, 3, 4)
    ax4.set_xlabel("Mean")
    axes.append(ax4)
    ax4.hist(means, **kwds)
    ax5 = fig.add_subplot(2, 3, 5)
    ax5.set_xlabel("Median")
    axes.append(ax5)
    ax5.hist(medians, **kwds)
    ax6 = fig.add_subplot(2, 3, 6)
    ax6.set_xlabel("Midrange")
    axes.append(ax6)
    ax6.hist(midranges, **kwds)
    for axis in axes:
        plt.setp(axis.get_xticklabels(), fontsize=8)
        plt.setp(axis.get_yticklabels(), fontsize=8)
    return fig
def bootstrap_plot ( series , fig = None , size = 50 , samples = 500 , ** kwds ) : import random import matplotlib . pyplot as plt data = list ( series . values ) samplings = [ random . sample ( data , size ) for _ in range ( samples ) ] means = np . array ( [ np . mean ( sampling ) for sampling in samplings ] ) medians = np . array ( [ np . median ( sampling ) for sampling in samplings ] ) midranges = np . array ( [ ( min ( sampling ) + max ( sampling ) ) * 0.5 for sampling in samplings ] ) if fig is None : fig = plt . figure ( ) x = lrange ( samples ) axes = [ ] ax1 = fig . add_subplot ( 2 , 3 , 1 ) ax1 . set_xlabel ( "Sample" ) axes . append ( ax1 ) ax1 . plot ( x , means , ** kwds ) ax2 = fig . add_subplot ( 2 , 3 , 2 ) ax2 . set_xlabel ( "Sample" ) axes . append ( ax2 ) ax2 . plot ( x , medians , ** kwds ) ax3 = fig . add_subplot ( 2 , 3 , 3 ) ax3 . set_xlabel ( "Sample" ) axes . append ( ax3 ) ax3 . plot ( x , midranges , ** kwds ) ax4 = fig . add_subplot ( 2 , 3 , 4 ) ax4 . set_xlabel ( "Mean" ) axes . append ( ax4 ) ax4 . hist ( means , ** kwds ) ax5 = fig . add_subplot ( 2 , 3 , 5 ) ax5 . set_xlabel ( "Median" ) axes . append ( ax5 ) ax5 . hist ( medians , ** kwds ) ax6 = fig . add_subplot ( 2 , 3 , 6 ) ax6 . set_xlabel ( "Midrange" ) axes . append ( ax6 ) ax6 . hist ( midranges , ** kwds ) for axis in axes : plt . setp ( axis . get_xticklabels ( ) , fontsize = 8 ) plt . setp ( axis . get_yticklabels ( ) , fontsize = 8 ) return fig
Bootstrap plot on mean, median and mid-range statistics.

    The bootstrap plot is used to estimate the uncertainty of a statistic
    by relaying on random sampling with replacement [1]_. This function will
    generate bootstrapping plots for mean, median and mid-range statistics
    for the given number of samples of the given size.

    .. [1] "Bootstrapping (statistics)" in \
    https://en.wikipedia.org/wiki/Bootstrapping_%28statistics%29

    Parameters
    ----------
    series : pandas.Series
        Pandas Series from where to get the samplings for the bootstrapping.
    fig : matplotlib.figure.Figure, default None
        If given, it will use the `fig` reference for plotting instead of
        creating a new one with default parameters.
    size : int, default 50
        Number of data points to consider during each sampling. It must be
        greater or equal than the length of the `series`.
    samples : int, default 500
        Number of times the bootstrap procedure is performed.
    **kwds :
        Options to pass to matplotlib plotting method.

    Returns
    -------
    matplotlib.figure.Figure
        Matplotlib figure.

    See Also
    --------
    DataFrame.plot : Basic plotting for DataFrame objects.
    Series.plot : Basic plotting for Series objects.

    Examples
    --------

    .. plot::
            :context: close-figs

            >>> s = pd.Series(np.random.uniform(size=100))
            >>> fig = pd.plotting.bootstrap_plot(s)  # doctest: +SKIP