§
    Ï! h(Ç  ã                  óÜ  — d dl mZ d dlZd dlZd dlmZmZmZ d dlZd dl	Z
d dlmZ d dlmZ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 d dlmZ d d	l m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( d d
l)m*Z*m+Z+m,Z,  edd¬¦  «        Z-e-duZ.da/d€d�d„Z0 e0 ed¦  «        ¦  «          G d„ d¦  «        Z1 G d„ d¦  «        Z2d‚d„Z3dƒd„Z4	 d„d…d"„Z5d†d(„Z6	 	 	 d‡dˆd-„Z7d‰d/„Z8dŠd0„Z9d‹dŒd1„Z:d�d4„Z;dŽd8„Z<d�d9„Z=dddd:œd�d;„Z>dddd:œd�d<„Z? e1d=¦  «        e;e=ddd dd>œd�dB„¦   «         ¦   «         ¦   «         Z@d‘dH„ZA e2¦   «         e;dddd:œd’dI„¦   «         ¦   «         ZB e2¦   «         dddd:œd“dJ„¦   «         ZCd”dN„ZD e
jE        e
jF        ¦  «        fd•dR„ZG e2dS¬T¦  «        dddSddUœd–dV„¦   «         ZH e1d=dW¦  «         e2dS¬T¦  «        dddSddUœd—dX„¦   «         ¦   «         ZI e1d=dW¦  «        dddSddUœd˜dY„¦   «         ZJdZ„ ZK eKd[d\¬]¦  «        ZL eKd^d_¬]¦  «        ZMdddd:œd™da„ZNdddd:œd™db„ZO e1d=dW¦  «        e=dddd:œd’dc„¦   «         ¦   «         ZP e1d=dW¦  «        e=dddd:œd’dd„¦   «         ¦   «         ZQ e1d=dW¦  «        e=ddd dd>œd�de„¦   «         ¦   «         ZRdšdg„ZS e
jE        e
jF        ¦  «        fd›dj„ZT	 dœd�dm„ZUdždn„ZVdo„ ZW e1d=dW¦  «        dpddqœdŸdx„¦   «         ZXd dz„ZY e1d=dW¦  «        ddSd{œd¡d|„¦   «         ZZd}„ Z[d¢d„Z\dS )£é    )ÚannotationsN)ÚAnyÚCallableÚcast)Ú
get_option)ÚNaTÚNaTTypeÚiNaTÚlib)	Ú	ArrayLikeÚAxisIntÚCorrelationMethodÚDtypeÚDtypeObjÚFÚScalarÚShapeÚnpt)Úimport_optional_dependency)Úfind_stack_level)Ú
is_complexÚis_floatÚis_float_dtypeÚ
is_integerÚis_numeric_dtypeÚis_object_dtypeÚneeds_i8_conversionÚpandas_dtype)ÚisnaÚna_value_for_dtypeÚnotnaÚ
bottleneckÚwarn)ÚerrorsFTÚvÚboolÚreturnÚNonec                ó   — t           r| ad S d S ©N)Ú_BOTTLENECK_INSTALLEDÚ_USE_BOTTLENECK)r%   s    úLc:\xampp_lite_8_4\www\timesheet\venv\Lib\site-packages\pandas/core/nanops.pyÚset_use_bottleneckr.   9   s   € õ ð Øˆˆˆðð ó    zcompute.use_bottleneckc                  ó0   ‡ — e Zd Zdˆ fd„Zdd„Zdd
„Zˆ xZS )ÚdisallowÚdtypesr   r'   r(   c                ó„   •— t          ¦   «                              ¦   «          t          d„ |D ¦   «         ¦  «        | _        d S )Nc              3  ó>   K  — | ]}t          |¦  «        j        V — Œd S r*   )r   Útype)Ú.0Údtypes     r-   ú	<genexpr>z$disallow.__init__.<locals>.<genexpr>F   s-   è è € ÐIÐI¸�L¨Ñ/Ô/Ô4ÐIÐIÐIÐIÐIÐIr/   )ÚsuperÚ__init__Útupler2   )Úselfr2   Ú	__class__s     €r-   r:   zdisallow.__init__D   s;   ø€ Ý‰Œ×ÒÑÔÐÝÐIÐIÀ&ÐIÑIÔIÑIÔIˆŒˆˆr/   r&   c                ó`   — t          |d¦  «        ot          |j        j        | j        ¦  «        S )Nr7   )ÚhasattrÚ
issubclassr7   r5   r2   )r<   Úobjs     r-   Úcheckzdisallow.checkH   s'   € Ý�s˜GÑ$Ô$ÐP­°C´I´NÀDÄKÑ)PÔ)PÐPr/   Úfr   c                óp   ‡ ‡— t          j        ‰¦  «        ˆˆ fd„¦   «         }t          t          |¦  «        S )Nc                 óf  •— t          j        | |                     ¦   «         ¦  «        }t          ˆfd„|D ¦   «         ¦  «        r.‰j                             dd¦  «        }t          d|› d�¦  «        ‚	  ‰| i |¤ŽS # t          $ r+}t          | d         ¦  «        rt          |¦  «        |‚‚ d }~ww xY w)Nc              3  óB   •K  — | ]}‰                      |¦  «        V — Œd S r*   )rB   )r6   rA   r<   s     €r-   r8   z0disallow.__call__.<locals>._f.<locals>.<genexpr>O   s-   øè è € Ð7Ð7 s�4—:’:˜c‘?”?Ð7Ð7Ð7Ð7Ð7Ð7r/   ÚnanÚ zreduction operation 'z' not allowed for this dtyper   )	Ú	itertoolsÚchainÚvaluesÚanyÚ__name__ÚreplaceÚ	TypeErrorÚ
ValueErrorr   )ÚargsÚkwargsÚobj_iterÚf_nameÚerC   r<   s        €€r-   Ú_fzdisallow.__call__.<locals>._fL   sØ   ø€ å ” t¨V¯]ª]©_¬_Ñ=Ô=ˆHÝÐ7Ð7Ð7Ð7¨hÐ7Ñ7Ô7Ñ7Ô7ð Øœ×+Ò+¨E°2Ñ6Ô6�ÝØP¨FÐPÐPÐPñô ð ð	Ø�q˜$Ð) &Ð)Ð)Ð)øÝð ð ð õ
 # 4¨¤7Ñ+Ô+ð .Ý# A™,œ,¨AÐ-Øøøøøðøøøs   Á3A; Á;
B0Â&B+Â+B0©Ú	functoolsÚwrapsr   r   )r<   rC   rV   s   `` r-   Ú__call__zdisallow.__call__K   sG   øø€ Ý	Œ˜Ñ	Ô	ð	ð 	ð 	ð 	ð 	ñ 
Ô	ð	õ$ •A�r‰{Œ{Ðr/   )r2   r   r'   r(   ©r'   r&   )rC   r   r'   r   )rM   Ú
__module__Ú__qualname__r:   rB   rZ   Ú__classcell__)r=   s   @r-   r1   r1   C   so   ø€ € € € € ðJð Jð Jð Jð Jð JðQð Qð Qð Qðð ð ð ð ð ð ð r/   r1   c                  ó    — e Zd Zdd	d„Zd
d„ZdS )Úbottleneck_switchNr'   r(   c                ó"   — || _         || _        d S r*   )ÚnamerR   )r<   rb   rR   s      r-   r:   zbottleneck_switch.__init__c   s   € ØˆŒ	ØˆŒˆˆr/   Úaltr   c                óþ   ‡ ‡‡‡— ‰ j         p‰j        Š	 t          t          ‰¦  «        Šn# t          t
          f$ r d ŠY nw xY wt          j        ‰¦  «        d ddœd
