a
    é´«jô?  ã                   @   s”  d dl Zd dlZd dlZd dlmZmZ d dlmZ	 ej
 dg d¢¡ej
 dg d¢g d¢fg d¢g d	¢fg d¢g d	¢fg d
¢g d¢fdejdejdgdejdejdgfejdejdejgejdejdejgfejdddd�ejdddd�ddd… fejdddd� d¡ejdddd�ddd…  d¡fejgd ejgd fg	¡ej
 dg d¢¡dd„ ƒƒƒZdd„ Zdd„ Zdd „ Zd!d"„ Zej
 d#d$d%g¡ej
 d&d gd d'gg¡ej
 dd(d)gg¡d*d+„ ƒƒƒZd,d-„ Zd.d/„ Zd0d1„ Zej
 d2dejdejged3ƒddgd4dgfdejddged3ƒddgd4d5gfd6d7d7ejged3ƒd6d7gd d8gfd gd9gd gd:gfg g ejg d;d<�ejg d;d<�fg¡d=d>„ ƒZej
 d?ejg d@¢dA dBd<�ejg dC¢dA dDd<�g¡ej
 dd(g dE¢g¡dFdG„ ƒƒZej
 dd(g dE¢g¡ej
 dHdIdJg¡dKdL„ ƒƒZdMdN„ ZdOdP„ Zej
 dQg dR¢¡dSdT„ ƒZej
 ddUdVg¡dWdX„ ƒZ ej
 dYdZd[g¡d\d]„ ƒZ!d^d_„ Z"d`da„ Z#dbdc„ Z$ddde„ Z%dfdg„ Z&dS )hé    N)Ú	DataFrameÚIndexÚinterpolation)ÚlinearÚlowerÚhigherÚnearestÚmidpointza_vals,b_vals)é   é   é   é   é   )r   r   r   r   r
   )r
   r   r   r   ©r   r   r   r
   )ç      ð?ç       @ç      @ç      @ç      @)r   r   r   r   r   r   r   r   r   r   z1/1/18ÚDr   )ÚfreqÚperiodséÿÿÿÿÚsÚq)r   ç      Ð?ç      à?ç      è?r
   c                 C   s  | dkr:|dkr:t |tƒr:|g d¢kr:| tjjdd�¡ t t |¡t |¡g¡}t |¡j	|| d�}t |¡j	|| d�}t
dgt|ƒ dgt|ƒ  |d	œƒ}t
||gd
gtddgdd�d�}	|jjdkrì|	jjd jdkrì|	 |j¡}	| d¡j	|| d�}
t |
|	¡ d S )Nr   r   r   zBUnclear numpy expectation for nearest result with equidistant data)Úreason)r   ÚaÚb©ÚkeyÚvalr#   r"   ©Úname)ÚcolumnsÚindexÚMr   )Ú
isinstanceÚlistZapplymarkerÚpytestÚmarkZxfailÚpdÚconcatÚSeriesÚquantiler   Úlenr   ÚdtypeÚkindZdtypesÚvaluesÚastypeÚgroupbyÚtmÚassert_frame_equal)r   Za_valsZb_valsr   ÚrequestZall_valsZ
a_expectedZ
b_expectedÚdfÚexpectedÚresult© r=   úi/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/pandas/tests/groupby/methods/test_quantile.pyÚtest_quantile   s0    ÿþý
üÿÿ&ÿr?   c                  C   sì   t dg d¢iƒ} tjg d¢tjd�}|  |¡ dg¡}tj ddgdgg¡}t dddgi|d	�}t	 
||¡ t g d
¢g d¢dœƒ} tj ddgddgg¡}tjg d¢tjd�}|  |¡ ddg¡}t g d¢g d¢dœ|d	�}t	 
||¡ d S )NÚA©r   r
   r   r   r   )r   r   r
   r
   r
   ©r2   r   r   r
   ç      @©r'   )r   r
   r   r   )r   r   é   é   ©r@   ÚBr   )r   r   r
   r
   )r   r   g      @g      @)g      @g      @g      @g      @©r   ÚnpÚarrayÚint64r6   r0   r-   Ú
