a
    oÝEb?+  ã                   @   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ejdddd�ƒeej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d/d0„ Zej
 d1dejdejged2ƒddgd3dgfdejddged2ƒddgd3d4gfd5d6d6ejged2ƒd5d6gd d7gfd gd8gd gd9g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?¢d@ dAd;�ejg dB¢d@ dCd;�g¡ej
 dd'g dD¢g¡dEdF„ ƒƒZej
 dd'g dD¢g¡dGdH„ ƒZdIdJ„ ZdKdL„ Zej
 dMdNdOg¡dPdQ„ ƒZdRdS„ Z dTdU„ Z!dS )Vé    N)Ú	DataFrameÚIndexÚinterpolation)ZlinearÚlowerZhigherÚnearestZ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   )ÚfreqZperiodséÿÿÿÿÚq)r   ç      Ð?ç      à?ç      è?r   c           	      C   s¼   | dkr&|dkr&|g d¢kr&t  d¡ 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�}| d
¡j|| d�}t	 
||¡ d S )Nr   r   r   zBUnclear numpy expectation for nearest result with equidistant data)r   ÚaÚb©ÚkeyÚvalr   r   ©Úname)ÚcolumnsÚindex)ÚpytestÚskipÚpdÚSeriesÚquantiler   Úlenr   ÚgroupbyÚtmÚassert_frame_equal)	r   Za_valsZb_valsr   Z
a_expectedZ
b_expectedÚdfÚexpectedÚresult© r.   úb/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/pandas/tests/groupby/test_quantile.pyÚtest_quantile   s    ÿ$ÿÿr0   c                  C   sÌ   t dg d¢iƒ} |  g 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¡}|  g 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   r   r   r   ç      @©r!   )r   r   r   r	   )r
   r   é   é   ©r1   ÚBr   )r   r   r   r   )r   r   g      @g      @)g      @g      @g      @g      @©r   r(   r&   r$   Ú
MultiIndexÚfrom_productr)   r*   ©r+   r-   r!   r,   r.   r.   r/   Útest_quantile_array:   s    ÿr=   c                  C   s~   t tj d¡jdddd�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	   )ÚsizeÚABC©r    r1   g333333Ó?gffffffæ?)
gÍÌÌÌÌÌì?gÍÌÌÌÌÌ @gš™™™™™@g333333@çš™™™™™ù?g333333@gffffff@gš™™™™™@ç        rC   )
g333333ó?gffffff@gÍÌÌÌÌÌü?r   rC   rC   gffffffþ?gÍÌÌÌÌÌ@r   r   )r8   ÚCr2   ©Únamesr4   )r   ÚnpÚrandomZRandomStateÚrandintÚlistr(   r&   r$   r:   r;   r)   r*   ©r+   r-   r,   r.   r.   r/   Útest_quantile_array2M   s    ÿþÿû	rL   c                  C   sÆ   t g d¢g d¢dœƒ} | jg d¢dd� g d¢¡}t g d¢g d	¢dœtj d
dgg d¢g¡d�}t ||¡ | jg d¢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   r7   )r   r   r   F)Úsort)r   r   r   )r   r   ç      ø?r   r   r   )ç      @r   ç      @r   r   r   r   r   r4   r   r   )rP   r   r   r   )rR   rQ   r   r   r9   rK   r.   r.   r/   Útest_quantile_array_no_sort_   s    þþrS   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 )NrM   rN   )r   r   r   )r   r   r   )r1   r8   ÚcÚdrT   rU   r   r   ))r   r   r   )r   r   r   )r   r   r   )r   r   r   )rT   rU   NrE   )r   r   r   r   )g      
@g      @r   r   r7   r4   )r   r(   r&   r$   r:   Úfrom_tuplesr)   r*   r<   r.   r.   r/   Ú#test_quantile_array_multiple_levelsp   s    ÿþÿrW   Ú
frame_size)r   r	   )éd   r>   r(   r   r   g333333ã?c                    s  | \}‰t t ‡fdd„t|ƒD ƒ¡tˆƒd�}t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>rA   r
   c                    s   g | ]}ˆ D ]}|‘qqS r.   r.   ©rZ   Úxr[   ©r   r.   r/   r]   ˆ   r^   )ZlevelsÚcodesrF   c                    s,   g | ]$}ˆD ]}t |ƒgˆtˆ ƒ  ‘qqS r.   )Úfloatr'   r_   ©r(   r\   r   r.   r/   r]   Ž   s   c                    s   g | ]}|ˆ vr|‘qS r.   r.   )rZ   r`   )r(   r.   r/   r]   ‘   r^   ©r!   r    )r   rG   ÚarrayÚrangerJ   Úminr'   r$   r:   r(   r&   r)   r*   )rX   r(   r   Znrowr+   Z
idx_levelsZ	idx_codesZexpected_indexZexpected_valuesZexpected_columnsr,   r-   r.   rd   r/   Ú6test_groupby_quantile_with_arraylike_q_and_int_columns   s$    ("$ÿÿÿÿri   c               	   C   s�   t ddgddgddggddgd�} tjtdd	��L tjtd
d	�� |  d¡ ¡  W d   ƒ n1 sd0    Y  W d   ƒ n1 s‚0    Y  d S )NZfoor   r   rT   r   r   rA   z+cannot be performed against 'object' dtypes©ÚmatchúDropping invalid columns)	r   r"   ÚraisesÚ	TypeErrorr)   Úassert_produces_warningÚFutureWarningr(   r&   )r+   r.   r.   r/   Útest_quantile_raisesš   s    "ÿrq   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   r5   ©r   r   zGot '50.0' insteadrj   é2   zGot '-1.0' insteadr   )r   rg   r(   r"   rm   Ú
ValueErrorr&   )r+   Úgr.   r.   r/   Ú$test_quantile_out_of_bounds_q_raises¤   s    (rv   c                  C   sH   t  dt jdg¡} t| tdƒdœƒ}| d¡}tdƒD ]}| ¡  q6d S )Nr   r	   r   r   rY   )rG   rf   Únanr   rg   r(   r&   )Údatar+   Úgrpr[   r.   r.   r/   Ú/test_quantile_missing_group_values_no_segfaults¯   s
    
rz   z$key, val, expected_key, expected_valr
   rC   r3   r   r   rP   é*   g      E@Zfloat64©Údtypec                 C   s^   t | |dœƒ}t |t|dd�dgd�}| d¡}| d¡}t ||¡ | ¡ }t ||¡ d S )Nr   r   r   r   re   r   )r   r   r(   r&   r)   r*   )r   r   Zexpected_keyZexpected_valr+   r,   ry   r-   r.   r.   r/   Ú2test_quantile_missing_group_values_correct_resultsº   s    ÿ