ˆˆˆˆ fd	„¦   «         }t          t          |¦  «        S )NT©ÚaxisÚskipnarK   ú
np.ndarrayrf   úAxisInt | Nonerg   r&   c               óü  •— t          ‰
j        ¦  «        dk    r(‰
j                             ¦   «         D ]\  }}||vr|||<   Œ| j        dk    r%|                     d¦  «        €t          | |¦  «        S t          rw|rut          | j        ‰	¦  «        r`|                     dd ¦  «        €=| 	                    dd ¦  «          ‰| fd|i|¤Ž}t          |¦  «        r ‰| f||dœ|¤Ž}n ‰| f||dœ|¤Ž}n ‰| f||dœ|¤Ž}|S )Nr   Ú	min_countÚmaskrf   re   )ÚlenrR   ÚitemsÚsizeÚgetÚ_na_for_min_countr,   Ú_bn_ok_dtyper7   ÚpopÚ	_has_infs)rK   rf   rg   ÚkwdsÚkr%   Úresultrc   Úbn_funcÚbn_namer<   s          €€€€r-   rC   z%bottleneck_switch.__call__.<locals>.fo   s^  ø€ õ �4”;ÑÔ !Ò#Ð#Ø œK×-Ò-Ñ/Ô/ð $ð $‘D�A�qØ �}�}Ø"#˜˜Q™øàŒ{˜aÒÐ D§H¢H¨[Ñ$9Ô$9Ð$Aõ )¨°Ñ6Ô6Ð6åð G 6ð G­l¸6¼<ÈÑ.QÔ.Qð GØ—8’8˜F DÑ)Ô)Ð1ð —H’H˜V TÑ*Ô*Ð*Ø$˜W VÐ?Ð?°$Ð?¸$Ð?Ð?�Fõ ! Ñ(Ô(ð OØ!$  VÐ!N°$¸vÐ!NÐ!NÈÐ!NÐ!N˜øà ˜S ÐJ¨d¸6ÐJÐJÀTÐJÐJ�F�Fà˜˜VÐF¨$°vÐFÐFÀÐFÐF�àˆMr/   )rK   rh   rf   ri   rg   r&   )
rb   rM   ÚgetattrÚbnÚAttributeErrorÚ	NameErrorrX   rY   r   r   )r<   rc   rC   rx   ry   s   `` @@r-   rZ   zbottleneck_switch.__call__g   sº   øøøø€ Ø”)Ð+˜sœ|ˆð	Ý�b 'Ñ*Ô*ˆGˆGøÝ¥	Ð*ð 	ð 	ð 	ØˆGˆGˆGð	øøøõ 
Œ˜Ñ	Ô	ð $(Øð	%	ð %	ð %	ð %	ð %	ð %	ð %	ð %	ð %	ð %	ñ 
Ô	ð%	õN •A�q‰zŒzÐs   ”* ªA ¿A r*   )r'   r(   )rc   r   r'   r   )rM   r\   r]   r:   rZ   © r/   r-   r`   r`   b   sA   € € € € € ðð ð ð ð ð0ð 0ð 0ð 0ð 0ð 0r/   r`   r7   r   rb   Ústrc                óB   — | t           k    rt          | ¦  «        s|dvS dS )N)ÚnansumÚnanprodÚnanmeanF)Úobjectr   )r7   rb   s     r-   rr   rr   š   s+   € à•‚€Õ2°5Ñ9Ô9€ð Ð;Ð;Ð;Øˆ5r/   c                ó  — t          | t          j        ¦  «        r0| j        dv r't	          j        |                      d¦  «        ¦  «        S 	 t          j        | ¦  «                             ¦   «         S # t          t          f$ r Y dS w xY w)N)Úf8Úf4ÚKF)Ú
isinstanceÚnpÚndarrayr7   r   Úhas_infsÚravelÚisinfrL   rO   ÚNotImplementedError)rw   s    r-   rt   rt   ®   sŠ   € Ý�&�"œ*Ñ%Ô%ð 3ØŒ<˜<Ð'Ð'õ ”< §¢¨SÑ 1Ô 1Ñ2Ô2Ð2ðÝŒx˜ÑÔ×#Ò#Ñ%Ô%Ð%øÝÕ*Ð+ð ð ð àˆuˆuðøøøs   Á%A2 Á2BÂBÚ
fill_valueúScalar | Nonec                ó´   — |�|S t          | ¦  «        r-|€t          j        S |dk    rt          j        S t          j         S |dk    rt          j        S t          S )z9return the correct fill value for the dtype of the valuesNú+inf)Ú_na_ok_dtyperŠ   rG   Úinfr   Úi8maxr
   )r7   r�   Úfill_value_typs      r-   Ú_get_fill_valuer˜   »   s`   € ð ÐØÐÝ�EÑÔð ØÐ!Ý”6ˆMà Ò'Ð'Ý”v�åœ�w�à˜VÒ#Ð#å”9ÐåˆKr/   rK   rh   rg   rl   únpt.NDArray[np.bool_] | Nonec                óh   — |€/| j         j        dv rdS |s| j         j        dv rt          | ¦  «        }|S )aº  
    Compute a mask if and only if necessary.

    This function will compute a mask iff it is necessary. Otherwise,
    return the provided mask (potentially None) when a mask does not need to be
    computed.

    A mask is never necessary if the values array is of boolean or integer
    dtypes, as these are incapable of storing NaNs. If passing a NaN-capable
    dtype that is interpretable as either boolean or integer data (eg,
    timedelta64), a mask must be provided.

    If the skipna parameter is False, a new mask will not be computed.

    The mask is computed using isna() by default. Setting invert=True selects
    notna() as the masking function.

    Parameters
    ----------
    values : ndarray
        input array to potentially compute mask for
    skipna : bool
        boolean for whether NaNs should be skipped
    mask : Optional[ndarray]
        nan-mask if known

    Returns
    -------
    Optional[np.ndarray[bool]]
    NÚbiuÚmM)r7   Úkindr   )rK   rg   rl   s      r-   Ú_maybe_get_maskrž   Ñ   sF   € ðB €|ØŒ<Ô Ð%Ð%à�4àð 	 �V”\Ô&¨$Ð.Ð.Ý˜‘<”<ˆDà€Kr/   r   r—   ú
str | Noneú/tuple[np.ndarray, npt.NDArray[np.bool_] | None]c                óª  — t          | ||¦  «        }| j        }d}| j        j        dv r)t          j        |                      d¦  «        ¦  «        } d}|r}|�{t          |||¬¦  «        }|�g|                     ¦   «         rS|st          |¦  «        r+|  	                    ¦   «         } t          j
        | ||¦  «         nt          j        | | |¦  «        } | |fS )a   
    Utility to get the values view, mask, dtype, dtype_max, and fill_value.

    If both mask and fill_value/fill_value_typ are not None and skipna is True,
    the values array will be copied.

    For input arrays of boolean or integer dtypes, copies will only occur if a
    precomputed mask, a fill_value/fill_value_typ, and skipna=True are
    provided.

    Parameters
    ----------
    values : ndarray
        input array to potentially compute mask for
    skipna : bool
        boolean for whether NaNs should be skipped
    fill_value : Any
        value to fill NaNs with
    fill_value_typ : str
        Set to '+inf' or '-inf' to handle dtype-specific infinities
    mask : Optional[np.ndarray[bool]]
        nan-mask if known

    Returns
    -------
    values : ndarray
        Potential copy of input value array
    mask : Optional[ndarray[bool]]
        Mask for values, if deemed necessary to compute
    Frœ   Úi8TN)r�   r—   )rž   r7   r�   rŠ   ÚasarrayÚviewr˜   rL   r”   ÚcopyÚputmaskÚwhere)rK   rg   r�   r—   rl   r7   Údatetimelikes          r-   Ú_get_valuesr©   ý   sö   € õR ˜6 6¨4Ñ0Ô0€DàŒL€Eà€LØ„|Ô˜DÐ Ð õ ”˜FŸKšK¨Ñ-Ô-Ñ.Ô.ˆØˆàð A�4Ð#õ %Ø˜j¸ð
ñ 
ô 
ˆ
ð Ð!Ø�xŠx‰zŒzð AØð A¥<°Ñ#6Ô#6ð AØ#Ÿ[š[™]œ]�FÝ”J˜v t¨ZÑ8Ô8Ð8Ð8õ  œX t e¨V°ZÑ@Ô@�Fà�4ˆ<Ðr/   únp.dtypec                ó   — | }| j         dv rt          j        t          j        ¦  «        }nS| j         dk    rt          j        t          j        ¦  «        }n)| j         dk    rt          j        t          j        ¦  «        }|S )NÚbiÚurC   )r�   rŠ   r7   Úint64Úuint64Úfloat64)r7   Ú	dtype_maxs     r-   Ú_get_dtype_maxr²   D  sk   € à€IØ„z�TÐÐÝ”H�RœXÑ&Ô&ˆ	ˆ	Ø	Œ�sÒ	Ð	Ý”H�RœYÑ'Ô'ˆ	ˆ	Ø	Œ�sÒ	Ð	Ý”H�RœZÑ(Ô(ˆ	ØÐr/   c                ód   — t          | ¦  «        rdS t          | j        t          j        ¦  «         S )NF)r   r@   r5   rŠ   Úinteger©r7   s    r-   r”   r”   P  s.   € Ý˜5Ñ!Ô!ð ØˆuÝ˜%œ*¥b¤jÑ1Ô1Ð1Ð1r/   c                ó¾  — | t           u r�nÑ|j        dk    rÜ|€t          }t          | t          j        ¦  «        s£t          |¦  «        r
J d¦   «         ‚| |k    rt          j        } t          | ¦  «        r)t	          j        dd¦  «         	                    |¦  «        } n't	          j
        | ¦  «                             |¦  «        } |  	                    |d¬¦  «        } �n |  	                    |¦  «        } nê|j        dk    rßt          | t          j        ¦  «        s�| |k    st	          j        | ¦  «        r(t	          j        d¦  «         	                    |¦  «        } nƒt	          j        | ¦  «        t          j        k    rt#          d	¦  «        ‚t	          j
        | ¦  «         	                    |d¬¦  «        } n(|  	                    d
¦  «                             |¦  «        } | S )zwrap our results if neededÚMNzExpected non-null fill_valuer   ÚnsF©r¥   Úmzoverflow in timedelta operationúm8[ns])r   r�   r
   r‰   rŠ   r‹   r   rG   Ú
datetime64Úastyper®   r¤   ÚisnanÚtimedelta64Úfabsr   r–   rP   )rw   r7   r�   s      r-   Ú_wrap_resultsrÁ   V  s«  € à•€}€}Ùà	Œ�sÒ	Ð	ØÐåˆJÝ˜&¥"¤*Ñ-Ô-ð 	*Ý˜JÑ'Ô'ÐGÐGÐ)GÑGÔGÐ'Ø˜Ò#Ð#Ýœ�å�F‰|Œ|ð 6Ýœ u¨dÑ3Ô3×:Ò:¸5ÑAÔA��åœ &Ñ)Ô)×.Ò.¨uÑ5Ô5�à—]’] 5¨u�]Ñ5Ô5ˆF‰Fð —]’] 5Ñ)Ô)ˆFˆFØ	Œ�sÒ	Ð	Ý˜&¥"¤*Ñ-Ô-ð 	9Ø˜Ò#Ð#¥r¤x°Ñ'7Ô'7Ð#Ýœ¨Ñ.Ô.×5Ò5°eÑ<Ô<��å”˜‘”¥3¤9Ò,Ð,å Ð!BÑCÔCÐCõ œ &Ñ)Ô)×0Ò0°¸UÐ0ÑCÔC��ð —]’] 8Ñ,Ô,×1Ò1°%Ñ8Ô8ˆFà€Mr/   Úfuncr   c                óx   ‡ — t          j        ‰ ¦  «        ddddœdˆ fd„¦   «         }t          t          |¦  «        S )z˜
    If we have datetime64 or timedelta64 values, ensure we have a correct
    mask before calling the wrapped function, then cast back afterwards.
    NT©rf   rg   rl   rK   rh   rf   ri   rg   r&   rl   r™   c               óÔ   •— | }| j         j        dv }|r|€t          | ¦  «        } ‰| f|||dœ|¤Ž}|r4t          ||j         t          ¬¦  «        }|s|€J ‚t          ||||¦  «        }|S )Nrœ   rÄ   )r�   )r7   r�   r   rÁ   r
   Ú_mask_datetimelike_result)	rK   rf   rg   rl   rR   Úorig_valuesr¨   rw   rÂ   s	           €r-   Únew_funcz&_datetimelike_compat.<locals>.new_func…  s�   ø€ ð ˆà”|Ô(¨DÐ0ˆØð 	 ˜D˜LÝ˜‘<”<ˆDà��fÐL 4°¸TÐLÐLÀVÐLÐLˆàð 	TÝ" 6¨;Ô+<ÍÐNÑNÔNˆFØð TØÐ'Ð'Ð'Ý2°6¸4ÀÀ{ÑSÔS�àˆr/   ©rK   rh   rf   ri   rg   r&   rl   r™   rW   )rÂ   rÈ   s   ` r-   Ú_datetimelike_compatrÊ     s_   ø€ õ „_�TÑÔð  $ØØ-1ðð ð ð ð ð ð ñ Ôðõ0 •�8ÑÔÐr/   rf   ri   úScalar | np.ndarrayc                ó  — | j         j        dv r|                      d¦  «        } t          | j         ¦  «        }| j        dk    r|S |€|S | j        d|…         | j        |dz   d…         z   }t          j        ||| j         ¬¦  «        S )a�  
    Return the missing value for `values`.

    Parameters
    ----------
    values : ndarray
    axis : int or None
        axis for the reduction, required if values.ndim > 1.

    Returns
    -------
    result : scalar or ndarray
        For 1-D values, returns a scalar of the correct missing type.
        For 2-D values, returns a 1-D array where each element is missing.
    Úiufcbr°   é   Nrµ   )r7   r�   r½   r    ÚndimÚshaperŠ   Úfull)rK   rf   r�   Úresult_shapes       r-   rq   rq   ¡  s�   € ð" „|Ô˜GÐ#Ð#Ø—’˜yÑ)Ô)ˆÝ# F¤LÑ1Ô1€Jà„{�aÒÐØÐØ	ˆØÐà”| E T EÔ*¨V¬\¸$À¹(¸*¸*Ô-EÑEˆåŒw�| Z°v´|ÐDÑDÔDÐDr/   c                ót   ‡ — t          j        ‰ ¦  «        ddœdˆ fd„¦   «         }t          t          |¦  «        S )	z�
    NumPy operations on C-contiguous ndarrays with axis=1 can be
    very slow if axis 1 >> axis 0.
    Operate row-by-row and concatenate the results.
    N©rf   rK   rh   rf   ri   c               óê  •‡‡‡— |dk    rß| j         dk    rÔ| j        d         rÇ| j        d         dz  | j        d         k    r¨| j        t          k    r˜| j        t
          k    rˆt          | ¦  «        Š‰                     d¦  «        �A‰                     d¦  «        Šˆˆˆˆfd„t          t          ‰¦  «        ¦  «        D ¦   «         }nˆˆfd„‰D ¦   «         }t          j        |¦  «        S  ‰| fd	|i‰¤ŽS )