MultiIndexÚfrom_productr7   r8   )r:   r"   r<   r'   r;   r=   r=   r>   Útest_quantile_arrayI   s    ÿrO   c                  C   s†   t j d¡jdddt jd�} t| tdƒd�}| d¡ d	d
g¡}tg d¢g d¢dœt	j
jg d¢d	d
ggdd gd�d�}t ||¡ d S )Nr   r   r   )é
   r   )Úsizer2   ÚABC©r&   r@   ç333333Ó?çffffffæ?)
r   r   gffffff@gš™™™™™@rT   rU   gš™™™™™	@r   rT   rU   )
r   r   gffffffþ?gÌÌÌÌÌÌ@rT   rU   çÍÌÌÌÌÌ@r   ç333333ó?gffffff@)rH   ÚCrA   ©ÚnamesrD   )rJ   ÚrandomZdefault_rngZintegersrL   r   r*   r6   r0   r-   rM   rN   r7   r8   )Zarrr:   r<   r;   r=   r=   r>   Útest_quantile_array2^   s    þÿû	r\   c                  C   sÒ   t g d¢g d¢dœƒ} tjg d¢tjd�}| j|dd� g d¢¡}t g d	¢g d
¢dœtj ddgg d¢g¡d�}t	 
||¡ | j|dd� ddg¡}t g d¢g d¢dœtj ddgddgg¡d�}t	 
||¡ d S )N©r   r
   r   ©r   r   r   rG   )r
   r   r
   rB   F)Úsort)r   r   r   )r   r   ç      ø?r   r   r   )ç      @r   ç      @r   r   r   r
   r   rD   r   r   )r`   r   r   r   )rb   ra   r   r   rI   )r:   r"   r<   r;   r=   r=   r>   Útest_quantile_array_no_sorto   s    þþrc   c                  C   s|   t g d¢g d¢g d¢g d¢dœƒ} |  ddg¡ dd	g¡}tjjg d
¢g d¢d�}t g d¢g d¢dœ|d�}t ||¡ d S )Nr]   r^   )r   r   r   )r   r   r    )r@   rH   ÚcÚdrd   re   r   r   ))r   r   r   )r   r   r   )r   r    r   )r   r    r   )rd   re   NrY   )r   r   r   r   )g      
@g      @r   r   rG   rD   )r   r6   r0   r-   rM   Úfrom_tuplesr7   r8   )r:   r<   r'   r;   r=   r=   r>   Ú#test_quantile_array_multiple_levels�   s    ÿþÿrg   Ú
frame_size)r   r   )éd   rP   r6   r
   r   g333333ã?c                    s  | \}‰t t ‡fdd„t|ƒD ƒ¡tˆƒd�}t t|dƒ¡gtˆ ƒ ˆg }‡fdd„tt|dƒƒD ƒgtˆ ƒ tttˆƒƒƒt|dƒ g }tj	||ˆ d g d�}‡ ‡‡fdd„tt|dƒƒD ƒ}‡ fdd„tˆƒD ƒ}	t |||	d	�}
| 
ˆ ¡ ˆ¡}t ||
¡ d S )
Nc                    s   g | ]}ˆ |d  g ‘qS )r   r=   )Ú.0Ú_)Úncolr=   r>   Ú
<listcomp>–   ó    zJtest_groupby_quantile_with_arraylike_q_and_int_columns.<locals>.<listcomp>rS   r   c                    s   g | ]}ˆ D ]}|‘qqS r=   r=   ©rj   Úxrk   ©r   r=   r>   rm   ™   rn   )ÚlevelsÚcodesrZ   c                    s,   g | ]$}ˆD ]}t |ƒgˆtˆ ƒ  ‘qqS r=   )Úfloatr1   ro   ©r6   rl   r   r=   r>   rm   Ÿ   s   c                    s   g | ]}|ˆ vr|‘qS r=   r=   )rj   rp   )r6   r=   r>   rm   ¢   rn   ©r'   r&   )r   rJ   rK   ÚrangeÚarangeÚminr1   r*   r-   rM   r6   r0   r7   r8   )rh   r6   r   Znrowr:   Z
idx_levelsZ	idx_codesZexpected_indexZexpected_valuesZexpected_columnsr;   r<   r=   ru   r>   Ú6test_groupby_quantile_with_arraylike_q_and_int_columns�   s$    ( $ÿÿÿÿrz   c                  C   sf   t ddgddgddggddgd�} d}tjt|d	�� |  d¡ ¡  W d   ƒ n1 sX0    Y  d S )
NZfoor   r    rd   r"   r#   rS   z:dtype '(object|str)' does not support operation 'quantile'©Úmatch)r   r+   ÚraisesÚ	TypeErrorr6   r0   )r:   Úmsgr=   r=   r>   Útest_quantile_raises«   s    "r€   c                  C   s˜   t g d¢tdƒdœƒ} |  g d¢¡}tjtdd�� | d¡ W d   ƒ n1 sR0    Y  tjtdd�� | d¡ W d   ƒ n1 sŠ0    Y  d S )	N)r   r   r   r
   r
   r
   rE   ©r   r    zGot '50.0' insteadr{   é2   zGot '-1.0' insteadr   )r   rw   r6   r+   r}   Ú
ValueErrorr0   )r:   Úgr=   r=   r>   Ú$test_quantile_out_of_bounds_q_raises³   s    (r…   c                  C   sH   t  dt jdg¡} t| tdƒdœƒ}| d¡}tdƒD ]}| ¡  q6d S )Nr   r   r!   r"   ri   )rJ   rK   Únanr   rw   r6   r0   )Údatar:   Úgrprk   r=   r=   r>   Ú/test_quantile_missing_group_values_no_segfaults¾   s
    
r‰   z$key, val, expected_key, expected_valr   ç        rC   r   r    r`   é*   g      E@Zfloat64rB   c                 C   s^   t | |dœƒ}t |t|dd�dgd�}| d¡}| d¡}t ||¡ | ¡ }t ||¡ d S )Nr!   r"   r$   r#   rv   r   )r   r   r6   r0   r7   r8   )r"   r#   Zexpected_keyZexpected_valr:   r;   rˆ   r<   r=   r=   r>   Ú2test_quantile_missing_group_values_correct_resultsÉ   s    ÿ

