§
    Ñ! hÅl  ã                  ó  — d dl mZ d dlmZ d dlmZmZmZmZ d dl	m
Z
mZ d dlmZmZmZ d dlmZmZmZmZmZmZmZmZmZ d dlmZmZ erd dlmZmZm Z  d d	l!m"Z"m#Z# d d
l$m%Z%  G d„ de¦  «        Z& G d„ dee&¦  «        Z'dS )é    )Úannotations)Údedent)ÚTYPE_CHECKINGÚAnyÚCallableÚLiteral)Údeprecate_kwargÚdoc)ÚBaseIndexerÚExpandingIndexerÚGroupbyIndexer)	Ú_shared_docsÚcreate_section_headerÚkwargs_numeric_onlyÚnumba_notesÚtemplate_headerÚtemplate_returnsÚtemplate_see_alsoÚwindow_agg_numba_parametersÚwindow_apply_parameters)ÚBaseWindowGroupbyÚRollingAndExpandingMixin)ÚAxisÚQuantileInterpolationÚWindowingRankType)Ú	DataFrameÚSeries)ÚNDFramec                  ó  ‡ — e Zd ZU dZg d¢Zded<   	 	 	 	 d�d‘ˆ fd„Zd’d„Z ee	d          e
d¦  «         e
d¦  «        dd¬¦  «        ˆ fd„¦   «         ZeZ ee ed¦  «        e ed¦  «        e ed¦  «         e
d ¦  «        d!d"d#¬$¦
  «
        d“d”ˆ fd(„¦   «         Z ee ed)¦  «        e ed¦  «        e ed¦  «        e ed¦  «         e