NrÎ   é   ÚC_CONTIGUOUSiè  r   rl   c                ó>   •— g | ]} ‰‰|         fd ‰|         i‰¤Ž‘ŒS ©rl   r~   )r6   ÚiÚarrsrÂ   rR   rl   s     €€€€r-   ú
<listcomp>z:maybe_operate_rowwise.<locals>.newfunc.<locals>.<listcomp>Ö  sE   ø€ ð ð ð Ø>?�D�D˜˜aœÐ9Ð9 t¨A¤wÐ9°&Ð9Ð9ðð ð r/   c                ó"   •— g | ]} ‰|fi ‰¤Ž‘ŒS r~   r~   )r6   ÚxrÂ   rR   s     €€r-   rÜ   z:maybe_operate_rowwise.<locals>.newfunc.<locals>.<listcomp>Ú  s+   ø€ Ð;Ð;Ð;°˜4˜4 Ð,Ð, VÐ,Ð,Ð;Ð;Ð;r/   rf   )rÏ   ÚflagsrÐ   r7   r„   r&   Úlistrp   rs   Úrangerm   rŠ   Úarray)rK   rf   rR   ÚresultsrÛ   rl   rÂ   s     ` @@€r-   Únewfuncz&maybe_operate_rowwise.<locals>.newfuncÇ  s%  øøøø€ ð �AŠIˆIØ”˜qÒ Ð Ø”˜^Ô,ð !ð ”˜a” 4Ñ'¨6¬<¸¬?Ò:Ð:Ø”¥Ò&Ð&Ø”¥Ò$Ð$å˜‘<”<ˆDØ�zŠz˜&Ñ!Ô!Ð-Ø—z’z &Ñ)Ô)�ðð ð ð ð ð ð ÝCHÍÈTÉÌÑCSÔCSðñ ô ��ð <Ð;Ð;Ð;Ð;°dÐ;Ñ;Ô;�Ý”8˜GÑ$Ô$Ð$àˆt�FÐ0Ð0 Ð0¨Ð0Ð0Ð0r/   )rK   rh   rf   ri   rW   )rÂ   rä   s   ` r-   Úmaybe_operate_rowwiserå   À  sW   ø€ õ „_�TÑÔØ>Bð 1ð 1ð 1ð 1ð 1ð 1ð 1ñ Ôð1õ. •�7ÑÔÐr/   rÄ   c               óf  — | j         j        dv r|€|                      |¦  «        S | j         j        dk    r(t          j        dt
          t          ¦   «         ¬¦  «         t          | |d|¬¦  «        \  } }| j         t          k    r|  	                    t          ¦  «        } |                      |¦  «        S )a  
    Check if any elements along an axis evaluate to True.

    Parameters
    ----------
    values : ndarray
    axis : int, optional
    skipna : bool, default True
    mask : ndarray[bool], optional
        nan-mask if known

    Returns
    -------
    result : bool

    Examples
    --------
    >>> from pandas.core import nanops
    >>> s = pd.Series([1, 2])
    >>> nanops.nanany(s.values)
    True

    >>> from pandas.core import nanops
    >>> s = pd.Series([np.nan])
    >>> nanops.nanany(s.values)
    False
    ÚiubNr·   zz'any' with datetime64 dtypes is deprecated and will raise in a future version. Use (obj != pd.Timestamp(0)).any() instead.©Ú
stacklevelF©r�   rl   )r7   r�   rL   Úwarningsr#   ÚFutureWarningr   r©   r„   r½   r&   ©rK   rf   rg   rl   Ú_s        r-   Únananyrï   â  s¸   € ðD „|Ô˜EÐ!Ð! d lð �zŠz˜$ÑÔÐà„|Ô˜CÒÐåŒðJåÝ'Ñ)Ô)ð		
ñ 	
ô 	
ð 	
õ ˜F F°uÀ4ÐHÑHÔH�I€FˆAð „|•vÒÐØ—’�tÑ$Ô$ˆð �:Š:�dÑÔÐr/   c               óf  — | j         j        dv r|€|                      |¦  «        S | j         j        dk    r(t          j        dt
          t          ¦   «         ¬¦  «         t          | |d|¬¦  «        \  } }| j         t          k    r|  	                    t          ¦  «        } |                      |¦  «        S )a  
    Check if all elements along an axis evaluate to True.

    Parameters
    ----------
    values : ndarray
    axis : int, optional
    skipna : bool, default True
    mask : ndarray[bool], optional
        nan-mask if known

    Returns
    -------
    result : bool

    Examples
    --------
    >>> from pandas.core import nanops
    >>> s = pd.Series([1, 2, np.nan])
    >>> nanops.nanall(s.values)
    True

    >>> from pandas.core import nanops
    >>> s = pd.Series([1, 0])
    >>> nanops.nanall(s.values)
    False
    rç   Nr·   zz'all' with datetime64 dtypes is deprecated and will raise in a future version. Use (obj != pd.Timestamp(0)).all() instead.rè   Trê   )r7   r�   Úallrë   r#   rì   r   r©   r„   r½   r&   rí   s        r-   Únanallrò     s¸   € ðD „|Ô˜EÐ!Ð! d lð �zŠz˜$ÑÔÐà„|Ô˜CÒÐåŒðJåÝ'Ñ)Ô)ð		
