U
    ÎZjæ1  ã                   @   sr  d dl Zd dlZd dlmZ d dlZd dlmZmZ d dl	m
Z ej dddddd	g¡ej d
dddddgdddddgfddddgddddgfdddddgddddgfdddddgdddddg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d ddddg¡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d0d1„ Zd2d3„ Zej d4dejdejgedƒddgd5dgfdejddgedƒddgd5d6gfd7d8d8ejgedƒd7d8gd d9gfd gd:g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dd dgd dAd=�ejdBdCdgd dDd=�g¡ej ddd5ddgg¡dEdF„ ƒƒZej ddd5ddgg¡ej dGejdBdCg¡dHdI„ ƒƒZdJdK„ Z dLdM„ Z!ej dNdOdPg¡dQdR„ ƒZ"dSdT„ Z#dUdV„ Z$dWdX„ Z%dS )Yé    N)Úlib)Ú	DataFrameÚIndexÚinterpolationZlinearÚlowerZhigherÚnearestZmidpointza_vals,b_valsé   é   é   é   é   ç      ð?ç       @ç      @ç      @ç      @z1/1/18ÚD)ÚfreqÚperiodséÿÿÿÿÚqç      Ð?ç      à?ç      è?c           
      C   sÌ   | dkr6|dkr6|ddddgkr6|j  tjjd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   r
   r	   r   zBUnclear numpy expectation for nearest result with equidistant data)Úreason)r   ÚaÚb©ÚkeyÚvalr   r   ©Úname)ÚcolumnsÚindex)ÚnodeZ
add_markerÚpytestÚmarkZxfailÚpdÚSeriesÚquantiler   Úlenr   ÚgroupbyÚtmÚassert_frame_equal)
r   Za_valsZb_valsr   ÚrequestZ
a_expectedZ
b_expectedÚdfÚexpectedÚresult© r2   úe/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/pandas/tests/groupby/test_quantile.pyÚtest_quantile   s$     ÿÿ$ÿ  ÿr4   c                  C   sì   t ddddddgiƒ} |  dddddg¡ dg¡}tj ddgdgg¡}t dddgi|d	�}t ||¡ t ddddgdd
ddgdœƒ} tj ddgddgg¡}|  ddddg¡ ddg¡}t ddddgddddgdœ|d	�}t ||¡ d S )NÚAr   r   r	   r
   r   r   ç      @©r#   r   é   é   ©r5   ÚBr   g      @g      @g      @g      @g      @g      @©r   r+   r)   r'   Ú
MultiIndexÚfrom_productr,   r-   ©r/   r1   r#   r0   r2   r2   r3   Ú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 d
dddddddddg
ddddddddddg
dœtj	j
dddddgdd	ggdd gd�d�}t ||¡ d S ) Nr   r   )é
   r
   )ÚsizeÚABC©r"   r5   g333333Ó?gffffffæ?gÍÌÌÌÌÌì?gÍÌÌÌÌÌ @gš™™™™™@g333333@çš™™™™™ù?g333333@gffffff@gš™™™™™@ç        g333333ó?gffffff@gÍÌÌÌÌÌü?r   gffffffþ?gÍÌÌÌÌÌ@)r;   ÚCr   r	   r
   r   ©Únamesr7   )r   ÚnpÚrandomZRandomStateÚrandintÚlistr+   r)   r'   r=   r>   r,   r-   ©r/   r1   r0   r2   r2   r3   Útest_quantile_array2R   s     ÿþ ÿû	rO   c                  C   sê   t dddgdddgdœƒ} | jdddgdd	� d
ddg¡}t ddddddgddddddgdœtj ddgd
ddgg¡d�}t ||¡ | jdddgdd	� dd
g¡}t ddddgddddgdœtj ddgdd
gg¡d�}t ||¡ d S )Nr   r   r	   r
   r   r   r:   F)Úsortr   r   r   r   ç      ø?ç      @r   g      @r7   r<   rN   r2   r2   r3   Útest_quantile_array_no_sortd   s      þþrS   c                  C   s’   t dddgdddgdddgdddgd	œƒ} |  d