d*¦  «        d!d+d,¬$¦  «        	 	 	 	 	 d•d–ˆ fd8„¦   «         Z ee ed)¦  «        e e¦   «          ed¦  «        e ed¦  «        e ed9¦  «        e ed¦  «         e
d:¦  «        d!d;d;¬$¦  «        	 	 	 d—d˜ˆ fd<„¦   «         Z ee ed)¦  «        e e¦   «          ed¦  «        e ed¦  «        e ed9¦  «        e ed¦  «         e
d=¦  «        d!d>d?¬$¦  «        	 	 	 d—d˜ˆ fd@„¦   «         Z ee ed)¦  «        e e¦   «          ed¦  «        e ed¦  «        e ed9¦  «        e ed¦  «         e
dA¦  «        d!dBdC¬$¦  «        	 	 	 d—d˜ˆ fdD„¦   «         Z ee ed)¦  «        e e¦   «          ed¦  «        e ed¦  «        e ed9¦  «        e ed¦  «         e
dE¦  «        d!dFdF¬$¦  «        	 	 	 d—d˜ˆ fdG„¦   «         Z ee ed)¦  «        e e¦   «          ed¦  «        e ed¦  «        e ed9¦  «        e ed¦  «         e
dH¦  «        d!dIdI¬$¦  «        	 	 	 d—d˜ˆ fdJ„¦   «         Z ee ed)¦  «         e
dK¦  «                             dLdd¦  «        e edM¦  «         ed¦  «        e ed¦  «        dNe ed9¦  «         e
dO¦  «                             dLdd¦  «         ed¦  «         e
dP¦  «                             dLdd¦  «        d!dQdR¬$¦  «        	 	 	 	 d™dšˆ fdT„¦   «         Z ee ed)¦  «         e
dK¦  «                             dLdd¦  «        e edM¦  «         ed¦  «        e ed¦  «        dUe ed9¦  «         e
dV¦  «                             dLdd¦  «         ed¦  «         e
dW¦  «                             dLdd¦  «        d!dXdY¬$¦  «        	 	 	 	 d™dšˆ fdZ„¦   «         Z ee ed)¦  «         e
dK¦  «                             dLdd¦  «        e ed¦  «        e ed¦  «        e ed9¦  «        d[ ed¦  «         e
d\¦  «                             dLdd¦  «        d!d]d^¬$¦  «        d›dœˆ fd_„¦   «         Z ee ed)¦  «        e ed¦  «        e ed¦  «        d`e ed9¦  «        da ed¦  «         e
db¦  «        d!dcdd¬$¦  «        d“d”ˆ fde„¦   «         Z  ee ed)¦  «        e ed¦  «        e ed¦  «        dfe ed9¦  «        dg ed¦  «         e
dh¦  «                             dLdd¦  «        d!didj¬$¦  «        d“d”ˆ fdk„¦   «         Z! ee ed)¦  «         e
dl¦  «                             dLdd¦  «        e ed¦  «        e ed¦  «        e ed¦  «         e
dm¦  «        d!dndn¬$¦  «         e"dndo¬p¦  «        	 	 d�džˆ fdu„¦   «         ¦   «         Z# eedv ed)¦  «         e
dw¦  «                             dLdd¦  «        e ed¦  «        e ed¦  «        e ed¦  «         e
dx¦  «                             dLdd¦  «        d!dydy¬$¦  «        	 	 	 	 dŸd ˆ fd„¦   «         Z$ ee ed)¦  «         e
d€¦  «                             dLdd¦  «        e ed¦  «        e ed¦  «        e ed¦  «         e
d�¦  «        d!d‚dƒ¬$¦  «        	 	 	 	 d¡d¢ˆ fdˆ„¦   «         Z% ee ed)¦  «         e
d‰¦  «                             dLdd¦  «        e ed¦  «        e ed¦  «         e
dŠ¦  «                             dLdd¦  «        e ed9¦  «         e
d‹¦  «         ed¦  «         e
dŒ¦  «        d!d�dŽ¬$¦  «        	 	 	 	 d¡d¢ˆ fd�„¦   «         Z&ˆ xZ'S )£Ú	Expandingaï  
    Provide expanding window calculations.

    Parameters
    ----------
    min_periods : int, default 1
        Minimum number of observations in window required to have a value;
        otherwise, result is ``np.nan``.

    axis : int or str, default 0
        If ``0`` or ``'index'``, roll across the rows.

        If ``1`` or ``'columns'``, roll across the columns.

        For `Series` this parameter is unused and defaults to 0.

    method : str {'single', 'table'}, default 'single'
        Execute the rolling operation per single column or row (``'single'``)
        or over the entire object (``'table'``).

        This argument is only implemented when specifying ``engine='numba'``
        in the method call.

        .. versionadded:: 1.3.0

    Returns
    -------
    pandas.api.typing.Expanding

    See Also
    --------
    rolling : Provides rolling window calculations.
    ewm : Provides exponential weighted functions.

    Notes
    -----
    See :ref:`Windowing Operations <window.expanding>` for further usage details
    and examples.

    Examples
    --------
    >>> df = pd.DataFrame({"B": [0, 1, 2, np.nan, 4]})
    >>> df
         B
    0  0.0
    1  1.0
    2  2.0
    3  NaN
    4  4.0

    **min_periods**

    Expanding sum with 1 vs 3 observations needed to calculate a value.

    >>> df.expanding(1).sum()
         B
    0  0.0
    1  1.0
    2  3.0
    3  3.0
    4  7.0
    >>> df.expanding(3).sum()
         B
    0  NaN
    1  NaN
    2  3.0
    3  3.0
    4  7.0
    )Úmin_periodsÚaxisÚmethodz	list[str]Ú_attributesé   r   ÚsingleNÚobjr   r!   Úintr"   r   r#   ÚstrÚreturnÚNonec                óT   •— t          ¦   «                              |||||¬¦  «         d S )N)r'   r!   r"   r#   Ú	selection)ÚsuperÚ__init__)Úselfr'   r!   r"   r#   r-   Ú	__class__s         €úVc:\xampp_lite_8_4\www\timesheet\venv\Lib\site-packages\pandas/core/window/expanding.pyr/   zExpanding.__init__|   s?   ø€ õ 	‰Œ×ÒØØ#ØØØð 	ñ 	
ô 	
ð 	
ð 	
ð 	
ó    r   c                ó   — t          ¦   «         S )z[
        Return an indexer class that will compute the window start and end bounds
        )r   )r0   s    r2   Ú_get_window_indexerzExpanding._get_window_indexerŒ   s   € õ  Ñ!Ô!Ð!r3   Ú	aggregatez£
        See Also
        --------
        pandas.DataFrame.aggregate : Similar DataFrame method.
        pandas.Series.aggregate : Similar Series method.
        aœ  
        Examples
        --------
        >>> df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6], "C": [7, 8, 9]})
        >>> df
           A  B  C
        0  1  4  7
        1  2  5  8
        2  3  6  9

        >>> df.ewm(alpha=0.5).mean()
                  A         B         C
        0  1.000000  4.000000  7.000000
        1  1.666667  4.666667  7.666667
        2  2.428571  5.428571  8.428571
        zSeries/DataframeÚ )Úsee_alsoÚexamplesÚklassr"   c                ó>   •—  t          ¦   «         j        |g|¢R i |¤ŽS )N)r.   r6   )r0   ÚfuncÚargsÚkwargsr1   s       €r2   r6   zExpanding.aggregate’   s-   ø€ ð@ !�u‰wŒwÔ  Ð7¨Ð7Ð7Ð7°Ð7Ð7Ð7r3   ÚReturnszSee AlsoÚExampleszÍ        >>> ser = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
        >>> ser.expanding().count()
        a    1.0
        b    2.0
        c    3.0
        d    4.0
        dtype: float64
        Ú	expandingzcount of non NaN observationsÚcount)Úwindow_methodÚaggregation_descriptionÚ
agg_methodFÚnumeric_onlyÚboolc                óH   •— t          ¦   «                              |¬¦  «        S ©N)rF   )r.   rB   ©r0   rF   r1   s     €r2   rB   zExpanding.count¶   s   ø€ õ. ‰wŒw�}Š}¨,ˆ}Ñ7Ô7Ð7r3   Ú
Parameterszì        >>> ser = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
        >>> ser.expanding().apply(lambda s: s.max() - 2 * s.min())
        a   -1.0
        b    0.0
        c    1.0
        d    2.0
        dtype: float64
        zcustom aggregation functionÚapplyr<   úCallable[..., Any]ÚrawÚengineú!Literal['cython', 'numba'] | NoneÚengine_kwargsúdict[str, bool] | Noner=   útuple[Any, ...] | Noner>   údict[str, Any] | Nonec                óR   •— t          ¦   «                              ||||||¬¦  «        S )N)rN   rO   rQ   r=   r>   )r.   rL   )r0   r<   rN   rO   rQ   r=   r>   r1   s          €r2   rL   zExpanding.applyÏ   s7   ø€ õB ‰wŒw�}Š}ØØØØ'ØØð ñ 
ô 
ð 	
r3   ÚNoteszÏ        >>> ser = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
        >>> ser.expanding().sum()
        a     1.0
        b     3.0
        c     6.0
        d    10.0
        dtype: float64
        Úsumc                óL   •— t          ¦   «                              |||¬¦  «        S ©N)rF   rO   rQ   )r.   rW   ©r0   rF   rO   rQ   r1   s       €r2   rW   zExpanding.sumù   ó.   ø€ õB ‰wŒw�{Š{Ø%ØØ'ð ñ 
ô 
ð 	
r3   zË        >>> ser = pd.Series([3, 2, 1, 4], index=['a', 'b', 'c', 'd'])
        >>> ser.expanding().max()
        a    3.0
        b    3.0
        c    3.0
        d    4.0
        dtype: float64
        ÚmaximumÚmaxc                óL   •— t          ¦   «                              |||¬¦  «        S rY   )r.   r]   rZ   s       €r2   r]   zExpanding.max   r[   r3   zË        >>> ser = pd.Series([2, 3, 4, 1], index=['a', 'b', 'c', 'd'])
        >>> ser.expanding().min()
        a    2.0
        b    2.0
        c    2.0
        d    1.0
        dtype: float64
        ÚminimumÚminc                óL   •— t          ¦   «                              |||¬¦  «        S rY   )r.   r`   rZ   s       €r2   r`   zExpanding.minG  r[   r3   zÌ        >>> ser = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
        >>> ser.expanding().mean()
        a    1.0
        b    1.5
        c    2.0
        d    2.5
        dtype: float64
        Úmeanc                óL   •— t          ¦   «                              |||¬¦  «        S rY   )r.   rb   rZ   s       €r2   rb   zExpanding.meann  s.   ø€ õB ‰wŒw�|Š|Ø%ØØ'ð ñ 
ô 
ð 	
r3   zÎ        >>> ser = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
        >>> ser.expanding().median()
        a    1.0
        b    1.5
        c    2.0
        d    2.5
        dtype: float64
        Úmedianc                óL   •— t          ¦   «                              |||¬¦  «        S rY   )r.   rd   rZ   s       €r2   rd   zExpanding.median•  s.   ø€ õB ‰wŒw�~Š~Ø%ØØ'ð ñ 
ô 
ð 	
r3   z¼
        ddof : int, default 1
            Delta Degrees of Freedom.  The divisor used in calculations
            is ``N - ddof``, where ``N`` represents the number of elements.

        ú
z1.4z/numpy.std : Equivalent method for NumPy array.
zÛ
        The default ``ddof`` of 1 used in :meth:`Series.std` is different
        than the default ``ddof`` of 0 in :func:`numpy.std`.

        A minimum of one period is required for the rolling calculation.

        a  
        >>> s = pd.Series([5, 5, 6, 7, 5, 5, 5])

        >>> s.expanding(3).std()
        0         NaN
        1         NaN
        2    0.577350
        3    0.957427
        4    0.894427
        5    0.836660
        6    0.786796
        dtype: float64
        zstandard deviationÚstdÚddofc                óN   •— t          ¦   «                              ||||¬¦  «        S ©N)rh   rF   rO   rQ   )r.   rg   ©r0   rh   rF   rO   rQ   r1   s        €r2   rg   zExpanding.std¼  ó1   ø€ õj ‰wŒw�{Š{ØØ%ØØ'ð	 ñ 
ô 
ð 	
r3   z/numpy.var : Equivalent method for NumPy array.
zÛ
        The default ``ddof`` of 1 used in :meth:`Series.var` is different
        than the default ``ddof`` of 0 in :func:`numpy.var`.

        A minimum of one period is required for the rolling calculation.

        a  
        >>> s = pd.Series([5, 5, 6, 7, 5, 5, 5])

        >>> s.expanding(3).var()
        0         NaN
        1         NaN
        2    0.333333
        3    0.916667
        4    0.800000
        5    0.700000
        6    0.619048
        dtype: float64
        ÚvarianceÚvarc                óN   •— t          ¦   «                              ||||¬¦  «        S rj   )r.   rn   rk   s        €r2   rn   zExpanding.varø  rl   r3   z:A minimum of one period is required for the calculation.

zÁ
        >>> s = pd.Series([0, 1, 2, 3])

        >>> s.expanding().sem()
        0         NaN
        1    0.707107
        2    0.707107
        3    0.745356
        dtype: float64
        zstandard error of meanÚsemc                óJ   •— t          ¦   «                              ||¬¦  «        S )N)rh   rF   )r.   rp   )r0   rh   rF   r1   s      €r2   rp   zExpanding.sem4  s    ø€ õF ‰wŒw�{Š{ °<ˆ{Ñ@Ô@Ð@r3   z:scipy.stats.skew : Third moment of a probability density.
zEA minimum of three periods is required for the rolling calculation.

a           >>> ser = pd.Series([-1, 0, 2, -1, 2], index=['a', 'b', 'c', 'd', 'e'])
        >>> ser.expanding().skew()
        a         NaN
        b         NaN
        c    0.935220
        d    1.414214
        e    0.315356
        dtype: float64
        zunbiased skewnessÚskewc                óH   •— t          ¦   «                              |¬¦  «        S rI   )r.   rr   rJ   s     €r2   rr   zExpanding.skewY  s   ø€ õ: ‰wŒw�|Š|¨ˆ|Ñ6Ô6Ð6r3   z/scipy.stats.kurtosis : Reference SciPy method.
z<A minimum of four periods is required for the calculation.

a[  
        The example below will show a rolling calculation with a window size of
        four matching the equivalent function call using `scipy.stats`.

        >>> arr = [1, 2, 3, 4, 999]
        >>> import scipy.stats
        >>> print(f"{{scipy.stats.kurtosis(arr[:-1], bias=False):.6f}}")
        -1.200000
        >>> print(f"{{scipy.stats.kurtosis(arr, bias=False):.6f}}")
        4.999874
        >>> s = pd.Series(arr)
        >>> s.expanding(4).kurt()
        0         NaN
        1         NaN
        2         NaN
        3   -1.200000
        4    4.999874
        dtype: float64
        z,Fisher's definition of kurtosis without biasÚkurtc                óH   •— t          ¦   «                              |¬¦  «        S rI   )r.   rt   rJ   s     €r2   rt   zExpanding.kurtx  s   ø€ õL ‰wŒw�|Š|¨ˆ|Ñ6Ô6Ð6r3   aæ  
        quantile : float
            Quantile to compute. 0 <= quantile <= 1.

            .. deprecated:: 2.1.0
                This will be renamed to 'q' in a future version.
        interpolation : {{'linear', 'lower', 'higher', 'midpoint', 'nearest'}}
            This optional parameter specifies the interpolation method to use,
            when the desired quantile lies between two data points `i` and `j`:

                * linear: `i + (j - i) * fraction`, where `fraction` is the
                  fractional part of the index surrounded by `i` and `j`.
                * lower: `i`.
                * higher: `j`.
                * nearest: `i` or `j` whichever is nearest.
                * midpoint: (`i` + `j`) / 2.
        a          >>> ser = pd.Series([1, 2, 3, 4, 5, 6], index=['a', 'b', 'c', 'd', 'e', 'f'])
        >>> ser.expanding(min_periods=4).quantile(.25)
        a     NaN
        b     NaN
        c     NaN
        d    1.75
        e    2.00
        f    2.25
        dtype: float64
        ÚquantileÚq)Úold_arg_nameÚnew_arg_nameÚlinearÚfloatÚinterpolationr   c                óL   •— t          ¦   «                              |||¬¦  «        S )N)rw   r|   rF   )r.   rv   )r0   rw   r|   rF   r1   s       €r2   rv   zExpanding.quantile   s0   ø€ õh ‰wŒw×ÒØØ'Ø%ð  ñ 
ô 
ð 	
r3   z.. versionadded:: 1.4.0 

a  
        method : {{'average', 'min', 'max'}}, default 'average'
            How to rank the group of records that have the same value (i.e. ties):

            * average: average rank of the group
            * min: lowest rank in the group
            * max: highest rank in the group

        ascending : bool, default True
            Whether or not the elements should be ranked in ascending order.
        pct : bool, default False
            Whether or not to display the returned rankings in percentile
            form.
        a+  
        >>> s = pd.Series([1, 4, 2, 3, 5, 3])
        >>> s.expanding().rank()
        0    1.0
        1    2.0
        2    2.0
        3    3.0
        4    5.0
        5    3.5
        dtype: float64

        >>> s.expanding().rank(method="max")
        0    1.0
        1    2.0
        2    2.0
        3    3.0
        4    5.0
        5    4.0
        dtype: float64

        >>> s.expanding().rank(method="min")
        0    1.0
        1    2.0
        2    2.0
        3    3.0
        4    5.0
        5    3.0
        dtype: float64
        ÚrankÚaverageTr   Ú	ascendingÚpctc                óN   •— t          ¦   «                              ||||¬¦  «        S )N)r#   r€   r�   rF   )r.   r~   )r0   r#   r€   r�   rF   r1   s        €r2   r~   zExpanding.rankÚ  s1   ø€ õH ‰wŒw�|Š|ØØØØ%ð	 ñ 
ô 
ð 	
r3   a   
        other : Series or DataFrame, optional
            If not supplied then will default to self and produce pairwise
            output.
        pairwise : bool, default None
            If False then only matching columns between self and other will be
            used and the output will be a DataFrame.
            If True then all pairwise combinations will be calculated and the
            output will be a MultiIndexed DataFrame in the case of DataFrame
            inputs. In the case of missing elements, only complete pairwise
            observations will be used.
        ddof : int, default 1
            Delta Degrees of Freedom.  The divisor used in calculations
            is ``N - ddof``, where ``N`` represents the number of elements.
        a0          >>> ser1 = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
        >>> ser2 = pd.Series([10, 11, 13, 16], index=['a', 'b', 'c', 'd'])
        >>> ser1.expanding().cov(ser2)
        a         NaN
        b    0.500000
        c    1.500000
        d    3.333333
        dtype: float64
        zsample covarianceÚcovÚotherúDataFrame | Series | NoneÚpairwiseúbool | Nonec                óN   •— t          ¦   «                              ||||¬¦  «        S ©N)r„   r†   rh   rF   )r.   rƒ   ©r0   r„   r†   rh   rF   r1   s        €r2   rƒ   zExpanding.cov%  s1   ø€ õb ‰wŒw�{Š{ØØØØ%ð	 ñ 
ô 
ð 	
r3   aN  
        other : Series or DataFrame, optional
            If not supplied then will default to self and produce pairwise
            output.
        pairwise : bool, default None
            If False then only matching columns between self and other will be
            used and the output will be a DataFrame.
            If True then all pairwise combinations will be calculated and the
            output will be a MultiIndexed DataFrame in the case of DataFrame
            inputs. In the case of missing elements, only complete pairwise
            observations will be used.
        z�
        cov : Similar method to calculate covariance.
        numpy.corrcoef : NumPy Pearson's correlation calculation.
        ao  
        This function uses Pearson's definition of correlation
        (https://en.wikipedia.org/wiki/Pearson_correlation_coefficient).

        When `other` is not specified, the output will be self correlation (e.g.
        all 1's), except for :class:`~pandas.DataFrame` inputs with `pairwise`
        set to `True`.

        Function will return ``NaN`` for correlations of equal valued sequences;
        this is the result of a 0/0 division error.

        When `pairwise` is set to `False`, only matching columns between `self` and
        `other` will be used.

        When `pairwise` is set to `True`, the output will be a MultiIndex DataFrame
        with the original index on the first level, and the `other` DataFrame
        columns on the second level.

        In the case of missing elements, only complete pairwise observations
        will be used.

        a1          >>> ser1 = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
        >>> ser2 = pd.Series([10, 11, 13, 16], index=['a', 'b', 'c', 'd'])
        >>> ser1.expanding().corr(ser2)
        a         NaN
        b    1.000000
        c    0.981981
        d    0.975900
        dtype: float64
        ÚcorrelationÚcorrc                óN   •— t          ¦   «                              ||||¬¦  «        S r‰   )r.   rŒ   rŠ   s        €r2   rŒ   zExpanding.corr]  s1   ø€ õX ‰wŒw�|Š|ØØØØ%ð	 ñ 
ô 
ð 	
r3   )r%   r   r&   N)
r'   r   r!   r(   r"   r   r#   r)   r*   r+   )r*   r   )F)rF   rG   )FNNNN)r<   rM   rN   rG   rO   rP   rQ   rR   r=   rS   r>   rT   )FNN)rF   rG   rO   rP   rQ   rR   )r%   FNN)rh   r(   rF   rG   rO   rP   rQ   rR   )r%   F)rh   r(   rF   rG   )rz   F)rw   r{   r|   r   rF   rG   )r   TFF)r#   r   r€   rG   r�   rG   rF   rG   )NNr%   F)r„   r…   r†   r‡   rh   r(   rF   rG   )(Ú__name__Ú
__module__Ú__qualname__Ú__doc__r$   Ú__annotations__r/   r5   r
   r   r   r6   Úaggr   r   r   r   rB   r   rL   r   r   r   rW   r]   r`   rb   rd   Úreplacerg   rn   rp   rr   rt   r	   rv   r~   rƒ   rŒ   Ú__classcell__)r1   s   @r2   r    r    3   s<  ø€ € € € € € ðDð DðL ?Ð>Ð>€KÐ>Ð>Ð>Ñ>ð
 ØØØð