rŒ   r4   )r
   r   Nr   ZInt64)TFNÚboolean©rŠ   r   r   c                 C   sž   t dgd dgd  | dœƒ}| d¡d  |¡}t|tƒrbtjjddg|fdd gd�}g d¢}ntddgdd	�}d
g}tj	|d |ddd�}t
 ||¡ d S )Nrp   r   Úyr�   r   r    rY   rŽ   r$   r   r   ÚFloat64©r'   r%   r2   )r   r6   r0   r)   r*   r-   rM   rN   r   r/   r7   Úassert_series_equal)r4   r   r:   r<   ÚidxZtrue_quantilesr;   r=   r=   r>   Ú$test_groupby_quantile_nullable_arrayæ   s    


r”   Únumeric_onlyTFc                 C   sœ   t dgdgdgdœƒ}|rR| d¡j| |d�}| d¡dg  | ¡}t ||¡ nFd}tjt|d	��$ | d¡j| |d� W d   ƒ n1 sŽ0    Y  d S )
Nr
   r   rp   )r   r    rd   r   )r•   r    z0dtype '.*' does not support operation 'quantile'r{   )r   r6   r0   r7   r8   r+   r}   r~   )r   r•   r:   r<   r;   r   r=   r=   r>   Ú-test_groupby_quantile_raises_on_invalid_dtypeþ   s    r–   c                 C   sÊ   t ddgdtjgdœ| d�}| d¡d  d¡}tdg| dd	�}| d
