o
    Û­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rv|	jjd jdkrv|	 |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ÚlistÚapplymarkerÚpytestÚmarkÚxfailÚpdÚconcatÚSeriesÚquantiler   Úlenr   ÚdtypeÚkindÚdtypesÚvaluesÚastypeÚgroupbyÚtmÚassert_frame_equal)r   Úa_valsÚb_valsr   ÚrequestÚall_valsÚ
a_expectedÚ
b_expectedÚdfÚexpectedÚresult© rE   úg/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pandas/tests/groupby/methods/test_quantile.pyÚtest_quantile   s*   ÿÿÿ&ÿrG   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
   ©r4   r   r   r
   ç      @©r'   )r   r
   r   r   )r   r   é   é   ©rH   ÚBr   )r   r   r
   r
   )r   r   g      @g      @)g      @g      @g      @g      @©r   ÚnpÚarrayÚint64r9   r2   r/   Ú
MultiIndexÚfrom_productr:   r;   )rB   r"   rD   r'   rC   rE   rE   rF   Útest_quantile_arrayI   s   ÿrW   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   )Úsizer4   ÚABC©r&   rH   ç333333Ó?çffffffæ?)
r   r   gffffff@gš™™™™™@r\   r]   gš™™™™™	@r   r\   r]   )
r   r   gffffffþ?gÌÌÌÌÌÌ@r\   r]   çÍÌÌÌÌÌ@r   ç333333ó?gffffff@)rP   ÚCrI   ©ÚnamesrL   )rR   ÚrandomÚdefault_rngÚintegersrT   r   r*   r9   r2   r/   rU   rV   r:   r;   )ÚarrrB   rD   rC   rE   rE   rF   Útest_quantile_array2^   s   þÿû	rg   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   rO   )r
   r   r
   rJ   F)Úsort)r   r   r   )r   r   ç      ø?r   r   r   )ç      @r   ç      @r   r   r   r
   r   rL   r   r   )rk   r   r   r   )rm   rl   r   r   rQ   )rB   r"   rD   rC   rE   rE   rF   Útest_quantile_array_no_sorto   s   þþrn   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 )Nrh   ri   )r   r   r   )r   r   r    )rH   rP   ÚcÚdro   rp   r   r   ))r   r   r   )r   r   r   )r   r    r   )r   r    r   )ro   rp   Nra   )r   r   r   r   )g      
@g      @r   r   rO   rL   )r   r9   r2   r/   rU   Úfrom_tuplesr:   r;   )rB   rD   r'   rC   rE   rE   rF   Ú#test_quantile_array_multiple_levels�   s   ÿþÿrr   Ú
frame_size)r   r   )éd   rX   r9   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   rE   )Ú.0Ú_)ÚncolrE   rF   Ú
<listcomp>–   ó    zJtest_groupby_quantile_with_arraylike_q_and_int_columns.<locals>.<listcomp>r[   r   c                    s   g | ]	}ˆ D ]}|‘qqS rE   rE   ©ru   Úxrv   ©r   rE   rF   rx   ™   ry   )ÚlevelsÚcodesrb   c                    s,   g | ]}ˆD ]}t |ƒgˆtˆ ƒ  ‘qqS rE   )Úfloatr3   rz   ©r9   rw   r   rE   rF   rx   Ÿ   s
    ÿÿc                    s   g | ]}|ˆ vr|‘qS rE   rE   )ru   r{   )r9   rE   rF   rx   ¢   s    ©r'   r&   )r   rR   rS   ÚrangeÚarangeÚminr3   r*   r/   rU   r9   r2   r:   r;   )rs   r9   r   ÚnrowrB   Ú