ð 
ð 
ð 
ð 
ð 
ð 
ð "ð "ð "ð "ð 	€SØ�[Ô!Ø�ðñ
ô 
ð �ðñ
ô 
ð$ !Øð;ñ ô ð>8ð 8ð 8ð 8ñ?ô ð>8ð €Cà€SØØÐ˜iÑ(Ô(ØØÐ˜jÑ)Ô)ØØÐ˜jÑ)Ô)Øˆðñ
	
ô 
	
ð "Ø ?Øð)ñ ô ð,8ð 8ð 8ð 8ð 8ð 8ñ-ô ð,8ð 	€SØØÐ˜lÑ+Ô+ØØÐ˜iÑ(Ô(ØØÐ˜jÑ)Ô)ØØÐ˜jÑ)Ô)Øˆðñ
	
ô 
	
ð "Ø =Øð-ñ ô ð6 Ø48Ø04Ø'+Ø(,ð
ð 
ð 
ð 
ð 
ð 
ñ1ô ð0
ð$ 	€SØØÐ˜lÑ+Ô+ØØ#Ð#Ñ%Ô%ØÐ˜iÑ(Ô(ØØÐ˜jÑ)Ô)ØØÐ˜gÑ&Ô&ØØÐ˜jÑ)Ô)Øˆðñ
	
