ó
    Ñ]ju¯  ã                  ó  • S SK Jr  S SKJrJrJrJrJrJrJ	r	  S SK
Jr  S SKJrJrJr  S SKJrJr  \(       a   S SKJr  S SKJrJrJrJr  S SKJrJr  S S	KJr  \" S
5       " S S\5      5       r\" S
5       " S S\\5      5       r g)é    )Úannotations)ÚTYPE_CHECKINGÚAnyÚConcatenateÚLiteralÚSelfÚfinalÚoverload)Ú
set_module)ÚBaseIndexerÚExpandingIndexerÚGroupbyIndexer)ÚBaseWindowGroupbyÚRollingAndExpandingMixin)ÚCallable)ÚPÚQuantileInterpolationÚTÚWindowingRankType)Ú	DataFrameÚSeries)ÚNDFramezpandas.api.typingc                  óX  ^ • \ rS rSr% SrSS/rS\S'      S!       S"U 4S jjjrS#S jrS$U 4S	 jjr	\	r
S%S&U 4S
 jjjr     S'           S(U 4S jjjr\        S)S j5       r\        S*S j5       r\        S+U 4S jj5       r   S,     S-U 4S jjjr   S,     S-U 4S jjjr   S,     S-U 4S jjjr   S,     S-U 4S jjjr   S,     S-U 4S jjjr    S.       S/U 4S jjjr    S.       S/U 4S jjjrS0S1U 4S jjjrS%S&U 4S jjjrS%S&U 4S jjjrS%S&U 4S jjjrS%S&U 4S jjjr  S2     S3U 4S jjjr    S4       S5U 4S jjjr S% S&U 4S jjjr    S6       S7U 4S jjjr    S6       S7U 4S jjjr S r!U =r"$ )8Ú	Expandingé*   a  
Provide expanding window calculations.

An expanding window yields the value of an aggregation statistic with all the data
available up to that point in time.

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

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.

Returns
-------
pandas.api.typing.Expanding
    An instance of Expanding for further expanding window calculations,
    e.g. using the ``sum`` method.

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Úmethodz	list[str]Ú_attributesc                ó&   >• [         TU ]  UUUUS9  g )N)Úobjr   r   Ú	selection)ÚsuperÚ__init__)Úselfr    r   r   r!   Ú	__class__s        €ÚY/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pandas/core/window/expanding.pyr#   ÚExpanding.__init__p   s#   ø€ ô 	‰ÑØØ#ØØð	 	ò 	
ó    c                ó   • [        5       $ )zK
Return an indexer class that will compute the window start and end bounds
)r   )r$   s    r&   Ú_get_window_indexerÚExpanding._get_window_indexer~   s   € ô  Ó!Ð!r(   c                ó,   >• [         TU ]  " U/UQ70 UD6$ )a  
Aggregate using one or more operations over the specified axis.

Parameters
----------
func : function, str, list or dict
    Function to use for aggregating the data. If a function, must either
    work when passed a Series/Dataframe or when passed to
    Series/Dataframe.apply.

    Accepted combinations are:

    - function
    - string function name
    - list of functions and/or function names, e.g. ``[np.sum, 'mean']``
    - dict of axis labels -> functions, function names or list of such.

*args
    Positional arguments to pass to `func`.
**kwargs
    Keyword arguments to pass to `func`.

Returns
-------
scalar, Series or DataFrame

    The return can be:

    * scalar : when Series.agg is called with single function
    * Series : when DataFrame.agg is called with a single function
    * DataFrame : when DataFrame.agg is called with several functions

See Also
--------
DataFrame.aggregate : Similar DataFrame method.
Series.aggregate : Similar Series method.

Notes
-----
The aggregation operations are always performed over an axis, either the
index (default) or the column axis. This behavior is different from
`numpy` aggregation functions (`mean`, `median`, `prod`, `sum`, `std`,
`var`), where the default is to compute the aggregation of the flattened
array, e.g., ``numpy.mean(arr_2d)`` as opposed to
``numpy.mean(arr_2d, axis=0)``.

`agg` is an alias for `aggregate`. Use the alias.

Functions that mutate the passed object can produce unexpected
behavior or errors and are not supported. See :ref:`gotchas.udf-mutation`
for more details.

A passed user-defined-function will be passed a Series for evaluation.

If ``func`` defines an index relabeling, ``axis`` must be ``0`` or ``index``.

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.expanding(2).sum()
     A     B     C
0  NaN   NaN   NaN
1  3.0   9.0  15.0
2  6.0  15.0  24.0

>>> df.expanding(2).agg({"A": "sum", "B": "min"})
     A    B
0  NaN  NaN
1  3.0  4.0
2  6.0  4.0
)r"   Ú	aggregate©r$   ÚfuncÚargsÚkwargsr%   s       €r&   r-   ÚExpanding.aggregate„   s    ø€ ô\ ‰wÒ  Ð7¨Ò7°Ñ7Ð7r(   c                ó   >• [         TU ]  US9$ )a–  
Calculate the expanding count of non NaN observations.