idx_levelsÚ	idx_codesÚexpected_indexÚexpected_valuesÚexpected_columnsrC   rD   rE   r€   rF   Ú6test_groupby_quantile_with_arraylike_q_and_int_columns�   s$   ( $ÿÿÿÿr‹   c                  C   sh   t ddgddgddggddgd�} d}tjt|d	�� |  d¡ ¡  W d   ƒ d S 1 s-w   Y  d S )
NÚfoor   r    ro   r"   r#   r[   z:dtype '(object|str)' does not support operation 'quantile'©Úmatch)r   r,   ÚraisesÚ	TypeErrorr9   r2   )rB   ÚmsgrE   rE   rF   Ú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 s)w   Y  tjtdd�� | d¡ W d   ƒ d S 1 sFw   Y  d S )	N)r   r   r   r
   r
   r
   rM   ©r   r    zGot '50.0' insteadr�   é2   zGot '-1.0' insteadr   )r   r‚   r9   r,   r�   Ú
ValueErrorr2   )rB   ÚgrE   rE   rF   Ú$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 ]}| ¡  qd S )Nr   r   r!   r"   rt   )rR   rS   Únanr   r‚   r9   r2   )ÚdatarB   Úgrprv   rE   rE   rF   Ú/test_quantile_missing_group_values_no_segfaults¾   s   

ÿr›   z$key, val, expected_key, expected_valr   ç        rK   r   r    rk   é*   g      E@Úfloat64rJ   c                 C   s^   t | |dœƒ}t |t|dd�dgd�}| d¡}| d¡}t ||¡ | ¡ }t ||¡ d S )Nr!   r"   r$   r#   r�   r   )r   r   r9   r2   r:   r;   )r"   r#   Úexpected_keyÚexpected_valrB   rC   rš   rD   rE   rE   rF   Ú2test_quantile_missing_group_values_correct_resultsÉ   s   ÿ

r¡   r7   )r
   r   Nr   ÚInt64)TFNÚboolean©rœ   r   r   c                 C   sž   t dgd dgd  | dœƒ}| d¡d  |¡}t|tƒr1t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 )Nr{   r   Úyr“   r   r    ra   r¤   r$   r   r   ÚFloat64©r'   r%   r4   )r   r9   r2   r)   r*   r/   rU   rV   r   r1   r:   Úassert_series_equal)r7   r   rB   rD   ÚidxÚtrue_quantilesrC   rE   rE   rF   Ú$test_groupby_quantile_nullable_arrayæ   s   


r«   Únumeric_onlyTFc                 C   s    t dgdgdgdœƒ}|r*| d¡j| |d�}| d¡dg  | ¡}t ||¡ d S d}tjt|d	�� | d¡j| |d� W d   ƒ d S 1 sIw   Y  d S )
Nr
   r   r{   )r   r    ro   r   )r¬   r    z0dtype '.*' does not support operation 'quantile'r�   )r   r9   r2   r:   r;   r,   r�   r�   )r   r¬   rB   rD   rC   r‘   rE   rE   rF   Ú-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 r'| }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
   çš™™™™™É?©r{   r¥   rJ   r{   r¥   r   r   )r4   r%   )ÚFloat32r¦   ©r4   r'   r%   r   r   ra   r§   )r   rR   r˜   r9   r2   r   r/   r1   r:   r¨   rU   rV   )Úany_float_dtyperB   rD   Ú	exp_indexÚexpected_dtyperC   rE   rE   rF   Ú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¯   rJ   r{   r¥   r   rl   r¦   )r%   r4   r±   ©r4   r'   )	r   r9   r2   r/   r1   r   r:   r¨   r;   )Úany_int_ea_dtyperB   rD   rC   rE   rE   rF   Ú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“   rJ   r   r   r]   ©r   r   r    ©r
   r
   r   r   )r   r]   r   r]   ra   r¶   ©