ô 
	
ð "Ø %Øð3ñ ô ð: #Ø48Ø04ð	

ð 

ð 

ð 

ð 

ð 

ñ7ô ð6

ð 	€SØØÐ˜lÑ+Ô+ØØ#Ð#Ñ%Ô%ØÐ˜iÑ(Ô(ØØÐ˜jÑ)Ô)ØØÐ˜gÑ&Ô&ØØÐ˜jÑ)Ô)Øˆðñ
	
ô 
	
ð "Ø )Øð3ñ ô ð: #Ø48Ø04ð	

ð 

ð 

ð 

ð 

ð 

ñ7ô ð6

ð 	€SØØÐ˜lÑ+Ô+ØØ#Ð#Ñ%Ô%ØÐ˜iÑ(Ô(ØØÐ˜jÑ)Ô)ØØÐ˜gÑ&Ô&ØØÐ˜jÑ)Ô)Øˆðñ
	
ô 
	
ð "Ø )Øð3ñ ô ð: #Ø48Ø04ð	

ð 

ð 

ð 

ð 

ð 

ñ7ô ð6

ð 	€SØØÐ˜lÑ+Ô+ØØ#Ð#Ñ%Ô%ØÐ˜iÑ(Ô(ØØÐ˜jÑ)Ô)ØØÐ˜gÑ&Ô&ØØÐ˜jÑ)Ô)Øˆðñ
	