Parameters
----------
numeric_only : bool, default False
    Include only float, int, boolean columns.

Returns
-------
Series or DataFrame
    Return type is the same as the original object with ``np.float64`` dtype.

See Also
--------
Series.expanding : Calling expanding with Series data.
DataFrame.expanding : Calling expanding with DataFrames.
Series.count : Aggregating count for Series.
DataFrame.count : Aggregating count for DataFrame.

Examples
--------
>>> 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
©Únumeric_only)r"   Úcount©r$   r5   r%   s     €r&   r6   ÚExpanding.countÖ   s   ø€ ô> ‰w‰}¨,ˆ}Ð7Ð7r(   c           	     ó(   >• [         TU ]  UUUUUUS9$ )a  
Calculate the expanding custom aggregation function.

Parameters
----------
func : function
    Must produce a single value from an ndarray input if ``raw=True``
    or a single value from a Series if ``raw=False``. Can also accept a
    Numba JIT function with ``engine='numba'`` specified.

raw : bool, default False
    * ``False`` : passes each row or column as a Series to the
      function.
    * ``True`` : the passed function will receive ndarray objects instead.

    If you are just applying a NumPy reduction function this will
    achieve much better performance.

engine : str, default None
    * ``'cython'`` : Runs rolling apply through C-extensions from cython.
    * ``'numba'`` : Runs rolling apply through JIT compiled code from numba.
      Only available when ``raw`` is set to ``True``.
    * ``None`` : Defaults to ``'cython'`` or globally setting
      ``compute.use_numba``

engine_kwargs : dict, default None
    * For ``'cython'`` engine, there are no accepted ``engine_kwargs``
    * For ``'numba'`` engine, the engine can accept ``nopython``, ``nogil``
      and ``parallel`` dictionary keys. The values must either be ``True`` or
      ``False``. The default ``engine_kwargs`` for the ``'numba'`` engine is
      ``{'nopython': True, 'nogil': False, 'parallel': False}`` and will be
      applied to both the ``func`` and the ``apply`` rolling aggregation.

args : tuple, default None
    Positional arguments to be passed into func.

kwargs : dict, default None
    Keyword arguments to be passed into func.

Returns
-------
Series or DataFrame
    Return type is the same as the original object with ``np.float64`` dtype.

See Also
--------
Series.expanding : Calling expanding with Series data.
DataFrame.expanding : Calling expanding with DataFrames.
Series.apply : Aggregating apply for Series.
DataFrame.apply : Aggregating apply for DataFrame.