ñ 	
ô 	
ð 	
õ ˜F F°tÀ$ÐGÑGÔG�I€FˆAð „|•vÒÐØ—’�tÑ$Ô$ˆð �:Š:�dÑÔÐr/   ÚM8)rf   rg   rk   rl   rk   ÚintÚfloatc               ó,  — | j         }t          | |d|¬¦  «        \  } }t          |¦  «        }|j        dk    r|}n)|j        dk    rt	          j         t          j        ¦  «        }|                      ||¬¦  «        }t          |||| j        |¬¦  «        }|S )aÁ  
    Sum the elements along an axis ignoring NaNs

    Parameters
    ----------
    values : ndarray[dtype]
    axis : int, optional
    skipna : bool, default True
    min_count: int, default 0
    mask : ndarray[bool], optional
        nan-mask if known

    Returns
    -------
    result : dtype

    Examples
    --------
    >>> from pandas.core import nanops
    >>> s = pd.Series([1, 2, np.nan])
    >>> nanops.nansum(s.values)
    3.0
    r   rê   rC   rº   rµ   ©rk   )	r7   r©   r²   r�   rŠ   r°   ÚsumÚ_maybe_null_outrÐ   )rK   rf   rg   rk   rl   r7   Ú	dtype_sumÚthe_sums           r-   r�   r�   \  s™   € ðD ŒL€EÝ˜v v¸!À$ÐGÑGÔG�L€FˆDÝ˜uÑ%Ô%€IØ„z�SÒÐØˆ	ˆ	Ø	Œ�sÒ	Ð	Ý”H�RœZÑ(Ô(ˆ	à�jŠj˜ YˆjÑ/Ô/€GÝ˜g t¨T°6´<È9ÐUÑUÔU€Gà€Nr/   rw   ú+np.ndarray | np.datetime64 | np.timedelta64únpt.NDArray[np.bool_]rÇ   ú5np.ndarray | np.datetime64 | np.timedelta64 | NaTTypec                ó`  — t          | t          j        ¦  «        rN|                      d¦  «                             |j        ¦  «        } |                     |¬¦  «        }t          | |<   nE|                     ¦   «         r1t          j        t          ¦  «                             |j        ¦  «        S | S )Nr¢   rÔ   )	r‰   rŠ   r‹   r½   r¤   r7   rL   r
   r®   )rw   rf   rl   rÇ   Ú	axis_masks        r-   rÆ   rÆ   Œ  s�   € õ �&�"œ*Ñ%Ô%ð 	:à—’˜tÑ$Ô$×)Ò)¨+Ô*;Ñ<Ô<ˆØ—H’H $�HÑ'Ô'ˆ	õ !ˆˆyÑÐà�8Š8‰:Œ:ð 	:Ý”8�D‘>”>×&Ò& {Ô'8Ñ9Ô9Ð9Ø€Mr/   c               ó  — | j         }t          | |d|¬¦  «        \  } }t          |¦  «        }t          j         t          j        ¦  «        }|j        dv rt          j         t          j        ¦  «        }n7|j        dv rt          j         t          j        ¦  «        }n|j        dk    r|}|}t          | j        |||¬¦  «        }|                      ||¬¦  «        }t          |¦  «        }|�‡t          |dd	¦  «        rvt          t          j        |¦  «        }t          j        d
¬¦  «        5  ||z  }	ddd¦  «         n# 1 swxY w Y   |dk    }
|
                     ¦   «         rt          j        |	|
<   n|dk    r||z  nt          j        }	|	S )a  
    Compute the mean of the element along an axis ignoring NaNs

    Parameters
    ----------
    values : ndarray
    axis : int, optional
    skipna : bool, default True
    mask : ndarray[bool], optional
        nan-mask if known

    Returns
    -------
    float
        Unless input is a float array, in which case use the same
        precision as the input array.

    Examples
    --------
    >>> from pandas.core import nanops
    >>> s = pd.Series([1, 2, np.nan])
    >>> nanops.nanmean(s.values)
    1.5
    r   rê   rœ   ÚiurC   rµ   NrÏ   FÚignore)rñ   )r7   r©   r²   rŠ   r°   r�   Ú_get_countsrÐ   rø   Ú_ensure_numericrz   r   r‹   ÚerrstaterL   rG   )rK   rf   rg   rl   r7   rú   Údtype_countÚcountrû   Úthe_meanÚct_masks              r-   rƒ   rƒ   Ÿ  s´  € ðB ŒL€EÝ˜v v¸!À$ÐGÑGÔG�L€FˆDÝ˜uÑ%Ô%€IÝ”(�2œ:Ñ&Ô&€Kð „z�TÐÐÝ”H�RœZÑ(Ô(ˆ	ˆ	Ø	Œ�tÐ	Ð	Ý”H�RœZÑ(Ô(ˆ	ˆ	Ø	Œ�sÒ	Ð	Øˆ	Øˆå˜œ d¨D¸ÐDÑDÔD€EØ�jŠj˜ YˆjÑ/Ô/€GÝ˜gÑ&Ô&€GàÐ�G G¨V°UÑ;Ô;ÐÝ•R”Z Ñ'Ô'ˆÝŒ[˜XÐ&Ñ&Ô&ð 	'ð 	'à ‘ˆHð	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'ð ˜1’*ˆØ�;Š;‰=Œ=ð 	'Ý "¤ˆH�WÑøà&+¨a¢i i�7˜U‘?�?µR´Vˆà€Os   Ä*D<Ä<E ÅE c               ó@  ‡— | j         j        dk    o|du }dˆfd„	}| j         }t          | ‰|d¬¦  «        \  } }| j         j        dk    r�| j         t          k    r+t	          j        | ¦  «        }|dv rt          d| › d�¦  «        ‚	 |                      d¦  «        } n/# t          $ r"}t          t          |¦  «        ¦  «        |‚d}~ww xY w|s1|�/| j
        j        s|                      ¦   «         } t          j        | |<   | j        }	| j        d	k    rç|�å|	rÍ‰st          j        ||| ¦  «        }
nät%          j        ¦   «         5  t%          j        d
dt*          ¦  «         | j        d	         d	k    r|dk    s| j        d         d	k    r/|d	k    r)t          j        t          j        | ¦  «        d¬¦  «        }
nt          j        | |¬¦  «        }
ddd¦  «         n# 1 swxY w Y   n0t3          | j        |¦  «        }
n|	r || |¦  «        nt          j        }
t5          |
|¦  «        S )aØ  
    Parameters
    ----------
    values : ndarray
    axis : int, optional
    skipna : bool, default True
    mask : ndarray[bool], optional
        nan-mask if known

    Returns
    -------
    result : float
        Unless input is a float array, in which case use the same
        precision as the input array.

    Examples
    --------
    >>> from pandas.core import nanops
    >>> s = pd.Series([1, np.nan, 2, 2])
    >>> nanops.nanmedian(s.values)
    2.0
    rC   Nc                ó6  •— |€t          | ¦  «        }n| }‰s |                     ¦   «         st          j        S t	          j        ¦   «         5  t	          j        ddt          ¦  «         t          j        | |         ¦  «        }d d d ¦  «         n# 1 swxY w Y   |S )Nr  úAll-NaN slice encountered)	r!   rñ   rŠ   rG   rë   Úcatch_warningsÚfilterwarningsÚRuntimeWarningÚ	nanmedian)rÞ   Ú_maskÚresrg   s      €r-   Ú
get_medianznanmedian.<locals>.get_medianý  s×   ø€ Øˆ=Ý˜!‘H”HˆEˆEà�FˆEØð 	˜eŸiši™kœkð 	Ý”6ˆMÝÔ$Ñ&Ô&ð 	)ð 	)åÔ#ØÐ5µ~ñô ð õ ”,˜q œxÑ(Ô(ˆCð	)ð 	)ð 	)ñ 	)ô 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)øøøð 	)ð 	)ð 	)ð 	)ð ˆ
s   Á6BÂBÂB)rl   r�   ©ÚstringÚmixedzCannot convert ú to numericr†   rÎ   r  r  r   T)ÚkeepdimsrÔ   r*   )r7   r�   r©   r„   r   Úinfer_dtyperO   r½   rP   r   rß   Ú	writeabler¥   rŠ   rG   ro   rÏ   Úapply_along_axisrë   r  r  r  rÐ   r  ÚsqueezeÚ_get_empty_reduction_resultrÁ   )rK   rf   rg   rl   Úusing_nan_sentinelr  r7   ÚinferredÚerrÚnotemptyr  s     `        r-   r  r  à  s¤  ø€ ð6  œÔ*¨cÒ1ÐB°d¸d°lÐðð ð ð ð ð ð ŒL€EÝ˜v v°DÀTÐJÑJÔJ�L€FˆDØ„|Ô˜CÒÐØŒ<�6Ò!Ð!å” vÑ.Ô.ˆHØÐ.Ð.Ð.ÝÐ E°&Ð EÐ EÐ EÑFÔFÐFð	/Ø—]’] 4Ñ(Ô(ˆFˆFøÝð 	/ð 	/ð 	/å�C ™HœHÑ%Ô%¨3Ð.øøøøð	/øøøð ð  $Ð"2ØŒ|Ô%ð 	#Ø—[’[‘]”]ˆFÝ”vˆˆt‰àŒ{€Hð „{�Q‚€˜4Ð+àð 	BØð >ÝÔ)¨*°d¸FÑCÔC��õ Ô,Ñ.Ô.ð >ð >åÔ+Ø Ð"=½~ñô ð ð œ Qœ¨1Ò,Ð,°¸²°Øœ Qœ¨1Ò,Ð,°¸²°õ !œl­2¬:°fÑ+=Ô+=ÈÐMÑMÔM˜˜å œl¨6¸Ð=Ñ=Ô=˜ð>ð >ð >ñ >ô >ð >ð >ð >ð >ð >ð >øøøð >ð >ð >ð >øõ$ .¨f¬l¸DÑAÔAˆCˆCð +3Ð>ˆjˆj˜ Ñ&Ô&Ð&½¼ˆÝ˜˜eÑ$Ô$Ð$s+   ÂB Â
CÂ%CÃCÄ?B	GÇGÇGrÐ   r   r   c                ó  — t          j        | ¦  «        }t          j        t          | ¦  «        ¦  «        }t          j        |||k             t           j        ¬¦  «        }|                     t           j        ¦  «         |S )z¬
    The result from a reduction on an empty ndarray.

    Parameters
    ----------
    shape : Tuple[int, ...]
    axis : int

    Returns
    -------
    np.ndarray
    rµ   )rŠ   râ   Úarangerm   Úemptyr°   ÚfillrG   )rÐ   rf   ÚshpÚdimsÚrets        r-   r  r  C  s^   € õ  Œ(�5‰/Œ/€CÝŒ9•S˜‘Z”ZÑ Ô €DÝ
Œ(�3�t˜t’|Ô$­B¬JÐ
7Ñ
7Ô
7€CØ‡H‚H�RŒVÑÔÐØ€Jr/   Úvalues_shapeÚddofú-tuple[float | np.ndarray, float | np.ndarray]c                ó¤  — t          | |||¬¦  «        }||                     |¦  «        z
  }t          |¦  «        r||k    rt          j        }t          j        }ntt          t          j        |¦  «        }||k    }|                     ¦   «         r@t          j        ||t          j        ¦  «         t          j        ||t          j        ¦  «         ||fS )a:  
    Get the count of non-null values along an axis, accounting
    for degrees of freedom.

    Parameters
    ----------
    values_shape : Tuple[int, ...]
        shape tuple from values ndarray, used if mask is None
    mask : Optional[ndarray[bool]]
        locations in values that should be considered missing
    axis : Optional[int]
        axis to count along
    ddof : int
        degrees of freedom
    dtype : type, optional
        type to use for count

    Returns
    -------
    count : int, np.nan or np.ndarray
    d : int, np.nan or np.ndarray
    rµ   )	r  r5   r   rŠ   rG   r   r‹   rL   r¦   )r*  rl   rf   r+  r7   r  Úds          r-   Ú_get_counts_nanvarr/  Z  s»   € õ: ˜ d¨D¸Ð>Ñ>Ô>€EØ�—