ô 
	
ð "Ø &Øð3ñ ô ð: #Ø48Ø04ð	

ð 

ð 

ð 

ð 

ð 

ñ7ô ð6

ð 	€SØØÐ˜lÑ+Ô+ØØ#Ð#Ñ%Ô%ØÐ˜iÑ(Ô(ØØÐ˜jÑ)Ô)ØØÐ˜gÑ&Ô&ØØÐ˜jÑ)Ô)Øˆðñ
	
ô 
	
ð "Ø (Øð3ñ ô ð: #Ø48Ø04ð	

ð 

ð 

ð 

ð 

ð 

ñ7ô ð6

ð 	€SØØÐ˜lÑ+Ô+Øˆðñ	
ô 	
÷ Š'�$˜˜AÑ
Ô
ØØ#Ð# EÑ*Ô*ØÐ˜iÑ(Ô(ØØÐ˜jÑ)Ô)Ø:ØØÐ˜gÑ&Ô&Øˆðñ	
ô 	
÷ Š'�$˜˜AÑ
Ô
ØÐ˜jÑ)Ô)Øˆðñ	
ô 	
÷ Š'�$˜˜AÑ
Ô
Ø!Ø 4ØðY-ñ -ô -ð` Ø"Ø48Ø04ð
ð 
ð 
ð 
ð 
ð 
ñ]-ô -ð\
ð 	€SØØÐ˜lÑ+Ô+Øˆðñ	
ô 	
÷ Š'�$˜˜AÑ
Ô
ØØ#Ð# EÑ*Ô*ØÐ˜iÑ(Ô(ØØÐ˜jÑ)Ô)Ø:ØØÐ˜gÑ&Ô&Øˆðñ	
ô 	
÷ Š'�$˜˜AÑ
Ô
ØÐ˜jÑ)Ô)Øˆðñ	
ô 	
÷ Š'�$˜˜AÑ
Ô
Ø!Ø *ØðY-ñ -ô -ð` Ø"Ø48Ø04ð
ð 
ð 
ð 
ð 
ð 
ñ]-ô -ð\
ð 	€SØØÐ˜lÑ+Ô+Øˆðñ	
ô 	
÷ Š'�$˜˜AÑ
Ô
ØØÐ˜iÑ(Ô(ØØÐ˜jÑ)Ô)ØØÐ˜gÑ&Ô&ØFØÐ˜jÑ)Ô)Øˆð	ñ	
ô 	
÷ Š'�$˜˜AÑ
Ô
Ø!Ø 8ØðA!ñ !ô !ðDAð Að Að Að Að AñE!ô !ðDAð 	€SØØÐ˜lÑ+Ô+ØØÐ˜iÑ(Ô(ØØÐ˜jÑ)Ô)ØEØØÐ˜gÑ&Ô&ØQØÐ˜jÑ)Ô)Øˆð	ñ	
ô 	
ð "Ø 3Øð5ñ ô ð87ð 7ð 7ð 7ð 7ð 7ñ9ô ð87ð 	€SØØÐ˜lÑ+Ô+ØØÐ˜iÑ(Ô(ØØÐ˜jÑ)Ô)Ø:ØØÐ˜gÑ&Ô&ØHØÐ˜jÑ)Ô)Øˆðñ	
ô 	
÷( Š'�$˜˜AÑ
Ô
Ø!Ø NØðG$ñ $ô $ðJ7ð 7ð 7ð 7ð 7ð 7ñK$ô $ðJ7ð 	€SØØÐ˜lÑ+Ô+Øˆðñ	
ô 	
÷$ Š'�$˜˜AÑ
Ô
ØØÐ˜iÑ(Ô(ØØÐ˜jÑ)Ô)ØØÐ˜jÑ)Ô)Øˆð
ñ	
ô 	
ð "Ø *ØðW,ñ ,ô ,ðZ €_ *¸3Ð?Ñ?Ô?ð 08Ø"ð	