Examples
--------
>>> 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
)ÚrawÚengineÚengine_kwargsr0   r1   )r"   Úapply)r$   r/   r:   r;   r<   r0   r1   r%   s          €r&   r=   ÚExpanding.apply÷   s.   ø€ ôL ‰w‰}ØØØØ'ØØð ð 
ð 	
r(   c                ó   • g ©N© ©r$   r/   r0   r1   s       r&   ÚpipeÚExpanding.pipeF  ó   € ð r(   c                ó   • g r@   rA   rB   s       r&   rC   rD   N  rE   r(   c                ó,   >• [         TU ]  " U/UQ70 UD6$ )aÞ  
Apply a ``func`` with arguments to this Expanding object and return its result.

Use `.pipe` when you want to improve readability by chaining together
functions that expect Series, DataFrames, GroupBy, Rolling, Expanding or
Resampler
objects.
Instead of writing

>>> h = lambda x, arg2, arg3: x + 1 - arg2 * arg3
>>> g = lambda x, arg1: x * 5 / arg1
>>> f = lambda x: x**4
>>> df = pd.DataFrame(
...     {"A": [1, 2, 3, 4]}, index=pd.date_range("2012-08-02", periods=4)
... )
>>> h(g(f(df.rolling("2D")), arg1=1), arg2=2, arg3=3)  # doctest: +SKIP

You can write

>>> (
...     df.rolling("2D").pipe(f).pipe(g, arg1=1).pipe(h, arg2=2, arg3=3)
... )  # doctest: +SKIP

which is much more readable.

Parameters
----------
func : callable or tuple of (callable, str)
    Function to apply to this Expanding object or, alternatively,
    a `(callable, data_keyword)` tuple where `data_keyword` is a
    string indicating the keyword of `callable` that expects the
    Expanding object.
*args : iterable, optional
    Positional arguments passed into `func`.
**kwargs : dict, optional
        A dictionary of keyword arguments passed into `func`.

Returns
-------
Expanding
    The original object with the function `func` applied.

See Also
--------
Series.pipe : Apply a function with arguments to a series.
DataFrame.pipe: Apply a function with arguments to a dataframe.
apply : Apply function to each group instead of to the
    full Expanding object.

Notes
-----
See more `here
<https://pandas.pydata.org/pandas-docs/stable/user_guide/groupby.html#piping-function-calls>`_

Examples
--------

>>> df = pd.DataFrame(
...     {"A": [1, 2, 3, 4]}, index=pd.date_range("2012-08-02", periods=4)
... )
>>> df
            A
2012-08-02  1
2012-08-03  2
2012-08-04  3
2012-08-05  4

To get the difference between each expanding window's maximum and minimum
value in one pass, you can do

>>> df.expanding().pipe(lambda x: x.max() - x.min())
              A
2012-08-02  0.0
2012-08-03  1.0
2012-08-04  2.0
2012-08-05  3.0
)r"   rC   r.   s       €r&   rC   rD   V  s   ø€ ôh ‰wŠ|˜DÐ2 4Ò2¨6Ñ2Ð2r(   c                ó"   >• [         TU ]  UUUS9$ )a°  
Calculate the expanding sum.

Parameters
----------
numeric_only : bool, default False
    Include only float, int, boolean columns.

engine : str, default None
    * ``'cython'`` : Runs the operation through C-extensions from cython.
    * ``'numba'`` : Runs the operation through JIT compiled code from numba.
    * ``None`` : Defaults to ``'cython'`` or globally setting
      ``compute.use_numba``

engine_kwargs : dict, default None
    * For ``'cython'`` engine, there are no accepted ``engine_kwargs``
    * For ``'numba'`` engine, the engine can accept ``nopython``, ``nogil``
      and ``parallel`` dictionary keys. The values must either be ``True`` or
      ``False``. The default ``engine_kwargs`` for the ``'numba'`` engine is
      ``{'nopython': True, 'nogil': False, 'parallel': False}``

Returns
-------
Series or DataFrame
    Return type is the same as the original object with ``np.float64`` dtype.

See Also
--------
Series.expanding : Calling expanding with Series data.
DataFrame.expanding : Calling expanding with DataFrames.
Series.sum : Aggregating sum for Series.
DataFrame.sum : Aggregating sum for DataFrame.

Notes
-----
See :ref:`window.numba_engine` and :ref:`enhancingperf.numba` for extended
documentation and performance considerations for the Numba engine.

Examples
--------
>>> 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
©r5   r;   r<   )r"   Úsum©r$   r5   r;   r<   r%   s       €r&   rJ   ÚExpanding.sum¬  ó%   ø€ ôl ‰w‰{Ø%ØØ'ð ð 
ð 	
r(   c                ó"   >• [         TU ]  UUUS9$ )a°  
Calculate the expanding maximum.

Parameters
----------
numeric_only : bool, default False
    Include only float, int, boolean columns.

engine : str, default None
    * ``'cython'`` : Runs the operation through C-extensions from cython.
    * ``'numba'`` : Runs the operation through JIT compiled code from numba.
    * ``None`` : Defaults to ``'cython'`` or globally setting
      ``compute.use_numba``

engine_kwargs : dict, default None
    * For ``'cython'`` engine, there are no accepted ``engine_kwargs``
    * For ``'numba'`` engine, the engine can accept ``nopython``, ``nogil``
      and ``parallel`` dictionary keys. The values must either be ``True`` or
      ``False``. The default ``engine_kwargs`` for the ``'numba'`` engine is
      ``{'nopython': True, 'nogil': False, 'parallel': False}``

Returns
-------
Series or DataFrame
    Return type is the same as the original object with ``np.float64`` dtype.

See Also
--------
Series.expanding : Calling expanding with Series data.
DataFrame.expanding : Calling expanding with DataFrames.
Series.max : Aggregating max for Series.
DataFrame.max : Aggregating max for DataFrame.

Notes
-----
See :ref:`window.numba_engine` and :ref:`enhancingperf.numba` for extended
documentation and performance considerations for the Numba engine.

Examples
--------
>>> 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
rI   )r"   ÚmaxrK   s       €r&   rO   ÚExpanding.maxè  rM   r(   c                ó"   >• [         TU ]  UUUS9$ )a°  
Calculate the expanding minimum.