dg¡ ddg¡}tjjddddgd
dd gd�}t ddddgddddgdœ|d�}t ||¡ d S )Nr   r   r	   r
   r   r   r   r   )r5   r;   ÚcÚdrT   rU   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   rH   r   g      
@g      @r   r:   r7   )r   r+   r)   r'   r=   Úfrom_tuplesr,   r-   r?   r2   r2   r3   Ú#test_quantile_array_multiple_levelsu   s    $ÿ
þ ÿrW   Ú
frame_size)r	   r
   )éd   rA   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   r2   )Ú.0Ú_)Úncolr2   r3   Ú
<listcomp>Š   s     zJtest_groupby_quantile_with_arraylike_q_and_int_columns.<locals>.<listcomp>rD   r   c                    s   g | ]}ˆ D ]}|‘qqS r2   r2   ©rZ   Úxr[   ©r   r2   r3   r]   �   s       )ZlevelsÚcodesrI   c                    s,   g | ]$}ˆD ]}t |ƒgˆtˆ ƒ  ‘qqS r2   )Úfloatr*   r^   ©r+   r\   r   r2   r3   r]   “   s      c                    s   g | ]}|ˆ kr|‘qS r2   r2   )rZ   r_   )r+   r2   r3   r]   –   s      ©r#   r"   )r   rJ   ÚarrayÚrangerM   Úminr*   r'   r=   r+   r)   r,   r-   )rX   r+   r   Znrowr/   Z
idx_levelsZ	idx_codesZexpected_indexZexpected_valuesZexpected_columnsr0   r1   r2   rc   r3   Ú6test_groupby_quantile_with_arraylike_q_and_int_columns„   s,    ("$ÿ  ÿÿ  ÿrh   c               
   C   sh   t ddgddgddggddgd�} tjtdd	��. tjtd
d	�� |  d¡ ¡  W 5 Q R X W 5 Q R X d S )NZfoor   r   rT   r   r   rD   z+cannot be performed against 'object' dtypes©ÚmatchzDropping invalid columns)	r   r%   ÚraisesÚ	TypeErrorr,   Úassert_produces_warningÚFutureWarningr+   r)   )r/   r2   r2   r3   Útest_quantile_raisesŸ   s    " ÿro   c               	   C   s€   t ddddddgtdƒdœƒ} |  ddddddg¡}tjtdd�� | d¡ W 5 Q R X tjtdd�� | d	¡ W 5 Q R X d S )
Nr   r   r8   ©r   r   zGot '50.0' insteadri   é2   zGot '-1.0' insteadr   )r   rf   r+   r%   rk   Ú
ValueErrorr)   )r/   Úgr2   r2   r3   Ú$test_quantile_out_of_bounds_q_raises©   s    rt   c                  C   sH   t  dt jdg¡} t| tdƒdœƒ}| d¡}tdƒD ]}| ¡  q6d S )Nr   r
   r   r   rY   )rJ   re   Únanr   rf   r+   r)   )Údatar/   Úgrpr[   r2   r2   r3   Ú/test_quantile_missing_group_values_no_segfaults´   s
    
rx   z$key, val, expected_key, expected_valrF   r6   r   r   rQ   é*   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   rd   r   )r   r   r+   r)   r,   r-   )r   r   Zexpected_keyZexpected_valr/   r0   rw   r1   r2   r2   r3   Ú2test_quantile_missing_group_values_correct_results¿   s     
 ÿ

r|   ÚvaluesZInt64TFÚbooleanc                 C   sž   t dgd dgd  | dœƒ}| d¡d  |¡}t|tƒrdtjjddg|fdd gd�}dd	d
g}ntddgdd�}d	g}tj	|d |dd�}t
 ||¡ d S )Nr_   r
   Úyrp   r   r   rH   rF   r   r   r    r	   ©r#   r!   )r   r+   r)   Ú
isinstancerM   r'   r=   r>   r   r(   r,   Úassert_series_equal)r}   r   r/   r1   ÚidxZtrue_quantilesr0   r2   r2   r3   Ú$test_groupby_quantile_nullable_arrayÜ   s    