ð 

ð 

ð 

ð 

ð 

ñ @Ô?ñ[,ô ,ð\

ð 	€SØØ&ØÐ˜lÑ+Ô+Øˆðñ	
ô 	
÷ Š'�$˜˜AÑ
Ô
ØØÐ˜iÑ(Ô(ØØÐ˜jÑ)Ô)ØØÐ˜jÑ)Ô)Øˆðñ	
ô 	
÷< Š'�$˜˜AÑ
Ô
Ø!Ø &Øðw<ñ <ô <ð~ %.ØØØ"ð
ð 
ð 
ð 
ð 
ð 
ñ{<ô <ðz
ð 	€SØØÐ˜lÑ+Ô+Øˆðñ	
ô 	
÷  Š'�$˜˜AÑ
Ô
ØØÐ˜iÑ(Ô(ØØÐ˜jÑ)Ô)ØØÐ˜jÑ)Ô)Øˆð	ñ	
ô 	
ð "Ø 3ØðQ)ñ )ô )ðX ,0Ø $ØØ"ð
ð 
ð 
ð 
ð 
ð 
ñU)ô )ðT
ð 	€SØØÐ˜lÑ+Ô+Øˆðñ	
ô 	
÷ Š'�$˜˜AÑ
Ô
ØØÐ˜iÑ(Ô(ØØÐ˜jÑ)Ô)Øˆðñ	
ô 	
÷
 Š'�$˜˜AÑ