Parameters
----------
numeric_only : bool, default False
    Include only float, int, boolean columns.

engine : str, default None
    * ``'cython'`` : Runs the operation through C-extensions from cython.
    * ``'numba'`` : Runs the operation through JIT compiled code from numba.
    * ``None`` : Defaults to ``'cython'`` or globally setting
      ``compute.use_numba``

engine_kwargs : dict, default None
    * For ``'cython'`` engine, there are no accepted ``engine_kwargs``
    * For ``'numba'`` engine, the engine can accept ``nopython``, ``nogil``
      and ``parallel`` dictionary keys. The values must either be ``True`` or
      ``False``. The default ``engine_kwargs`` for the ``'numba'`` engine is
      ``{'nopython': True, 'nogil': False, 'parallel': False}``

Returns
-------
Series or DataFrame
    Return type is the same as the original object with ``np.float64`` dtype.

See Also
--------
Series.expanding : Calling expanding with Series data.
DataFrame.expanding : Calling expanding with DataFrames.
Series.min : Aggregating min for Series.
DataFrame.min : Aggregating min for DataFrame.

Notes
-----
See :ref:`window.numba_engine` and :ref:`enhancingperf.numba` for extended
documentation and performance considerations for the Numba engine.

Examples
--------
>>> 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
rI   )r"   ÚminrK   s       €r&   rR   ÚExpanding.min$  rM   r(   c                ó"   >• [         TU ]  UUUS9$ )a²  
Calculate the expanding mean.

Parameters
----------
numeric_only : bool, default False
    Include only float, int, boolean columns.

engine : str, default None
    * ``'cython'`` : Runs the operation through C-extensions from cython.
    * ``'numba'`` : Runs the operation through JIT compiled code from numba.
    * ``None`` : Defaults to ``'cython'`` or globally setting
      ``compute.use_numba``

engine_kwargs : dict, default None
    * For ``'cython'`` engine, there are no accepted ``engine_kwargs``
    * For ``'numba'`` engine, the engine can accept ``nopython``, ``nogil``
      and ``parallel`` dictionary keys. The values must either be ``True`` or
      ``False``. The default ``engine_kwargs`` for the ``'numba'`` engine is
      ``{'nopython': True, 'nogil': False, 'parallel': False}``

Returns
-------
Series or DataFrame
    Return type is the same as the original object with ``np.float64`` dtype.

See Also
--------
Series.expanding : Calling expanding with Series data.
DataFrame.expanding : Calling expanding with DataFrames.
Series.mean : Aggregating mean for Series.
DataFrame.mean : Aggregating mean for DataFrame.

Notes
-----
See :ref:`window.numba_engine` and :ref:`enhancingperf.numba` for extended
documentation and performance considerations for the Numba engine.

Examples
--------
>>> 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
rI   )r"   ÚmeanrK   s       €r&   rU   ÚExpanding.mean`  s%   ø€ ôl ‰w‰|Ø%ØØ'ð ð 
ð 	
r(   c                ó"   >• [         TU ]  UUUS9$ )a¾  
Calculate the expanding median.

Parameters
----------
numeric_only : bool, default False
    Include only float, int, boolean columns.

engine : str, default None
    * ``'cython'`` : Runs the operation through C-extensions from cython.
    * ``'numba'`` : Runs the operation through JIT compiled code from numba.
    * ``None`` : Defaults to ``'cython'`` or globally setting
      ``compute.use_numba``

engine_kwargs : dict, default None
    * For ``'cython'`` engine, there are no accepted ``engine_kwargs``
    * For ``'numba'`` engine, the engine can accept ``nopython``, ``nogil``
      and ``parallel`` dictionary keys. The values must either be ``True`` or
      ``False``. The default ``engine_kwargs`` for the ``'numba'`` engine is
      ``{'nopython': True, 'nogil': False, 'parallel': False}``

Returns
-------
Series or DataFrame
    Return type is the same as the original object with ``np.float64`` dtype.

See Also
--------
Series.expanding : Calling expanding with Series data.
DataFrame.expanding : Calling expanding with DataFrames.
Series.median : Aggregating median for Series.
DataFrame.median : Aggregating median for DataFrame.

Notes
-----
See :ref:`window.numba_engine` and :ref:`enhancingperf.numba` for extended
documentation and performance considerations for the Numba engine.

Examples
--------
>>> 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
rI   )r"   ÚmedianrK   s       €r&   rX   ÚExpanding.medianœ  s%   ø€ ôl ‰w‰~Ø%ØØ'ð ð 
ð 	
r(   c                ó$   >• [         TU ]  UUUUS9$ )aÙ  
Calculate the expanding standard deviation.