r„   Únumeric_onlyc              	   C   s¾   t dgdgdgdœƒ}|tjks$|rŒ|tjkr2tnd }d}tj||d�� | d¡j| |d�}W 5 Q R X | d¡d	g  | ¡}t ||¡ n.t	j
td
d�� | d¡j| |d� W 5 Q R X d S )Nr   r   r_   )r   r   rT   z>The default value of numeric_only in DataFrameGroupBy.quantileri   r   )r…   r   z7'quantile' cannot be performed against 'object' dtypes!)r   r   Ú
no_defaultrn   r,   rm   r+   r)   r-   r%   rk   rl   )r   r…   r/   ÚwarnÚmsgr1   r0   r2   r2   r3   Ú)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   rz   r_   r   r   r   )r{   r!   ©r{   r#   r!   r   r	   rH   r€   )r   rJ   ru   r+   r)   r   r'   r(   rb   r,   r‚   r=   r>   )Zany_float_dtyper/   r1   Z	exp_indexr0   r2   r2   r3   Ú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‹   rz   r_   r   r   rR   )r!   r{   rŒ   r7   )
r   r+   r)   r'   r(   rb   r   r,   r‚   r-   )Zany_int_ea_dtyper/   r1   r0   r2   r2   r3   Ú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‹   rz   r_   r   r   r   rŒ   )r   r'   ZNAr+   r)   r(   rJ   ru   rb   r   r#   r!   r,   r‚   )r{   r/   r1   r0   r2   r2   r3   Ú"test_groupby_quantile_allNA_column'  s       ÿr�   c                  C   sr   t tjt d¡dd�ddddgdœƒ} |  d¡ d¡}t d	t d
¡t d¡gitddgdd�d�}t	 
||¡ d S )Nr   Ús)Úunitr   r	   )ÚvalueÚgroupr“   g®Gáz®ï?r’   z0 days 00:00:00.990000z0 days 00:00:02.990000r    r7   )r   r'   Zto_timedeltarJ   Úaranger+   r)   Z	Timedeltar   r,   r-   rN   r2   r2   r3   Útest_groupby_timedelta_quantile3  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 ddddgddddgddddggtdƒtj	j
ddddgdd gd�d�}t ||¡ d S )Né   r
   r   ZXYZZABABÚcolr    rd   r   )Zaxisçš™™™™™é?rŠ   r`   rE   gš™™™™™Ù?gÍÌÌÌÌÌ@gffffffö?gffffff@gš™™™™™@gffffff@gš™™™™™@g333333#@gÍÌÌÌÌÌ @g333333%@gÍÌÌÌÌÌ"@)r5   r˜   )r5   rŠ   )r;   r˜   )r;   rŠ   rH   )r   rJ   r”   ZreshaperM   r'   r(   r+   r)   r=   rV   r,   r-   rN   r2   r2   r3   Útest_columns_groupby_quantileE  s$    ý


ý
 ÿùr™   c               	   C   sÄ   t tjddddd� d¡ttddƒƒttdd	ƒƒd
œƒ} |  d¡ ddg¡}t dddœdddœdddœdddœgtjj	t 
d¡dft 
d¡dft 
d¡dft 
d¡dfgdd�d�}t ||¡ d S )Nz2020-04-19 00:00:00Z1TrY   ÚUTC)Ústartr   r   ÚtzZ1Hr   ée   éÉ   )Ú	timestampÚcategoryr’   rŸ   rŠ   r˜   gš™™™™™)@g333333\@)r    r’   gš™™™™H@gfffff†b@g333333Q@gš™™™™e@gÍÌÌÌÌW@gfffffh@z2020-04-19 00:00:00+00:00z2020-04-19 01:00:00+00:00)rŸ   NrH   r7   )r   r'   Ú
date_rangeÚfloorrM   rf   r+   r)   r=   rV   Ú	Timestampr,   r-   rN   r2   r2   r3   Útest_timestamp_groupby_quantile\  s<       ÿþûÿ
üüùùr¤   )&ÚnumpyrJ   r%   Zpandas._libsr   Zpandasr'   r   r   Zpandas._testingZ_testingr,   r&   Zparametrizeru   rM   r¡   r4   r@   rO   rS   rW   rh   ro   rt   rx   rf   re   r|   r„   r†   r‰   r�   rŽ   r�   r•   r™   r¤   r2   r2   r2   r3   Ú<module>   s€    ÿ"&þðþ
"  ûþ

þþ