’
˜4Ñ Ô Ñ €Aõ ��„ð ,Ø�DŠ=ˆ=õ ”FˆEÝ”ˆAøõ •R”Z Ñ'Ô'ˆØ˜Š}ˆØ�8Š8‰:Œ:ð 	,ÝŒJ�q˜$¥¤Ñ'Ô'Ð'ÝŒJ�u˜d¥B¤FÑ+Ô+Ð+Ø�!ˆ8€Or/   rÎ   ©r+  ©rf   rg   r+  rl   c          	     óæ   — | j         dk    r|                      d¦  «        } | j         }t          | ||¬¦  «        \  } }t          j        t          | ||||¬¦  «        ¦  «        }t          ||¦  «        S )a»  
    Compute the standard deviation along given axis while ignoring NaNs

    Parameters
    ----------
    values : ndarray
    axis : int, optional
    skipna : bool, default True
    ddof : int, default 1
        Delta Degrees of Freedom. The divisor used in calculations is N - ddof,
        where N represents the number of elements.
    mask : ndarray[bool], optional
        nan-mask if known

    Returns
    -------
    result : float
        Unless input is a float array, in which case use the same
        precision as the input array.

    Examples
    --------
    >>> from pandas.core import nanops
    >>> s = pd.Series([1, np.nan, 2, 3])
    >>> nanops.nanstd(s.values)
    1.0
    zM8[ns]r»   rÙ   r1  )r7   r¤   r©   rŠ   ÚsqrtÚnanvarrÁ   )rK   rf   rg   r+  rl   Ú
orig_dtyperw   s          r-   Únanstdr6  Œ  st   € ðH „|�xÒÐØ—’˜XÑ&Ô&ˆà”€JÝ˜v v°DÐ9Ñ9Ô9�L€FˆDåŒW•V˜F¨°fÀ4ÈdÐSÑSÔSÑTÔT€FÝ˜ Ñ,Ô,Ð,r/   Úm8c               óü  — | j         }t          | ||¦  «        }|j        dv r&|                      d¦  «        } |�t          j        | |<   | j         j        dk    r!t          | j        |||| j         ¦  «        \  }}nt          | j        |||¦  «        \  }}|r,|�*|                      ¦   «         } t	          j	        | |d¦  «         t          |                      |t          j        ¬¦  «        ¦  «        |z  }|�t	          j        ||¦  «        }t          || z
  dz  ¦  «        }	|�t	          j	        |	|d¦  «         |	                     |t          j        ¬¦  «        |z  }
|j        dk    r|
                     |d¬	¦  «        }
|
S )
a±  
    Compute the variance along given axis while ignoring NaNs

    Parameters
    ----------
    values : ndarray
    axis : int, optional
    skipna : bool, default True
    ddof : int, default 1
        Delta Degrees of Freedom. The divisor used in calculations is N - ddof,
        where N represents the number of elements.
    mask : ndarray[bool], optional
        nan-mask if known

    Returns
    -------
    result : float
        Unless input is a float array, in which case use the same
        precision as the input array.

    Examples
    --------
    >>> from pandas.core import nanops
    >>> s = pd.Series([1, np.nan, 2, 3])
    >>> nanops.nanvar(s.values)
    1.0
    r  r†   NrC   r   )rf   r7   rÖ   Fr¹   )r7   rž   r�   r½   rŠ   rG   r/  rÐ   r¥   r¦   r  rø   r°   Úexpand_dims)rK   rf   rg   r+  rl   r7   r  r.  ÚavgÚsqrrw   s              r-   r4  r4  º  st  € ðJ ŒL€EÝ˜6 6¨4Ñ0Ô0€DØ„z�TÐÐØ—’˜tÑ$Ô$ˆØÐÝœ6ˆF�4‰Là„|Ô˜CÒÐÝ% f¤l°D¸$ÀÀfÄlÑSÔS‰ˆˆqˆqå% f¤l°D¸$ÀÑEÔE‰ˆˆqàð $�$Ð"Ø—’‘”ˆÝ
Œ
�6˜4 Ñ#Ô#Ð#õ ˜&Ÿ*š*¨$µb´j˜*ÑAÔAÑ
BÔ
BÀUÑ
J€CØÐÝŒn˜S $Ñ'Ô'ˆÝ
˜3 ™<¨AÑ-Ñ
.Ô
.€CØÐÝ
Œ
�3˜˜aÑ Ô Ð Ø�WŠW˜$¥b¤jˆWÑ1Ô1°AÑ5€Fð
 „z�SÒÐØ—’˜u¨5�Ñ1Ô1ˆØ€Mr/   c               ó˜  — t          | ||||¬¦  «         t          | ||¦  «        }| j        j        dk    r|                      d¦  «        } |s"|� |                     ¦   «         rt          j        S t          | j	        |||| j        ¦  «        \  }}t          | ||||¬¦  «        }t          j
        |¦  «        t          j
        |¦  «        z  S )aÕ  
    Compute the standard error in the mean along given axis while ignoring NaNs

    Parameters
    ----------
    values : ndarray
    axis : int, optional
    skipna : bool, default True
    ddof : int, default 1
        Delta Degrees of Freedom. The divisor used in calculations is N - ddof,
        where N represents the number of elements.
    mask : ndarray[bool], optional
        nan-mask if known

    Returns
    -------
    result : float64
        Unless input is a float array, in which case use the same
        precision as the input array.

    Examples
    --------
    >>> from pandas.core import nanops
    >>> s = pd.Series([1, np.nan, 2, 3])
    >>> nanops.nansem(s.values)
     0.5773502691896258
    r1  rC   r†   )r4  rž   r7   r�   r½   rL   rŠ   rG   r/  rÐ   r3  )rK   rf   rg   r+  rl   r  rî   Úvars           r-   Únansemr>    sÁ   € õL ˆ6˜ V°$¸TÐBÑBÔBÐBå˜6 6¨4Ñ0Ô0€DØ„|Ô˜CÒÐØ—’˜tÑ$Ô$ˆàð �dÐ&¨4¯8ª8©:¬:Ð&ÝŒvˆå! &¤,°°d¸DÀ&Ä,ÑOÔO�H€Eˆ1Ý
�˜d¨6¸À4Ð
HÑ
HÔ
H€CåŒ7�3‰<Œ<�"œ' %™.œ.Ñ(Ð(r/   c                ón   ‡ ‡— t          d‰ › �¬¦  «        t          d dd dœdˆˆ fd„¦   «         ¦   «         }|S )NrG   )rb   TrÄ   rK   rh   rf   ri   rg   r&   rl   r™   c               óÊ   •— | j         dk    rt          | |¦  «        S t          | |‰|¬¦  «        \  } } t          | ‰¦  «        |¦  «        }t	          |||| j        ¦  «        }|S )Nr   ©r—   rl   )ro   rq   r©   rz   rù   rÐ   )rK   rf   rg   rl   rw   r—   Úmeths        €€r-   Ú	reductionz_nanminmax.<locals>.reduction;  sx   ø€ ð Œ;˜!ÒÐÝ$ V¨TÑ2Ô2Ð2å"Ø�F¨>Àð
ñ 
ô 
‰ˆ�ð '•˜ Ñ&Ô& tÑ,Ô,ˆÝ  ¨¨t°V´\ÑBÔBˆØˆr/   rÉ   )r`   rÊ   )rB  r—   rC  s   `` r-   Ú
_nanminmaxrD  :  sk   øø€ Ý˜L $˜L˜LÐ)Ñ)Ô)Ýð  $ØØ-1ðð ð ð ð ð ð ð ñ Ôñ *Ô)ðð" Ðr/   Úminr“   )r—   Úmaxú-infúint | np.ndarrayc               ó€   — t          | dd|¬¦  «        \  } }|                      |¦  «        }t          ||||¦  «        }|S )aä  
    Parameters
    ----------
    values : ndarray
    axis : int, optional
    skipna : bool, default True
    mask : ndarray[bool], optional
        nan-mask if known

    Returns
    -------
    result : int or ndarray[int]
        The index/indices  of max value in specified axis or -1 in the NA case

    Examples
    --------
    >>> from pandas.core import nanops
    >>> arr = np.array([1, 2, 3, np.nan, 4])
    >>> nanops.nanargmax(arr)
    4

    >>> arr = np.array(range(12), dtype=np.float64).reshape(4, 3)
    >>> arr[2:, 2] = np.nan
    >>> arr
    array([[ 0.,  1.,  2.],
           [ 3.,  4.,  5.],
           [ 6.,  7., nan],
           [ 9., 10., nan]])
    >>> nanops.nanargmax(arr, axis=1)
    array([2, 2, 1, 1])
    TrG  rA  )r©   ÚargmaxÚ_maybe_arg_null_out©rK   rf   rg   rl   rw   s        r-   Ú	nanargmaxrM  U  óJ   € õL ˜v t¸FÈÐNÑNÔN�L€FˆDØ�]Š]˜4Ñ Ô €Fõ ! ¨¨t°VÑ<Ô<€FØ€Mr/   c               ó€   — t          | dd|¬¦  «        \  } }|                      |¦  «        }t          ||||¦  «        }|S )aã  
    Parameters
    ----------
    values : ndarray
    axis : int, optional
    skipna : bool, default True
    mask : ndarray[bool], optional
        nan-mask if known

    Returns
    -------
    result : int or ndarray[int]
        The index/indices of min value in specified axis or -1 in the NA case

    Examples
    --------
    >>> from pandas.core import nanops
    >>> arr = np.array([1, 2, 3, np.nan, 4])
    >>> nanops.nanargmin(arr)
    0

    >>> arr = np.array(range(12), dtype=np.float64).reshape(4, 3)
    >>> arr[2:, 0] = np.nan
    >>> arr
    array([[ 0.,  1.,  2.],
           [ 3.,  4.,  5.],
           [nan,  7.,  8.],
           [nan, 10., 11.]])
    >>> nanops.nanargmin(arr, axis=1)
    array([0, 0, 1, 1])
    Tr“   rA  )r©   ÚargminrK  rL  s        r-   Ú	nanargminrQ  ƒ  rN  r/   c               ó4  — t          | ||¦  «        }| j        j        dk    r,|                      d¦  «        } t	          | j        ||¦  «        }nt	          | j        ||| j        ¬¦  «        }|r-|�+|                      ¦   «         } t          j        | |d¦  «         n$|s"|� | 	                    ¦   «         rt          j
        S t          j        dd¬¦  «        5  |                      |t          j        ¬¦  «        |z  }ddd¦  «         n# 1 swxY w Y   |�t          j        ||¦  «        }| |z
  }|r|�t          j        ||d¦  «         |dz  }||z  }|                     |t          j        ¬¦  «        }	|                     |t          j        ¬¦  «        }