Parameters
----------
ddof : int, default 1
    Delta Degrees of Freedom.  The divisor used in calculations
    is ``N - ddof``, where ``N`` represents the number of elements.

numeric_only : bool, default False
    Include only float, int, boolean columns.

engine : str, default None
    * ``'cython'`` : Runs the operation through C-extensions from cython.
    * ``'numba'`` : Runs the operation through JIT compiled code from numba.
    * ``None`` : Defaults to ``'cython'`` or globally setting
      ``compute.use_numba``

engine_kwargs : dict, default None
    * For ``'cython'`` engine, there are no accepted ``engine_kwargs``
    * For ``'numba'`` engine, the engine can accept ``nopython``, ``nogil``
      and ``parallel`` dictionary keys. The values must either be ``True`` or
      ``False``. The default ``engine_kwargs`` for the ``'numba'`` engine is
      ``{'nopython': True, 'nogil': False, 'parallel': False}``

Returns
-------
Series or DataFrame
    Return type is the same as the original object with ``np.float64`` dtype.

See Also
--------
numpy.std : Equivalent method for NumPy array.
Series.expanding : Calling expanding with Series data.
DataFrame.expanding : Calling expanding with DataFrames.
Series.std : Aggregating std for Series.
DataFrame.std : Aggregating std for DataFrame.

Notes
-----
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.

Examples
--------
>>> 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
©Úddofr5   r;   r<   )r"   Ústd©r$   r\   r5   r;   r<   r%   s        €r&   r]   ÚExpanding.stdØ  ó(   ø€ ôD ‰w‰{ØØ%ØØ'ð	 ð 
ð 	
r(   c                ó$   >• [         TU ]  UUUUS9$ )aÏ  
Calculate the expanding variance.

Parameters
----------
ddof : int, default 1
    Delta Degrees of Freedom.  The divisor used in calculations
    is ``N - ddof``, where ``N`` represents the number of elements.

numeric_only : bool, default False
    Include only float, int, boolean columns.

engine : str, default None
    * ``'cython'`` : Runs the operation through C-extensions from cython.
    * ``'numba'`` : Runs the operation through JIT compiled code from numba.
    * ``None`` : Defaults to ``'cython'`` or globally setting
      ``compute.use_numba``

engine_kwargs : dict, default None
    * For ``'cython'`` engine, there are no accepted ``engine_kwargs``
    * For ``'numba'`` engine, the engine can accept ``nopython``, ``nogil``
      and ``parallel`` dictionary keys. The values must either be ``True`` or
      ``False``. The default ``engine_kwargs`` for the ``'numba'`` engine is
      ``{'nopython': True, 'nogil': False, 'parallel': False}``

Returns
-------
Series or DataFrame
    Return type is the same as the original object with ``np.float64`` dtype.

See Also
--------
numpy.var : Equivalent method for NumPy array.
Series.expanding : Calling expanding with Series data.
DataFrame.expanding : Calling expanding with DataFrames.
Series.var : Aggregating var for Series.
DataFrame.var : Aggregating var for DataFrame.

Notes
-----
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.

Examples
--------
>>> 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
r[   )r"   Úvarr^   s        €r&   rb   ÚExpanding.var!  r`   r(   c                ó   >• [         TU ]  XS9$ )a[  
Calculate the expanding standard error of mean.

Parameters
----------
ddof : int, default 1
    Delta Degrees of Freedom.  The divisor used in calculations
    is ``N - ddof``, where ``N`` represents the number of elements.

numeric_only : bool, default False
    Include only float, int, boolean columns.

Returns
-------
Series or DataFrame
    Return type is the same as the original object with ``np.float64`` dtype.

See Also
--------
Series.expanding : Calling expanding with Series data.
DataFrame.expanding : Calling expanding with DataFrames.
Series.sem : Aggregating sem for Series.
DataFrame.sem : Aggregating sem for DataFrame.

Notes
-----
A minimum of one period is required for the calculation.

Examples
--------
>>> s = pd.Series([0, 1, 2, 3])