r~   Úvalues)r   r   Nr   ZInt64)TFNÚboolean©rC   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�}t
 ||¡ d S )Nr`   r	   Úyrr   r   r   rE   r�   r   r   r   ©r!   r   )r   r(   r&   Ú
isinstancerJ   r$   r:   r;   r   r%   r)   Úassert_series_equal)r   r   r+   r-   ÚidxZtrue_quantilesr,   r.   r.   r/   Ú$test_groupby_quantile_nullable_array×   s    


r‡   c                 C   sz   t dgdgdgdœƒ}tjtdd��  | d¡ | ¡}W d   ƒ n1 sJ0    Y  | d¡dg  | ¡}t ||¡ d S )	Nr   r   r`   )r   r   rT   rl   rj   r   r   )r   r)   ro   rp   r(   r&   r*   )r   r+   r-   r,   r.   r.   r/   Ú)test_groupby_quantile_skips_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	�}tjdgt|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‚   r|   r`   r‚   r   r   )r}   r   ©r}   r!   r   r   r   rE   rƒ   )r   rG   rw   r(   r&   r   r$   r%   rc   r)   r…   r:   r;   )Zany_float_dtyper+   r-   Z	exp_indexr,   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ttdgd| d
�dd�}t ||¡ | d¡ d¡}t dd	itdgd| d
�d�}t 	||¡ d S )Nr   r   r   rŠ   r|   r`   r‚   r   rQ   )r   r}   r‹   r4   )
r   r(   r&   r$   r%   rc   r   r)   r…   r*   )Zany_int_ea_dtyper+   r-   r,   r.   r.   r/   Útest_groupby_quantile_NA_int  s    ÿr�   r}   ZFloat64ZFloat32c                 C   sj   t ddgtjgd dœ| d�}| d¡d  d¡}tjtjgtt	dg| d�dd	�}d|j
_t ||¡ d S )
Nr   r   rŠ   r|   r`   r‚   r   r   r‹   )r   r$   ZNAr(   r&   r%   rG   rw   rc   r   r!   r   r)   r…   )r}   r+   r-   r,   r.   r.   r/   Ú"test_groupby_quantile_allNA_column  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
   Ús)Úunit)r   r   r   r   )ÚvalueÚgroupr’   g®Gáz®ï?r‘   z0 days 00:00:00.990000z0 days 00:00:02.990000r   r   r   r4   )r   r$   Zto_timedeltarG   Úaranger(   r&   Z	Timedeltar   r)   r*   rK   r.   r.   r/   Útest_groupby_timedelta_quantile%  s    ÿþÿù	r”   c                  C   s�   t t d¡ dd¡tdƒtjtdƒdd�d�} | jdd	d
�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   re   r   )Zaxisçš™™™™™é?r‰   ra   )rB   gš™™™™™Ù?gÍÌÌÌÌÌ@gffffffö?)gffffff@gš™™™™™@gffffff@gš™™™™™@)g333333#@gÍÌÌÌÌÌ @g333333%@gÍÌÌÌÌÌ"@))r1   r—   )r1   r‰   )r8   r—   )r8   r‰   rE   )r   rG   r“   ZreshaperJ   r$   r%   r(   r&   r:   rV   r)   r*   rK   r.   r.   r/   Útest_columns_groupby_quantile7  s"    ýýÿùr˜   )"ÚnumpyrG   r"   Zpandasr$   r   r   Zpandas._testingZ_testingr)   ÚmarkZparametrizerw   rJ   Z
date_ranger0   r=   rL   rS   rW   ri   rq   rv   rz   rg   rf   r~   r‡   rˆ   rŒ   r�   rŽ   r”   r˜   r.   r.   r.   r/   Ú<module>   sx   ÿ"&þðþ
"  ûþ

þþ