t          |	¦  «        }	t          |
¦  «        }
t          j        dd¬¦  «        5  ||d	z
  d
z  z  |dz
  z  |
|	dz  z  z  }ddd¦  «         n# 1 swxY w Y   | j        }|j        dk    r|                     |d¬¦  «        }t!          |t          j        ¦  «        r.t          j        |	dk    d|¦  «        }t          j
        ||dk     <   n/|	dk    r|                     d¦  «        n|}|dk     rt          j
        S |S )aÐ  
    Compute the sample skewness.

    The statistic computed here is the adjusted Fisher-Pearson standardized
    moment coefficient G1. The algorithm computes this coefficient directly
    from the second and third central moment.

    Parameters
    ----------
    values : ndarray
    axis : int, optional
    skipna : bool, default True
    mask : ndarray[bool], optional
        nan-mask if known

    Returns
    -------
    result : float64
        Unless input is a float array, in which case use the same
        precision as the input array.

    Examples
    --------
    >>> from pandas.core import nanops
    >>> s = pd.Series([1, np.nan, 1, 2])
    >>> nanops.nanskew(s.values)
    1.7320508075688787
    rC   r†   rµ   Nr   r  ©ÚinvalidÚdividerÖ   rÎ   g      à?g      ø?Fr¹   é   )rž   r7   r�   r½   r  rÐ   r¥   rŠ   r¦   rL   rG   r  rø   r°   r9  Ú_zero_out_fperrr‰   r‹   r§   r5   )rK   rf   rg   rl   r  ÚmeanÚadjustedÚ	adjusted2Ú	adjusted3Úm2Úm3rw   r7   s                r-   Únanskewr^  ±  s  € õJ ˜6 6¨4Ñ0Ô0€DØ„|Ô˜CÒÐØ—’˜tÑ$Ô$ˆÝ˜FœL¨$°Ñ5Ô5ˆˆå˜FœL¨$°¸F¼LÐIÑIÔIˆàð �$Ð"Ø—’‘”ˆÝ
Œ
�6˜4 Ñ#Ô#Ð#Ð#Øð ˜Ð(¨T¯XªX©Z¬ZÐ(ÝŒvˆå	Œ˜X¨hÐ	7Ñ	7Ô	7ð :ð :Ø�zŠz˜$¥b¤jˆzÑ1Ô1°EÑ9ˆð:ð :ð :ñ :ô :ð :ð :ð :ð :ð :ð :øøøð :ð :ð :ð :àÐÝŒ~˜d DÑ)Ô)ˆà˜‰}€HØð &�$Ð"Ý
Œ
�8˜T 1Ñ%Ô%Ð%Ø˜!‘€IØ˜HÑ$€IØ	�Š�t¥2¤:ˆÑ	.Ô	.€BØ	�Š�t¥2¤:ˆÑ	.Ô	.€Bõ 
˜Ñ	Ô	€BÝ	˜Ñ	Ô	€Bå	Œ˜X¨hÐ	7Ñ	7Ô	7ð Mð MØ˜5 1™9¨Ñ,Ñ,°¸±	Ñ:¸rÀBÈÁG¹|ÑLˆðMð Mð Mñ Mô Mð Mð Mð Mð Mð Mð Møøøð Mð Mð Mð Mð ŒL€EØ„z�SÒÐØ—’˜u¨5�Ñ1Ô1ˆå�&�"œ*Ñ%Ô%ð Ý”˜" š' 1 fÑ-Ô-ˆÝœFˆˆu�qŠyÑÐà"$¨¢' '�—’˜A‘”�¨vˆØ�1Š9ˆ9Ý”6ˆMà€Ms$   Ã%DÄD	ÄD	ÇG-Ç-G1Ç4G1c               ó  — t          | ||¦  «        }| j        j        dk    r,|                      d¦  «        } t	          | j        ||¦  «        }nt	          | j        ||| j        ¬¦  «        }|r-|�+|                      ¦   «         } t          j        | |d¦  «         n$|s"|� | 	                    ¦   «         rt          j
        S t          j        dd¬¦  «        5  |                      |t          j        ¬¦  «        |z  }ddd¦  «         n# 1 swxY w Y   |�t          j        ||¦  «        }| |z
  }|r|�t          j        ||d¦  «         |dz  }|dz  }|                     |t          j        ¬¦  «        }	|                     |t          j        ¬¦  «        }
t          j        dd¬¦  «        5  d	|d
z
  dz  z  |dz
  |d	z
  z  z  }||d
z   z  |d
z
  z  |
z  }|dz
  |d	z
  z  |	dz  z  }ddd¦  «         n# 1 swxY w Y   t          |¦  «        }t          |¦  «        }t!          |t          j        ¦  «        s2|dk     rt          j
        S |dk    r| j                             d¦  «        S t          j        dd¬¦  «        5  ||z  |z
  }ddd¦  «         n# 1 swxY w Y   | j        }|j        dk    r|                     |d¬¦  «        }t!          |t          j        ¦  «        r-t          j        |dk    d|¦  «        }t          j
        ||dk     <   |S )a¼  
    Compute the sample excess kurtosis

    The statistic computed here is the adjusted Fisher-Pearson standardized
    moment coefficient G2, computed directly from the second and fourth
    central moment.

    Parameters
    ----------
    values : ndarray
    axis : int, optional
    skipna : bool, default True
    mask : ndarray[bool], optional
        nan-mask if known

    Returns
    -------
    result : float64
        Unless input is a float array, in which case use the same
        precision as the input array.

    Examples
    --------
    >>> from pandas.core import nanops
    >>> s = pd.Series([1, np.nan, 1, 3, 2])
    >>> nanops.nankurt(s.values)
    -1.2892561983471076
    rC   r†   rµ   Nr   r  rS  rÖ   rV  rÎ   é   Fr¹   )rž   r7   r�   r½   r  rÐ   r¥   rŠ   r¦   rL   rG   r  rø   r°   r9  rW  r‰   r‹   r5   r§   )rK   rf   rg   rl   r  rX  rY  rZ  Ú	adjusted4r\  Úm4ÚadjÚ	numeratorÚdenominatorrw   r7   s                   r-   Únankurtrf  	  sÍ  € õJ ˜6 6¨4Ñ0Ô0€DØ„|Ô˜CÒÐØ—’˜tÑ$Ô$ˆÝ˜FœL¨$°Ñ5Ô5ˆˆå˜FœL¨$°¸F¼LÐIÑIÔIˆàð �$Ð"Ø—’‘”ˆÝ
Œ
�6˜4 Ñ#Ô#Ð#Ð#Øð ˜Ð(¨T¯XªX©Z¬ZÐ(ÝŒvˆå	Œ˜X¨hÐ	7Ñ	7Ô	7ð :ð :Ø�zŠz˜$¥b¤jˆzÑ1Ô1°EÑ9ˆð:ð :ð :ñ :ô :ð :ð :ð :ð :ð :ð :øøøð :ð :ð :ð :àÐÝŒ~˜d DÑ)Ô)ˆà˜‰}€HØð &�$Ð"Ý
Œ
�8˜T 1Ñ%Ô%Ð%Ø˜!‘€IØ˜1‘€IØ	�Š�t¥2¤:ˆÑ	.Ô	.€BØ	�Š�t¥2¤:ˆÑ	.Ô	.€Bå	Œ˜X¨hÐ	7Ñ	7Ô	7ð 8ð 8Ø�5˜1‘9 Ñ"Ñ" u¨q¡y°U¸Q±YÑ&?Ñ@ˆØ˜U Q™YÑ'¨5°1©9Ñ5¸Ñ:ˆ	Ø˜q‘y U¨Q¡YÑ/°"°a±%Ñ7ˆð8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8õ   	Ñ*Ô*€IÝ! +Ñ.Ô.€Kå�k¥2¤:Ñ.Ô.ð (ð �1Š9ˆ9Ý”6ˆMØ˜!ÒÐØ”<×$Ò$ QÑ'Ô'Ð'å	Œ˜X¨hÐ	7Ñ	7Ô	7ð /ð /Ø˜[Ñ(¨3Ñ.ˆð/ð /ð /ñ /ô /ð /ð /ð /ð /ð /ð /øøøð /ð /ð /ð /ð ŒL€EØ„z�SÒÐØ—’˜u¨5�Ñ1Ô1ˆå�&�"œ*Ñ%Ô%ð #Ý”˜+¨Ò*¨A¨vÑ6Ô6ˆÝœFˆˆu�qŠyÑà€Ms6   Ã%DÄD	ÄD	Æ(:G.Ç.G2Ç5G2É9	JÊJÊJc               óº   — t          | ||¦  «        }|r|�|                      ¦   «         } d| |<   |                      |¦  «        }t          |||| j        |¬¦  «        S )aØ  
    Parameters
    ----------
    values : ndarray[dtype]
    axis : int, optional
    skipna : bool, default True
    min_count: int, default 0
    mask : ndarray[bool], optional
        nan-mask if known

    Returns
    -------
    Dtype
        The product of all elements on a given axis. ( NaNs are treated as 1)

    Examples
    --------
    >>> from pandas.core import nanops
    >>> s = pd.Series([1, 2, 3, np.nan])
    >>> nanops.nanprod(s.values)
    6.0
    NrÎ   r÷   )rž   r¥   Úprodrù   rÐ   )rK   rf   rg   rk   rl   rw   s         r-   r‚   r‚   j  sp   € õ@ ˜6 6¨4Ñ0Ô0€Dàð �$Ð"Ø—’‘”ˆØˆˆt‰Ø�[Š[˜ÑÔ€Fõ Ø��d˜FœL°Iðñ ô ð r/   únp.ndarray | intc                ó   — |€| S |�t          | dd¦  «        s0|r|                     ¦   «         rdS n]|                     ¦   «         rdS nF|r|                     |¦  «        }n|                     |¦  «        }|                     ¦   «         rd| |<   | S )NrÏ   Féÿÿÿÿ)rz   rñ   rL   )rw   rf   rl   rg   Úna_masks        r-   rK  rK  —  s©   € ð €|Øˆà€|�7 6¨6°5Ñ9Ô9€|Øð 	Ø�xŠx‰zŒzð Ø�rðð �xŠx‰zŒzð Ø�rðð ð 	%Ø—h’h˜t‘n”nˆGˆGà—h’h˜t‘n”nˆGØ�;Š;‰=Œ=ð 	!Ø ˆF�7‰OØ€Mr/   únp.dtype[np.floating]ú&np.floating | npt.NDArray[np.floating]c                óh  — |€H|�|j         |                     ¦   «         z
  }nt          j        | ¦  «        }|                     |¦  «        S |�$|j        |         |                     |¦  «        z
  }n| |         }t          |¦  «        r|                     |¦  «        S |                     |d¬¦  «        S )a¹  
    Get the count of non-null values along an axis

    Parameters
    ----------
    values_shape : tuple of int
        shape tuple from values ndarray, used if mask is None
    mask : Optional[ndarray[bool]]
        locations in values that should be considered missing
    axis : Optional[int]
        axis to count along
    dtype : type, optional
        type to use for count

    Returns
    -------
    count : scalar or array
    NFr¹   )ro   rø   rŠ   rh  r5   rÐ   r   r½   )r*  rl   rf   r7   Únr  s         r-   r  r  ²  s©   € ð0 €|ØÐØ”	˜DŸHšH™JœJÑ&ˆAˆAå”˜Ñ%Ô%ˆAØ�zŠz˜!‰}Œ}ÐàÐØ”