>>> s.expanding().sem()
0         NaN
1    0.500000
2    0.577350
3    0.645497
dtype: float64
)r\   r5   )r"   Úsem)r$   r\   r5   r%   s      €r&   re   ÚExpanding.semj  s   ø€ ôP ‰w‰{ ˆ{Ð@Ð@r(   c                ó   >• [         TU ]  US9$ )a<  
Calculate the expanding unbiased skewness.

Parameters
----------
numeric_only : bool, default False
    Include only float, int, boolean columns.

Returns
-------
Series or DataFrame
    Return type is the same as the original object with ``np.float64`` dtype.

See Also
--------
scipy.stats.skew : Third moment of a probability density.
Series.expanding : Calling expanding with Series data.
DataFrame.expanding : Calling expanding with DataFrames.
Series.skew : Aggregating skew for Series.
DataFrame.skew : Aggregating skew for DataFrame.

Notes
-----
A minimum of three periods is required for the rolling calculation.

Examples
--------
>>> 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
r4   )r"   Úskewr7   s     €r&   rh   ÚExpanding.skew”  s   ø€ ôJ ‰w‰|¨ˆ|Ð6Ð6r(   c                ó   >• [         TU ]  US9$ )aY  
Calculate the expanding Fisher's definition of kurtosis without bias.

Parameters
----------
numeric_only : bool, default False
    Include only float, int, boolean columns.

Returns
-------
Series or DataFrame
    Return type is the same as the original object with ``np.float64`` dtype.

See Also
--------
scipy.stats.kurtosis : Reference SciPy method.
Series.expanding : Calling expanding with Series data.
DataFrame.expanding : Calling expanding with DataFrames.
Series.kurt : Aggregating kurt for Series.
DataFrame.kurt : Aggregating kurt for DataFrame.

Notes
-----
A minimum of four periods is required for the calculation.

Examples
--------
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
r4   )r"   Úkurtr7   s     €r&   rk   ÚExpanding.kurt»  s   ø€ ô\ ‰w‰|¨ˆ|Ð6Ð6r(   c                ó   >• [         TU ]  US9$ )a–  
Calculate the expanding First (left-most) element of the window.

Parameters
----------
numeric_only : bool, default False
    Include only float, int, boolean columns.

Returns
-------
Series or DataFrame
    Return type is the same as the original object with ``np.float64`` dtype.

See Also
--------
GroupBy.first : Similar method for GroupBy objects.
Expanding.last : Method to get the last element in each window.

Examples
--------
The example below will show an expanding calculation with a window size of
three.

>>> s = pd.Series(range(5))
>>> s.expanding(3).first()
0         NaN
1         NaN
2         0.0
3         0.0
4         0.0
dtype: float64
r4   )r"   Úfirstr7   s     €r&   rn   ÚExpanding.firstë  s   ø€ ôB ‰w‰}¨,ˆ}Ð7Ð7r(   c                ó   >• [         TU ]  US9$ )a–  
Calculate the expanding Last (right-most) element of the window.

Parameters
----------
numeric_only : bool, default False
    Include only float, int, boolean columns.

Returns
-------
Series or DataFrame
    Return type is the same as the original object with ``np.float64`` dtype.

See Also
--------
GroupBy.last : Similar method for GroupBy objects.
Expanding.first : Method to get the first element in each window.

Examples
--------
The example below will show an expanding calculation with a window size of
three.

>>> s = pd.Series(range(5))
>>> s.expanding(3).last()
0         NaN
1         NaN
2         2.0
3         3.0
4         4.0
dtype: float64
r4   )r"   Úlastr7   s     €r&   rq   ÚExpanding.last  s   ø€ ôB ‰w‰|¨ˆ|Ð6Ð6r(   c                ó"   >• [         TU ]  UUUS9$ )aã  
Calculate the expanding quantile.

Parameters
----------
q : float
    Quantile to compute. 0 <= quantile <= 1.

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.

numeric_only : bool, default False
    Include only float, int, boolean columns.

Returns
-------
Series or DataFrame
    Return type is the same as the original object with ``np.float64`` dtype.

See Also
--------
Series.expanding : Calling expanding with Series data.
DataFrame.expanding : Calling expanding with DataFrames.
Series.quantile : Aggregating quantile for Series.
DataFrame.quantile : Aggregating quantile for DataFrame.