Ô
ØØÐ˜gÑ&Ô&Øˆðñ	
ô 	
ð. 	Ð˜jÑ)Ô)Øˆð	ñ	
ô 	
ð "Ø -ØðGDñ Dô DðN ,0Ø $ØØ"ð
ð 
ð 
ð 
ð 
ð 
ñKDô DðJ
ð 
ð 
ð 
ð 
r3   r    c                  ó8   — e Zd ZdZej        ej        z   Zdd„ZdS )ÚExpandingGroupbyz5
    Provide a expanding groupby implementation.
    r*   r   c                óF   — t          | j        j        t          ¬¦  «        }|S )z“
        Return an indexer class that will compute the window start and end bounds

        Returns
        -------
        GroupbyIndexer
        )Úgroupby_indicesÚwindow_indexer)r   Ú_grouperÚindicesr   )r0   rš   s     r2   r5   z$ExpandingGroupby._get_window_indexer¸  s+   € õ (Ø œMÔ1Ý+ð
ñ 
ô 
ˆð Ðr3   N)r*   r   )rŽ   r�   r�   r‘   r    r$   r   r5   © r3   r2   r—   r—   ±  sE   € € € € € ðð ð Ô'Ð*;Ô*GÑG€Kðð ð ð ð ð r3   r—   N)(Ú
__future__r   Útextwrapr   Útypingr   r   r   r   Úpandas.util._decoratorsr	   r
   Úpandas.core.indexers.objectsr   r   r   Úpandas.core.window.docr   r   r   r   r   r   r   r   r   Úpandas.core.window.rollingr   r   Úpandas._typingr   r   r   Úpandasr   r   Úpandas.core.genericr   r    r—   r�   r3   r2   ú<module>r¨      s8  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð

ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ðð ð ð ð ð ð ð ð
 ð ,ðð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ,Ð+Ð+Ð+Ð+Ð+ð{
ð {
ð {
ð {
ð {
Ð(ñ {
ô {
ð {
ð|ð ð ð ð Ð(¨)ñ ô ð ð ð r3   