v rN| }nd }tjdg||dd�}t 	||¡ | d¡d  ddg¡}tjdgd tj
j|ddgfdd gd�d|d�}t 	||¡ d S )Nr
   çš™™™™™É?©rp   r�   rB   rp   r�   r   r   )r2   r%   )ÚFloat32r�   ©r2   r'   r%   r   r   rY   r‘   )r   rJ   r†   r6   r0   r   r-   r/   r7   r’   rM   rN   )Zany_float_dtyper:   r<   Z	exp_indexÚexpected_dtyper;   r=   r=   r>   Útest_groupby_quantile_NA_float  s     ürœ   c                 C   s˜   t ddgddgdœ| d�}| d¡d  d¡}tjd	gd
tdgd| d�dd�}t ||¡ | d¡ d¡}t dd	id
tdgd| d�d�}t ||¡ d S )Nr
   r   r   r˜   rB   rp   r�   r   ra   r�   )r%   r2   rš   ©r2   r'   )	r   r6   r0   r-   r/   r   r7   r’   r8   )Zany_int_ea_dtyper:   r<   r;   r=   r=   r>   Útest_groupby_quantile_NA_int$  s    üÿrž   zinterpolation, val1, val2))r   r   r   )r   r   r   )r   r   r   c                 C   sŒ   t g d¢dddtjgdœ|d�}| d¡jdd	g| d
�}t d||tjtjgi|tjjtjg d¢|d�g d¢gdd gd�d�}t 	||¡ d S )N©r
   r
   r
   r   r
   r   r   r�   rB   r   r   rU   ©r   r   r    ©r
   r
   r   r   )r   rU   r   rU   rY   r�   ©
r   r-   ÚNAr6   r0   rM   Zfrom_arraysr/   r7   r8   )r   Zval1Zval2Úany_numeric_ea_dtyper:   r<   r;   r=   r=   r>   Ú)test_groupby_quantile_all_na_group_masked7  s    ÿþýr¥   r	   r   c                 C   sž   t g d¢dddtjgdœ|d�}| d¡jdd	g| d
�}|dkrF|}nd}t dddtjtjgi|tjjtjg d¢|d�g d¢gdd gd�d�}t 	||¡ d S )NrŸ   r
   r   r   r�   rB   r   r   r   r    r™   r�   r    r   rC   r¡   )r   r   r   r   rY   r�   r¢   )r   r¤   r:   r<   r›   r;   r=   r=   r>   Ú0test_groupby_quantile_all_na_group_masked_interpM  s$    ÿþûýr¦   r2   r�   r™   c                 C   sj   t ddgtjgd dœ| d�}| d¡d  d¡}tjtjg| tdg| d�dd	�}d|j	_
t ||¡ d S )
Nr
   r   r˜   rB   rp   r�   r   r   rš   )r   r-   r£   r6   r0   r/   rJ   r†   r   r'   r%   r7   r’   )r2   r:   r<   r;   r=   r=   r>   Ú"test_groupby_quantile_allNA_columnj  s    ÿr§   c                  C   sn   t tjt d¡dd�g d¢dœƒ} |  d¡ d¡}t dt d	¡t d
¡gitddgdd�d�}t	 
||¡ d S )Nr   r   )Úunitr¡   )ÚvalueÚgrouprª   g®Gáz®ï?r©   z0 days 00:00:00.990000z0 days 00:00:02.990000r
   r   r$   rD   )r   r-   Zto_timedeltarJ   rx   r6   r0   Z	Timedeltar   r7   r8   )r:   r<   r;   r=   r=   r>   Útest_groupby_timedelta_quantilev  s    ÿþÿù	r«   c                  C   sÆ   t t d¡ dd¡tdƒtjtdƒdd�d�} d	}tjt	|d
�� | j
ddd�}W d   ƒ n1 sd0    Y  |jddgd�}t g d¢g d¢g d¢gtdƒtjjg d¢dd gd�d�}t ||¡ d S )Né   r   r   ZXYZZABABÚcolr$   rv   z+DataFrame.groupby with axis=1 is deprecatedr{   r
   )Zaxisçš™™™™™é?r—   rq   )gš™™™™™ù?gš™™™™™Ù?rV   gffffffö?)gffffff@gš™™™™™@gffffff@gš™™™™™@)g333333#@gÍÌÌÌÌÌ @g333333%@gÍÌÌÌÌÌ"@)©r@   r®   ©r@   r—   ©rH   r®   ©rH   r—   rY   )r   rJ   rx   Zreshaper*   r-   r/   r7   Zassert_produces_warningÚFutureWarningr6   r0   rM   rf   r8   )r:   r   Úgbr<   r;   r=   r=   r>   Útest_columns_groupby_quantileˆ  s(    ý,ýÿùrµ   c                 C   s°   t jdddd| d� d¡}t|ttddƒƒttdd	ƒƒd