Examples
--------
>>> ser = pd.Series([1, 2, 3, 4, 5, 6], index=["a", "b", "c", "d", "e", "f"])
>>> ser.expanding(min_periods=4).quantile(0.25)
a     NaN
b     NaN
c     NaN
d    1.75
e    2.00
f    2.25
dtype: float64
)ÚqÚinterpolationr5   )r"   Úquantile)r$   rt   ru   r5   r%   s       €r&   rv   ÚExpanding.quantile1  s&   ø€ ôh ‰wÑØØ'Ø%ð  ð 
ð 	
r(   c                ó$   >• [         TU ]  UUUUS9$ )a  
Calculate the expanding rank.

Parameters
----------
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.
numeric_only : bool, default False
    Include only float, int, boolean columns.

Returns
-------
Series or DataFrame
    Return type is the same as the original object with ``np.float64`` dtype.

See Also
--------
Series.expanding : Calling expanding with Series data.
DataFrame.expanding : Calling expanding with DataFrames.
Series.rank : Aggregating rank for Series.
DataFrame.rank : Aggregating rank for DataFrame.

Examples
--------
>>> 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
)r   Ú	ascendingÚpctr5   )r"   Úrank)r$   r   ry   rz   r5   r%   s        €r&   r{   ÚExpanding.rankk  s(   ø€ ôJ ‰w‰|ØØØØ%ð	 ð 
ð 	
r(   c                ó   >• [         TU ]  US9$ )a›  
Calculate the expanding nunique.

.. versionadded:: 3.0.0

Parameters
----------
numeric_only : bool, default False
    Include only float, int, boolean columns.

Returns
-------
Series or DataFrame
    Return type is the same as the original object with ``np.float64`` dtype.

See Also
--------
Series.expanding : Calling expanding with Series data.
DataFrame.expanding : Calling expanding with DataFrames.
Series.nunique : Aggregating nunique for Series.
DataFrame.nunique : Aggregating nunique for DataFrame.

Examples
--------
>>> s = pd.Series([1, 4, 2, 3, 5, 3])
>>> s.expanding().nunique()
0    1.0
1    2.0
2    3.0
3    4.0
4    5.0
5    5.0
dtype: float64
r4   )r"   Únuniquer7   s     €r&   r~   ÚExpanding.nunique·  s   ø€ ôL ‰w‰Ø%ð ð 
ð 	
r(   c                ó$   >• [         TU ]  UUUUS9$ )al  
Calculate the expanding sample covariance.

Parameters
----------
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.
numeric_only : bool, default False
    Include only float, int, boolean columns.

Returns
-------
Series or DataFrame
    Return type is the same as the original object with ``np.float64`` dtype.

See Also
--------
Series.expanding : Calling expanding with Series data.
DataFrame.expanding : Calling expanding with DataFrames.
Series.cov : Aggregating cov for Series.
DataFrame.cov : Aggregating cov for DataFrame.

Examples
--------
>>> 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
©ÚotherÚpairwiser\   r5   )r"   Úcov©r$   r‚   rƒ   r\   r5   r%   s        €r&   r„   ÚExpanding.cová  s(   ø€ ôf ‰w‰{ØØØØ%ð	 ð 
ð 	
r(   c                ó$   >• [         TU ]  UUUUS9$ )a×  
Calculate the expanding correlation.

Parameters
----------
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.

numeric_only : bool, default False
    Include only float, int, boolean columns.

Returns
-------
Series or DataFrame
    Return type is the same as the original object with ``np.float64`` dtype.

See Also
--------
cov : Similar method to calculate covariance.
numpy.corrcoef : NumPy Pearson's correlation calculation.
Series.expanding : Calling expanding with Series data.
DataFrame.expanding : Calling expanding with DataFrames.
Series.corr : Aggregating corr for Series.
DataFrame.corr : Aggregating corr for DataFrame.

Notes
-----

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.