˜4Ô  4§8¢8¨D¡>¤>Ñ1ˆˆà˜TÔ"ˆå�%ÑÔð !Ø�zŠz˜%Ñ Ô Ð Ø�<Š<˜ Eˆ<Ñ*Ô*Ð*r/   únp.ndarray | float | NaTTypeútuple[int, ...]c                óð  — |€|dk    r| S |��t          | t          j        ¦  «        rò|�+|j        |         |                     |¦  «        z
  |z
  dk     }n<||         |z
  dk     }|d|…         ||dz   d…         z   }t          j        ||¦  «        }t          j        |¦  «        rtt          | ¦  «        r`t          j        | ¦  «        r|  	                    d¦  «        } n&t          | ¦  «        s|  	                    dd¬¦  «        } t          j        | |<   nbd| |<   n\| t          urSt          |||¦  «        rBt          | dd¦  «        }t          |¦  «        r|                     d	¦  «        } nt          j        } | S )
zu
    Returns
    -------
    Dtype
        The product of all elements on a given axis. ( NaNs are treated as 1)
    Nr   rÎ   Úc16r†   Fr¹   r7   rG   )r‰   rŠ   r‹   rÐ   rø   Úbroadcast_torL   r   Úiscomplexobjr½   r   rG   r   Úcheck_below_min_countrz   r5   )	rw   rf   rl   rÐ   rk   Ú	null_maskÚbelow_countÚ	new_shapeÚresult_dtypes	            r-   rù   rù   Û  sˆ  € ð €|˜	 Qš˜àˆàÑ�J v­r¬zÑ:Ô:ÐØÐØœ DÔ)¨D¯HªH°T©N¬NÑ:¸YÑFÈ!ÒKˆIˆIð   œ+¨	Ñ1°AÒ5ˆKØ˜e˜t˜eœ u¨T°A©X¨Z¨ZÔ'8Ñ8ˆIÝœ¨°YÑ?Ô?ˆIåŒ6�)ÑÔð 		)Ý Ñ'Ô'ð )Ý”? 6Ñ*Ô*ð =Ø#Ÿ]š]¨5Ñ1Ô1�F�FÝ'¨Ñ/Ô/ð =Ø#Ÿ]š]¨4°e˜]Ñ<Ô<�FÝ$&¤F��yÑ!Ð!ð %)��yÑ!øØ	•sÐ	Ð	Ý  ¨¨iÑ8Ô8ð 	 Ý" 6¨7°DÑ9Ô9ˆLÝ˜lÑ+Ô+ð  à%×*Ò*¨5Ñ1Ô1��åœ�à€Mr/   c                óˆ   — |dk    r;|€t          j        | ¦  «        }n|j        |                     ¦   «         z
  }||k     rdS dS )aÅ  
    Check for the `min_count` keyword. Returns True if below `min_count` (when
    missing value should be returned from the reduction).

    Parameters
    ----------
    shape : tuple
        The shape of the values (`values.shape`).
    mask : ndarray[bool] or None
        Boolean numpy array (typically of same shape as `shape`) or None.
    min_count : int
        Keyword passed through from sum/prod call.

    Returns
    -------
    bool
    r   NTF)rŠ   rh  ro   rø   )rÐ   rl   rk   Ú	non_nullss       r-   rw  rw    sJ   € ð( �1‚}€}Øˆ<åœ ™œˆIˆIàœ	 D§H¢H¡J¤JÑ.ˆIØ�yÒ Ð Ø�4Øˆ5r/   c                óö   — t          | t          j        ¦  «        r,t          j        t          j        | ¦  «        dk     d| ¦  «        S t          j        | ¦  «        dk     r| j                             d¦  «        n| S )Ng›+¡†›„=r   )r‰   rŠ   r‹   r§   Úabsr7   r5   )Úargs    r-   rW  rW  *  sc   € å�#•r”zÑ"Ô"ð AÝŒx�œ˜s™œ eÒ+¨Q°Ñ4Ô4Ð4å$&¤F¨3¡K¤K°%Ò$7Ð$7ˆsŒy�~Š~˜aÑ Ô Ð ¸SÐ@r/   Úpearson)ÚmethodÚmin_periodsÚaÚbr‚  r   rƒ  ú
int | Nonec               óž  — t          | ¦  «        t          |¦  «        k    rt          d¦  «        ‚|€d}t          | ¦  «        t          |¦  «        z  }|                     ¦   «         s| |         } ||         }t          | ¦  «        |k     rt          j        S t          | ¦  «        } t          |¦  «        }t          |¦  «        } || |¦  «        S )z
    a, b: ndarrays
    z'Operands to nancorr must have same sizeNrÎ   )rm   ÚAssertionErrorr!   rñ   rŠ   rG   r  Úget_corr_func)r„  r…  r‚  rƒ  ÚvalidrC   s         r-   Únancorrr‹  2  s»   € õ ˆ1�v„v•�Q‘”ÒÐÝÐFÑGÔGÐGàÐØˆå�!‰HŒH•u˜Q‘x”xÑ€EØ�9Š9‰;Œ;ð ØˆeŒHˆØˆeŒHˆå
ˆ1�v„v�ÒÐÝŒvˆå˜ÑÔ€AÝ˜ÑÔ€Aå�fÑÔ€AØˆ1ˆQ�‰7Œ7€Nr/   ú)Callable[[np.ndarray, np.ndarray], float]c                ó°   ‡‡— | dk    rddl mŠ ˆfd„}|S | dk    rddl mŠ ˆfd„}|S | dk    rd	„ }|S t          | ¦  «        r| S t	          d
| › d�¦  «        ‚)NÚkendallr   )Ú
kendalltauc                ó(   •—  ‰| |¦  «        d         S ©Nr   r~   )r„  r…  r�  s     €r-   rÂ   zget_corr_func.<locals>.funcX  s   ø€ Ø�:˜a Ñ#Ô# AÔ&Ð&r/   Úspearman)Ú	spearmanrc                ó(   •—  ‰| |¦  «        d         S r‘  r~   )r„  r…  r“  s     €r-   rÂ   zget_corr_func.<locals>.func_  s   ø€ Ø�9˜Q ‘?”? 1Ô%Ð%r/   r�  c                ó8   — t          j        | |¦  «        d         S )N©r   rÎ   )rŠ   Úcorrcoef)r„  r…  s     r-   rÂ   zget_corr_func.<locals>.funce  s   € Ý”;˜q !Ñ$Ô$ TÔ*Ð*r/   zUnknown method 'z@', expected one of 'kendall', 'spearman', 'pearson', or callable)Úscipy.statsr�  r“  ÚcallablerP   )r‚  rÂ   r�  r“  s     @@r-   r‰  r‰  R  sÞ   øø€ ð �ÒÐØ*Ð*Ð*Ð*Ð*Ð*ð	'ð 	'ð 	'ð 	'ð 	'ð ˆØ	�:Ò	Ð	Ø)Ð)Ð)Ð)Ð)Ð)ð	&ð 	&ð 	&ð 	&ð 	&ð ˆØ	�9Ò	Ð	ð	+ð 	+ð 	+ð ˆÝ	�&Ñ	Ô	ð Øˆå
ð	8˜6ð 	8ð 	8ð 	8ñô ð r/   )rƒ  r+  c               ó¢  — t          | ¦  «        t          |¦  «        k    rt          d¦  «        ‚|€d}t          | ¦  «        t          |¦  «        z  }|                     ¦   «         s| |         } ||         }t          | ¦  «        |k     rt          j        S t          | ¦  «        } t          |¦  «        }t	          j        | ||¬¦  «        d         S )Nz&Operands to nancov must have same sizerÎ   r0  r–  )rm   rˆ  r!   rñ   rŠ   rG   r  Úcov)r„  r…  rƒ  r+  rŠ  s        r-   Únancovrœ  r  s»   € õ ˆ1�v„v•�Q‘”ÒÐÝÐEÑFÔFÐFàÐØˆå�!‰HŒH•u˜Q‘x”xÑ€EØ�9Š9‰;Œ;ð ØˆeŒHˆØˆeŒHˆå
ˆ1�v„v�ÒÐÝŒvˆå˜ÑÔ€AÝ˜ÑÔ€AåŒ6�!�Q˜TÐ"Ñ"Ô" 4Ô(Ð(r/   c                óÔ  — t          | t          j        ¦  «        �r| j        j        dv r!|                      t          j        ¦  «        } �n�| j        t          k    rØt          j	        | ¦  «        }|dv rt          d| › d�¦  «        ‚	 |                      t          j        ¦  «        } t          j        t          j        | ¦  «        ¦  «        s| j        } �n# t          t          f$ rJ 	 |                      t          j        ¦  «        } n&# t          $ r}t          d| › d�¦  «        |‚d }~ww xY wY n¹w xY wn´t!          | ¦  «        s¥t#          | ¦  «        s–t%          | ¦  «        s‡t          | t&          ¦  «        rt          d| › d�¦  «        ‚	 t)          | ¦  «        } nN# t          t          f$ r: 	 t+          | ¦  «        } n&# t          $ r}t          d| › d�¦  «        |‚d }~ww xY wY nw xY w| S )Nr›   r  zCould not convert r  zCould not convert string 'z' to numeric)r‰   rŠ   r‹   r7   r�   r½   r°   r„   r   r  rO   Ú
complex128rL   ÚimagÚrealrP   r   r   r   r   rõ   Úcomplex)rÞ   r   r!  s      r-   r  r  Ž  s6  € Ý�!•R”ZÑ Ô ñ NØŒ7Œ<˜5Ð Ð Ø—’�œÑ$Ô$ˆA‰AØŒW�ÒÐÝ” qÑ)Ô)ˆHØÐ.Ð.Ð.åÐ C°QÐ CÐ CÐ CÑDÔDÐDð
Ø—H’H�Rœ]Ñ+Ô+�õ ”v�bœg a™jœjÑ)Ô)ð Øœ�Aùøõ �zÐ*ð Rð Rð RðRØŸš¥¤Ñ,Ô,�A�AøÝ!ð Rð Rð Rå#Ð$G¸Ð$GÐ$GÐ$GÑHÔHÈcÐQøøøøðRøøøð �AðRøøøð õ  �q‰kŒkð N�Z¨™]œ]ð N­j¸©m¬mð NÝ�a�ÑÔð 	JåÐH¸ÐHÐHÐHÑIÔIÐIð	NÝ�a‘”ˆAˆAøÝ�:Ð&ð 	Nð 	Nð 	NðNÝ˜A‘J”J��øÝð Nð Nð NåÐ C°QÐ CÐ CÐ CÑDÔDÈ#ÐMøøøøðNøøøð �ð	Nøøøð €Hsl   ÂC ÃD0Ã'DÄD0Ä
D*ÄD%Ä%D*Ä*D0Ä/D0Æ
F ÆG%Æ,F<Æ;G%Æ<
GÇGÇGÇG%Ç$G%r   c          	     ó.  — t           j        dt           j        ft           j        j        t           j         t           j        ft           j        dt           j        ft           j        j        t           j        t           j        fi|         \  }}| j        j	        dvsJ ‚|rkt          | j        j        t           j        t           j        f¦  «        s;|                      ¦   «         }t          |¦  «        }|||<    ||d¬¦  «        }|||<   n || d¬¦  «        }|S )a  
    Cumulative function with skipna support.

    Parameters
    ----------
    values : np.ndarray or ExtensionArray
    accum_func : {np.cumprod, np.maximum.accumulate, np.cumsum, np.minimum.accumulate}
    skipna : bool

    Returns
    -------
    np.ndarray or ExtensionArray
    g      ð?g        rœ   r   rÔ   )rŠ   ÚcumprodrG   ÚmaximumÚ
accumulater•   ÚcumsumÚminimumr7   r�   r@   r5   r´   Úbool_r¥   r   )rK   Ú
accum_funcrg   Úmask_aÚmask_bÚvalsrl   rw   s           r-   Úna_accum_funcr­  ²  sõ   € õ 	Œ
�S�"œ&�MÝ
Œ
Ô¥¤ ­¬Ð0Ý
Œ	�C�œ�=Ý
Œ
Ô¥¤­¬Ð/ð	ð
 ô�N€FˆFð Œ<Ô DÐ(Ð(Ð(Ð(ð ð ,•j ¤Ô!2µR´ZÅÄÐ4JÑKÔKð ,Ø�{Š{‰}Œ}ˆÝ�D‰zŒzˆØˆˆT‰
Ø�˜D qÐ)Ñ)Ô)ˆØˆˆt‰ˆà�˜F¨Ð+Ñ+Ô+ˆà€Mr/   )T)r%   r&   r'   r(   )r7   r   rb   r   r'   r&   r[   )NN)r7   r   r�   r‘   )rK   rh   rg   r&   rl   r™   r'   r™   )NNN)rK   rh   rg   r&   r�   r   r—   rŸ   rl   r™   r'   r    )r7   rª   r'   rª   )r7   r   r'   r&   r*   )r7   rª   )rÂ   r   r'   r   )rK   rh   rf   ri   r'   rË   )
rK   rh   rf   ri   rg   r&   rl   r™   r'   r&   )rK   rh   rf   ri   rg   r&   rk   rô   rl   r™   r'   rõ   )
rw   rü   rf   ri   rl   rý   rÇ   rh   r'   rþ   )
rK   rh   rf   ri   rg   r&   rl   r™   r'   rõ   )rf   ri   rg   r&   )rÐ   r   rf   r   r'   rh   )r*  r   rl   r™   rf   ri   r+  rô   r7   rª   r'   r,  )rf   ri   rg   r&   r+  rô   )rK   rh   rf   ri   rg   r&   r+  rô   )rK   rh   rf   ri   rg   r&   r+  rô   rl   r™   r'   rõ   )
rK   rh   rf   ri   rg   r&   rl   r™   r'   rH  )
rw   rh   rf   ri   rl   r™   rg   r&   r'   ri  )
r*  r   rl   r™   rf   ri   r7   rm  r'   rn  )rÎ   )rw   rq  rf   ri   rl   r™   rÐ   rr  rk   rô   r'   rq  )rÐ   rr  rl   r™   rk   rô   r'   r&   )
r„  rh   r…  rh   r‚  r   rƒ  r†  r'   rõ   )r‚  r   r'   rŒ  )
r„  rh   r…  rh   rƒ  r†  r+  r†  r'   rõ   )rK   r   rg   r&   r'   r   )]Ú
__future__r   rX   rI   Útypingr   r   r   rë   ÚnumpyrŠ   Úpandas._configr   Úpandas._libsr   r	   r
   r   Úpandas._typingr   r   r   r   r   r   r   r   r   Úpandas.compat._optionalr   Úpandas.util._exceptionsr   Úpandas.core.dtypes.commonr   r   r   r   r   r   r   r   Úpandas.core.dtypes.missingr   r    r!   r{   r+   r,   r.   r1   r`   rr   rt   r˜   rž   r©   r²   r”   rÁ   rÊ   rq   rå   rï   rò   r�   rÆ   rƒ   r  r  r7   r°   r/  r6  r4  r>  rD  ÚnanminÚnanmaxrM  rQ  r^  rf  r‚   rK  r  rù   rw  rW  r‹  r‰  rœ  r  r­  r~   r/   r-   ú<module>rº     s÷  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð
 €€€à Ð Ð Ð à %Ð %Ð %Ð %Ð %Ð %ðð ð ð ð ð ð ð ð ð ð ð ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð ?Ð >Ð >Ð >Ð >Ð >Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ðð ð ð ð ð ð ð ð ð ð  Ð °VÐ<Ñ<Ô<€Ø $˜Ð Ø€ðð ð ð ð ð Ð �:�:Ð6Ñ7Ô7Ñ 8Ô 8Ð 8ðð ð ð ð ñ ô ð ð>5ð 5ð 5ð 5ð 5ñ 5ô 5ð 5ðpð ð ð ð(
ð 
ð 
ð 
ð GKðð ð ð ð ð,)ð )ð )ð )ð^ Ø!%Ø)-ðDð Dð Dð Dð DðN	ð 	ð 	ð 	ð2ð 2ð 2ð 2ð&ð &ð &ð &ð &ðRð ð ð ðDEð Eð Eð Eð>ð ð ð ðJ  ØØ)-ð:ð :ð :ð :ð :ð :ð@  ØØ)-ð:ð :ð :ð :ð :ð :ðz 
€ˆ$�„ØØð  ØØØ)-ð*ð *ð *ð *ð *ñ Ôñ Ôñ „ð*ðZð ð ð ð& ÐÑÔØð  ØØ)-ð<ð <ð <ð <ð <ñ Ôñ Ôð<ð~ ÐÑÔØ04ÀTÐPTð _%ð _%ð _%ð _%ð _%ñ Ôð_%ðDð ð ð ð8 �b”h˜rœzÑ*Ô*ð/ð /ð /ð /ð /ðd Ð˜ÐÑÔð  ØØØ	ð*-ð *-ð *-ð *-ð *-ñ Ôð*-ðZ 
€ˆ$�ÑÔØÐ˜ÐÑÔð  ØØØ	ðFð Fð Fð Fð Fñ Ôñ ÔðFðR 
€ˆ$�ÑÔð  ØØØ)-ð1)ð 1)ð 1)ð 1)ð 1)ñ Ôð1)ðhð ð ð. 
ˆ�E¨&Ð	1Ñ	1Ô	1€Ø	ˆ�E¨&Ð	1Ñ	1Ô	1€ð  ØØ)-ð+ð +ð +ð +ð +ð +ðb  ØØ)-ð+ð +ð +ð +ð +ð +ð\ 
€ˆ$�ÑÔØð  ØØ)-ðSð Sð Sð Sð Sñ Ôñ ÔðSðl 
€ˆ$�ÑÔØð  ØØ)-ð\ð \ð \ð \ð \ñ Ôñ Ôð\ð~ 
€ˆ$�ÑÔØð  ØØØ)-ð(ð (ð (ð (ð (ñ Ôñ Ôð(ðVð ð ð ð> $, 2¤8¨B¬JÑ#7Ô#7ð	&+ð &+ð &+ð &+ð &+ð\ ð-ð -ð -ð -ð -ð`ð ð ð ð>Að Að Að 
€ˆ$�ÑÔð
 !*Ø"ðð ð ð ð ñ Ôðð>ð ð ð ð@ 
€ˆ$�ÑÔð
 #Øð)ð )ð )ð )ð )ñ Ôð)ð6!ð !ð !ðH"ð "ð "ð "ð "ð "r/   