œƒ}| d¡ ddg¡}t jj	|d d d… ddggdd�}tdddœdddœdddœdddœg|d�}t
 ||¡ d S )Nz2020-04-19 00:00:00Z1minri   ÚUTC)Ústartr   r   Útzr¨   Z1hr
   ée   éÉ   )Ú	timestampÚcategoryr©   r»   r—   r®   éc   )r»   NrY   gš™™™™™)@g333333\@)r¼   r©   gš™™™™H@gfffff†b@g333333Q@gš™™™™e@gÍÌÌÌÌW@gfffffh@rD   )r-   Ú
date_rangeÚfloorr   r*   rw   r6   r0   rM   rN   r7   r8   )r¨   Údtir:   r<   Úmir;   r=   r=   r>   Útest_timestamp_groupby_quantile¢  s,    
ÿþýÿ"üù
rÂ   c                     sÀ   t jddd�} t  | ¡ ¡  ¡ ‰ |  d¡ˆ d< |  d¡ˆ d< | | d  ˆ d	< t jˆ jd
< t	 
t	 d¡d¡}ˆ  |¡}| d¡}‡ fdd„tdƒD ƒ}t|ƒj ¡ }|j t¡|_t ||¡ d S )Nz
2016-01-01iè  )r   z
US/Pacificr
   r   r   r   r   r   r   éÈ   r   c                    s$   i | ]}|ˆ j |d d…  d¡“qS )Nr   r   )Úilocr0   )rj   Úi©r:   r=   r>   Ú
<dictcomp>Î  rn   z7test_groupby_quantile_dt64tz_period.<locals>.<dictcomp>)r-   r¾   r/   Zto_frameÚcopyZtz_localizeZ	to_periodZNaTrÄ   rJ   Ztilerx   r6   r0   rw   r   ÚTZinfer_objectsr'   r5   Úintr7   r8   )rÀ   Zbyr´   r<   Úexpr;   r=   rÆ   r>   Ú#test_groupby_quantile_dt64tz_period¿  s    

rÌ   c                  C   s¨   t jjg d¢g d¢d�} t jtdƒ| d�}|jddd� d	d
g¡}t jjg d¢dd gd�}t jg d¢|d�}t ||¡ t j	j
j ddgd	d
gg¡}t |jj|¡ d S )N))r   r   rH   )r   r   r@   )r   r    rH   )r   r    r@   )r
   r   rH   )r
   r   r@   )r
   r    rH   )r
   r    r@   )ÚsampleZcat0Úcat1rY   é   rD   rÎ   F)Úlevelr_   r—   r®   )r²   r±   r°   r¯   )rW   g333333@gš™™™™™@g333333@rH   r@   )r-   rM   rf   r/   rw   r6   r0   r7   r’   ÚcoreZindexesÚfrozenZ
FrozenListZassert_equalr'   rr   )ÚindZserr<   Zqindr;   Zexpected_levelsr=   r=   r>   Ú+test_groupby_quantile_nonmulti_levels_orderÕ  s    
õÿrÔ   )'ÚnumpyrJ   r+   Zpandasr-   r   r   Zpandas._testingZ_testingr7   r,   Zparametrizer†   r¾   Zas_unitr?   rO   r\   rc   rg   rz   r€   r…   r‰   rw   rK   rŒ   r”   r–   rœ   rž   r¥   r¦   r§   r«   rµ   rÂ   rÌ   rÔ   r=   r=   r=   r>   Ú<module>   s’   ÿ"&þþìþ "  ûþ

þþÿ