Examples
--------
>>> 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
r�   )r"   Úcorrr…   s        €r&   rˆ   ÚExpanding.corr  s(   ø€ ôZ ‰w‰|ØØØØ%ð	 ð 
ð 	
r(   rA   )é   ÚsingleN)r    r   r   Úintr   ÚstrÚreturnÚNone)rŽ   r   r@   )F)r5   Úbool)FNNNN)r/   zCallable[..., Any]r:   r�   r;   ú!Literal['cython', 'numba'] | Noner<   údict[str, bool] | Noner0   ztuple[Any, ...] | Noner1   zdict[str, Any] | None)r/   z!Callable[Concatenate[Self, P], T]r0   zP.argsr1   zP.kwargsrŽ   r   )r/   ztuple[Callable[..., T], str]r0   r   r1   r   rŽ   r   )r/   z@Callable[Concatenate[Self, P], T] | tuple[Callable[..., T], str]r0   r   r1   r   rŽ   r   )FNN)r5   r�   r;   r‘   r<   r’   )rŠ   FNN)r\   rŒ   r5   r�   r;   r‘   r<   r’   )rŠ   F)r\   rŒ   r5   r�   )ÚlinearF)rt   Úfloatru   r   r5   r�   )ÚaverageTFF)r   r   ry   r�   rz   r�   r5   r�   )NNrŠ   F)r‚   zDataFrame | Series | Nonerƒ   zbool | Noner\   rŒ   r5   r�   )#Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Ú__annotations__r#   r*   r-   Úaggr6   r=   r
   rC   r	   rJ   rO   rR   rU   rX   r]   rb   re   rh   rk   rn   rq   rv   r{   r~   r„   rˆ   Ú__static_attributes__Ú__classcell__)r%   s   @r&   r   r   *   sS  ø‡ ñ@ðD ,¨XÐ6€K�Ó6ð
 ØØð
àð
ð ð
ð ð	
ð 
÷
ð 
ô"÷N8ð` €C÷8ñ 8ðH Ø48Ø04Ø'+Ø(,ðM
à ðM
ð ðM
ð 2ð	M
ð
 .ðM
ð %ðM
ð &÷M
ð M
ð^ ðà/ðð ðð ð	ð
 
óó ðð ðà*ðð ðð ð	ð
 
óó ðð ðS3àNðS3ð ðS3ð ð	S3ð
 
öS3ó ðS3ðn #Ø48Ø04ð	:
àð:
ð 2ð:
ð .÷	:
ð :
ð| #Ø48Ø04ð	:
àð:
ð 2ð:
ð .÷	:
ð :
ð| #Ø48Ø04ð	:
àð:
ð 2ð:
ð .÷	:
ð :
ð| #Ø48Ø04ð	:
àð:
ð 2ð:
ð .÷	:
ð :
ð| #Ø48Ø04ð	:
àð:
ð 2ð:
ð .÷	:
ð :
ð| Ø"Ø48Ø04ðG
àðG
ð ðG
ð 2ð	G
ð
 .÷G
ð G
ðV Ø"Ø48Ø04ðG
àðG
ð ðG
ð 2ð	G
ð
 .÷G
ð G
÷R(Añ (A÷T%7ñ %7÷N.7ñ .7÷`!8ñ !8÷F!7ñ !7ðL 08Ø"ð	8
àð8
ð -ð8
ð ÷	8
ð 8
ðx %.ØØØ"ðJ
à!ðJ
ð ðJ
ð ð	J
ð
 ÷J
ð J
ð\ #ð(
à÷(
ð (
ðX ,0Ø $ØØ"ð8
à(ð8
ð ð8
ð ð	8
ð
 ÷8
ð 8
ðx ,0Ø $ØØ"ðR
à(ðR
ð ðR
ð ð	R
ð
 ÷R
ö R
r(   r   c                  óT   • \ rS rSrSr\R                  \R                  -   rSS jrSr	g)ÚExpandingGroupbyip  z.
Provide an expanding groupby implementation.
c                óJ   • [        U R                  R                  [        S9nU$ )zk
Return an indexer class that will compute the window start and end bounds

Returns
-------
GroupbyIndexer
)Úgroupby_indicesÚwindow_indexer)r   Ú_grouperÚindicesr   )r$   r£   s     r&   r*   Ú$ExpandingGroupby._get_window_indexerx  s&   € ô (Ø ŸM™M×1Ñ1Ü+ñ
ˆð Ðr(   rA   N)rŽ   r   )
r–   r—   r˜   r™   rš   r   r   r   r*   r�   rA   r(   r&   r    r    p  s%   † ñð ×'Ñ'Ð*;×*GÑ*GÑG€K÷r(   r    N)!Ú
__future__r   Útypingr   r   r   r   r   r	   r
   Úpandas.util._decoratorsr   Úpandas.core.indexers.objectsr   r   r   Úpandas.core.window.rollingr   r   Úcollections.abcr   Úpandas._typingr   r   r   r   Úpandasr   r   Úpandas.core.genericr   r   r    rA   r(   r&   Ú<module>r°      s‘   ðÝ "÷÷ ñ õ /÷ñ ÷
ö
 Ý(÷ó ÷õ ,ñ ÐÓ ôB
Ð(ó B
ó !ðB
ñJ* ÐÓ ôÐ(¨)ó ó !ñr(   