Ë
    *�£jƒ  ã                  ó¸   — d dl mZ d dlmZ d dlZd dlmZmZ er
d dl	m
Z
mZmZ 	 	 	 	 	 	 	 	 d
d„Z	 	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 dd	„Zy)é    )Úannotations)ÚTYPE_CHECKINGN)ÚisnaÚna_value_for_dtype)Ú	ArrayLikeÚScalarÚnptc                ó¼   — t        | t        j                  «      r1t        | j                  d¬«      }t        | «      }t        | ||||«      S | j                  ||«      S )a  
    Compute the quantiles of the given values for each quantile in `qs`.

    Parameters
    ----------
    values : np.ndarray or ExtensionArray
    qs : np.ndarray[float64]
    interpolation : str

    Returns
    -------
    np.ndarray or ExtensionArray
    F)Úcompat)Ú
isinstanceÚnpÚndarrayr   Údtyper   Úquantile_with_maskÚ	_quantile)ÚvaluesÚqsÚinterpolationÚ
fill_valueÚmasks        úBC:\FundamentalWorkbench\vendor\pandas\core\array_algos\quantile.pyÚquantile_compatr      sQ   € ô  �&œ"Ÿ*™*Ô%Ü'¨¯©¸UÔCˆ
Ü�F‹|ˆÜ! &¨$°
¸BÀÓNÐNà×Ñ  MÓ2Ð2ó    c                óF  — | j                   |j                   k(  sJ ‚| j                  dk(  r>t        j                  | «      } t        j                  |«      }t	        | ||||«      }|d   S | j                  dk(  sJ ‚| j                   d   dk(  }|rbt        j
                  t        |«      |«      }t        j                  |t        | «      «      j                  t        | «      t        |«      «      }|S t        | ||||¬«      }t        j                  |«      }|j                  }|S )a  
    Compute the quantiles of the given values for each quantile in `qs`.

    Parameters
    ----------
    values : np.ndarray
        For ExtensionArray, this is _values_for_factorize()[0]
    mask : np.ndarray[bool]
        mask = isna(values)
        For ExtensionArray, this is computed before calling _value_for_factorize
    fill_value : Scalar
        The value to interpret fill NA entries with
        For ExtensionArray, this is _values_for_factorize()[1]
    qs : np.ndarray[float64]
    interpolation : str
        Type of interpolation

    Returns
    -------
    np.ndarray

    Notes
    -----
    Assumes values is already 2D.  For ExtensionArray this means np.atleast_2d
    has been called on _values_for_factorize()[0]

    Quantile is computed along axis=1.
    é   r   é   )Úna_valuer   r   )ÚshapeÚndimr   Ú
atleast_2dr   ÚfullÚlenÚrepeatÚreshapeÚ_nanquantileÚasarrayÚT)	r   r   r   r   r   Ú
res_valuesÚis_emptyÚflatÚresults	            r   r   r   ,   s  € ðF �<‰<˜4Ÿ:™:Ò%Ð%Ð%Ø‡{�{�aÒä—‘˜vÓ&ˆÜ�}‰}˜TÓ"ˆÜ'¨°°jÀ"ÀmÓTˆ
Ø˜!‰}Ðà�;‰;˜!ÒÐÐà�|‰|˜A‰ !Ñ#€Háô �w‰w”s˜2“w 
Ó+ˆÜ—‘˜4¤ V£Ó-×5Ñ5´c¸&³kÄ3ÀrÃ7ÓKˆð €Mô ØØØØØ'ô
ˆô —‘˜FÓ#ˆØ—‘ˆà€Mr   c                ó˜   — | |    } t        | «      dk(  rt        j                  t        |«      |«      S t        j                  | ||¬«      S )aÞ  
    Wrapper for np.quantile that skips missing values, specialized to
    1-dimensional case.

    Parameters
    ----------
    values : array over which to find quantiles
    mask : ndarray[bool]
        locations in values that should be considered missing
    qs : np.ndarray[float64] of quantile indices to find
    na_value : scalar
        value to return for empty or all-null values
    interpolation : str

    Returns
    -------
    quantiles : scalar or array
    r   )Úmethod)r"   r   r!   Úquantile)r   r   r   r   r   s        r   Ú_nanquantile_1dr/   o   sN   € ð4 �T�E‰]€Fä
ˆ6ƒ{�aÒô �w‰w”s˜2“w Ó)Ð)ä�;‰;ØØ
ð ôð r   c               ó�  — | j                   j                  dv rIt        | j                  d«      ||j                  d«      ||¬«      }|j	                  | j                   «      S |j                  «       �r6|j                  | j                  k(  sJ ‚t        t        | «      t        |«      d¬«      D ��cg c]  \  }}t        |||||¬«      ‘Œ }}}| j                   j                  dk(  r-t        j                  || j                   ¬«      j                  }|S t        j                  |«      j                  }|j                   | j                   k7  r[|j                  «       sK||j	                  | j                   d	¬
«      k(  j                  «       r|j	                  | j                   d	¬
«      }|S t        j                  | |d|¬«      S c c}}w )aÈ  
    Wrapper for np.quantile that skips missing values.

    Parameters
    ----------
    values : np.ndarray[ndim=2]  over which to find quantiles
    qs : np.ndarray[float64] of quantile indices to find
    na_value : scalar
        value to return for empty or all-null values
    mask : np.ndarray[bool]
        locations in values that should be considered missing
    interpolation : str

    Returns
    -------
    quantiles : scalar or array
    ÚmMÚi8)r   r   r   r   T)Ústrict)r   Úf)r   F)Úcopyr   )Úaxisr-   )r   Úkindr%   ÚviewÚastypeÚanyr   ÚzipÚlistr/   r   r&   r'   Úallr.   )r   r   r   r   r   r+   ÚvalÚms           r   r%   r%   ›   s€  € ð4 ‡|�|×Ñ˜DÑ äØ�K‰K˜ÓØØ—]‘] 4Ó(ØØ'ô
ˆð �}‰}˜VŸ\™\Ó*Ð*à‡x�x…zà�z‰z˜VŸ\™\Ò)Ð)Ð)ô  ¤ V£¬d°4«jÀÕFô
áF‘��aô ˜C  B¨ÀÖNØFð 	ñ 
ð �<‰<×Ñ Ò#ä—Z‘Z ¨f¯l©lÔ;×=Ñ=ˆFð ˆô —Z‘Z Ó'×)Ñ)ˆFà—‘ §¡Ò,ØŸ™œ
Ø˜vŸ}™}¨V¯\©\À˜}ÓFÑF×KÑKÔMð
  Ÿ™ v§|¡|¸%˜Ó@�Øˆä�{‰{ØØØð !ô
ð 	
ùó)
s   Â1G)r   r   r   únpt.NDArray[np.float64]r   ÚstrÚreturnr   )
r   ú
np.ndarrayr   únpt.NDArray[np.bool_]r   r@   r   rA   rB   rC   )r   rC   r   rD   r   r@   r   r   r   rA   rB   zScalar | np.ndarray)r   rC   r   r@   r   rD   r   rA   )Ú
__future__r   Útypingr   Únumpyr   Úpandas.core.dtypes.missingr   r   Úpandas._typingr   r   r	   r   r   r/   r%   © r   r   Ú<module>rK      sí   ðÝ "å  ã ÷ñ
 ÷ñ ð3Øð3Ø2ð3ØCFð3àó3ð0@Øð@à
ð@ð 	 ð	@ð
 ð@ð ó@ðF)Øð)à
ð)ð 	 ð)ð ð	)ð
 ð)ð ó)ðXG
ØðG
àðG
ð
  ðG
ð ôG
r   