r   r/   ÚNAr9   r2   rU   Úfrom_arraysr1   r:   r;   )r   Úval1Úval2Úany_numeric_ea_dtyperB   rD   rC   rE   rE   rF   Ú)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r#|}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“   rJ   r   r   r   rº   r°   r¦   r    r   rK   r»   )r   r   r   r   ra   r¶   r¼   )r   rÁ   rB   rD   r´   rC   rE   rE   rF   Ú0test_groupby_quantile_all_na_group_masked_interpM  s$   ÿþûýrÃ   r4   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¯   rJ   r{   r¥   r   r   r±   )r   r/   r½   r9   r2   r1   rR   r˜   r   r'   r%   r:   r¨   )r4   rB   rD   rC   rE   rE   rF   Ú"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$   rL   )r   r/   Úto_timedeltarR   rƒ   r9   r2   Ú	Timedeltar   r:   r;   )rB   rD   rC   rE   rE   rF   Ú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 s2w   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   ÚXYZÚABABÚcolr$   r�   z+DataFrame.groupby with axis=1 is deprecatedr�   r
   )Úaxisçš™™™™™é?r®   r|   )gš™™™™™ù?gš™™™™™Ù?r^   gffffffö?)gffffff@gš™™™™™@gffffff@gš™™™™™@)g333333#@gÍÌÌÌÌÌ @g333333%@gÍÌÌÌÌÌ"@)©rH   rÐ   ©rH   r®   ©rP   rÐ   ©rP   r®   ra   )r   rR   rƒ   Úreshaper*   r/   r1   r:   Úassert_produces_warningÚFutureWarningr9   r2   rU   rq   r;   )rB   r‘   ÚgbrD   rC   rE   rE   rF   Ú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:00Ú1minrt   ÚUTC)Ústartr   r   ÚtzrÅ   Ú1hr
   ée   éÉ   )Ú	timestampÚcategoryrÆ   rá   r®   rÐ   éc   )rá   Nra   gš™™™™™)@g333333\@)râ   rÆ   gš™™™™H@gfffff†b@g333333Q@gš™™™™e@gÍÌÌÌÌW@gfffffh@rL   )r/   Ú
date_rangeÚfloorr   r*   r‚   r9   r2   rU   rV   r:   r;   )rÅ   ÚdtirB   rD   ÚmirC   rE   rE   rF   Ú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   )Úilocr2   )ru   Úi©rB   rE   rF   Ú
<dictcomp>Î  s   $ z7test_groupby_quantile_dt64tz_period.<locals>.<dictcomp>)r/   rä   r1   Úto_frameÚcopyÚtz_localizeÚ	to_periodÚNaTrê   rR   Útilerƒ   r9   r2   r‚   r   ÚTÚinfer_objectsr'   r8   Úintr:   r;   )ræ   ÚbyrØ   rD   ÚexprC   rE   rì   rF   Ú#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   rP   )r   r   rH   )r   r    rP   )r   r    rH   )r
   r   rP   )r
   r   rH   )r
   r    rP   )r
   r    rH   )ÚsampleÚcat0Úcat1ra   é   rL   rü   F)Úlevelrj   r®   rÐ   )rÔ   rÓ   rÒ   rÑ   )r_   g333333@gš™™™™™@g333333@rP   rH   )r/   rU   rq   r1   r‚   r9   r2   r:   r¨   ÚcoreÚindexesÚfrozenÚ
FrozenListÚassert_equalr'   r}   )ÚindÚserrD   ÚqindrC   Úexpected_levelsrE   rE   rF   Ú+test_groupby_quantile_nonmulti_levels_orderÕ  s   
õÿr  )'ÚnumpyrR   r,   Úpandasr/   r   r   Úpandas._testingÚ_testingr:   r-   Úparametrizer˜   rä   Úas_unitrG   rW   rg   rn   rr   r‹   r’   r—   r›   r‚   rS   r¡   r«   r­   rµ   r¸   rÂ   rÃ   rÄ   rÊ   rÙ   rè   rù   r  rE   rE   rE   rF   Ú<module>   s”    ÿ"&þþìþ "  ûþ

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