a
    oÝEb¥B  ã                   @   sp   d dl m Z mZ d dlZd dlZd dlmZmZ d dlm	  m
Z d dlmZmZ d dlmZ G dd„ dƒZdS )é    )ÚdatetimeÚ	timedeltaN)ÚInfinityÚNegInfinity)Ú	DataFrameÚSeriesc                   @   s  e Zd Zeddddejdddejdg
ƒZeeedœƒZe 	ddd	d
ejd
ddejdg
¡e 	ddddejdddejdg
¡e 	ddddejdddejdg
¡e 	ddddejdddejdg
¡e 	ddddejdddejdg
¡dœZ
ejg d¢d�dd„ ƒZejdd„ ƒZdd„ Zdd„ Zdd„ Zejdd„ ƒZdd„ Zejdd „ ƒZej d!g d"¢¡ej d#¡d$d%„ ƒƒZej d&d'dg¡ej d!d(eg¡d)d*„ ƒƒZej d+d,g d-¢g d.¢g d/¢gfd0g d1¢g d2¢g d3¢gfd4g d-¢g d5¢g d6¢gfd7g d8¢g d9¢g d:¢gfd;g d1¢g d<¢g d6¢gfg¡d=d>„ ƒZejjejjd?d@„ ƒƒZ ej dAej! dBdCdDdEdFd'dGdHdIddJej!gdKfej! dBdCdDdEdLd'dGdHdIddJej!gdMfe "ej#¡j$dddNe "ej#¡j%gdOfe "ej&¡j$dPd'ddQdRdSe "ej&¡j%gdTfe'ƒ dUdVdWdXdYe(ƒ gdZfe)d[ddƒe)d[ddƒe)d[ddƒgd\fg¡d]d^„ ƒZ*d_d`„ Z+dadb„ Z,ej dcdddeg df¢fdddgg dh¢fdideg dj¢fdidgg dk¢fg¡dldm„ ƒZ-ej dcdideg dn¢fdidgg dn¢fdddeg do¢fdddgg do¢fg¡dpdq„ ƒZ.ej drg ds¢g dt¢duœedvg dw¢iƒfdxg ds¢iee/dƒdy�fg¡dzd{„ ƒZ0d(S )|ÚTestRanké   é   é   é   é   ©ÚAÚBç      ø?g      @ç      @ç      @g       @é   é   é   ©ÚaverageÚminÚmaxÚfirstÚdense)Úparamsc                 C   s   |j S )z5
        Fixture for trying all rank methods
        )Úparam)ÚselfÚrequest© r!   úd/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/pandas/tests/frame/methods/test_rank.pyÚmethod"   s    zTestRank.methodc                 C   sD  dd l }ddl m} tj|d d d d…< tj|d d d d…< tj|d d d d…< tj|d	 d d d
…< | ¡ }| d¡}t |j¡}| tj¡j}t 	|d|¡}tj||< t 	|d|¡}	tj|	|< t
 |j|¡ t
 |j|	¡ ttjjdd
dd� d¡ƒ}
|
 ¡ }|
 t¡ ¡ }t
 ||¡ |
 d¡}|
 t¡ d¡}t
 ||¡ d S )Nr   ©Úrankdatar   r   r   r
   ÚCr   ÚDr   r	   é(   )Úsize)é
   r   )Úscipy.statsr%   ÚnpÚnanÚrankÚisnanÚvaluesÚfillnaÚinfÚapply_along_axisÚtmÚassert_almost_equalr   ÚrandomÚrandintZreshapeÚastypeÚfloatÚassert_frame_equal)r   Úfloat_frameÚscipyr%   Úranks0Úranks1ÚmaskÚfvalsÚexp0Úexp1ÚdfÚresultÚexpr!   r!   r"   Ú	test_rank)   s.    



zTestRank.test_rankc                 C   sP  t g d¢g d¢gƒ}t g d¢g d¢gƒd }|jddd�}t ||¡ t g d¢g d¢gƒ}| d¡d	 }|jddd�}t ||¡ t g d
¢g d¢gƒ}t g d¢g d¢gƒ}|jddd�}t ||¡ t g d¢g d¢gƒ}|jddd�}t ||¡ t dtjdgg d¢gƒ}t d	tjdgg d¢gƒ}|jddd�}t ||¡ t d	tjdgg d¢gƒ}|jddd�}t ||¡ tdddƒtjtdddƒgtdddƒtdddƒtdddƒgg}t |ƒ}t d	tjdgg d¢gƒ}|jdddd�}t ||¡ t dtjd	gg d¢gƒ}|jdddd�}t ||¡ t dg d¢iƒ}t dg d¢iƒ}t | ¡ |¡ d S )N)r	   r
   r   )r	   r   r
   ©ç      ð?ç      @ç       @rI   r	   T©Úpctr   rJ   )ÚbÚcÚa)rO   rN   rM   ©rJ   rI   rH   F©Únumeric_only)rJ   r   rH   )r	   r   r   rM   rO   rH   )rH   rH   rJ   éÑ  r   r   iÐ  r
   )rR   Ú	ascending©rJ   rH   rI   )ç#B’¡œÇ;éûÿÿÿrV   r*   gDóÂääécLg_ûðQïüŠPg ÂëþKH´9)r   rH   r   g      @g      @r   rJ   )r   r.   r4   r:   r,   r-   r   )r   rC   ÚexpectedrD   ÚdatarE   r!   r!   r"   Ú
test_rank2M   sF     þzTestRank.test_rank2c                 C   s:   t tj dd¡dd�}| ¡ }| ¡  |}t ||¡ d S )Nr*   r
   Úfloat64©Údtype)r   r,   r6   ZrandnÚcopyr.   r4   r:   ©r   rC   rX   rD   r!   r!   r"   Útest_rank_does_not_mutate~   s
    z"TestRank.test_rank_does_not_mutatec                 C   s¬   t  ¡ |d< tddd�|d< tjtdd�� |jd d� W d   ƒ n1 sL0    Y  tjtdd�� | d¡}W d   ƒ n1 s„0    Y  |jdd	d�}t ||¡ d S )
Nr   r	   )ÚdaysÚsecondsr   znumeric_only=None©ÚmatchrQ   zDropping of nuisanceT)r   Únowr   r4   Úassert_produces_warningÚFutureWarningr.   r:   )r   Zfloat_string_framerD   rX   r!   r!   r"   Útest_rank_mixed_frame‡   s    *(zTestRank.test_rank_mixed_framec                 C   sä  dd l }ddl m} tj|d d d d…< tj|d d d d…< tj|d d d d…< tj|d	 d d d
…< |jdd�}|jddd�}| tj¡j}t |d|¡}t |d|¡}t	 
|j|¡ t	 
|j|¡ |jdd�}|jddd�}| | ¡ d  ¡ ¡j}	|j}
|
 |
 ¡ d  ¡ ¡j}
|
 tj¡j}
t |d|	¡}t |d|
¡}t	 
|j|¡ t	 
|j|¡ |jddd�}|jdddd�}| tj¡j}t |d| ¡}t |d| ¡}t	 
|j|¡ t	 
|j|¡ |jddd�}|jdddd�}| | ¡ d  ¡ ¡j}	|j}
|
 |
 ¡ d  ¡ ¡j}
|
 tj¡j}
t |d|	 ¡}t |d|
 ¡}t	 |j|¡ t	 |j|¡ d}tjt|d�� |jddd� W d   ƒ n1 �s˜0    Y  tjt|d�� |jddd� W d   ƒ n1 �sÖ0    Y  d S )Nr   r$   r   r   r   r
   r&   r   r'   r   Úbottom)Ú	na_optionr	   ÚtopF)rj   rT   z3na_option must be one of 'keep', 'top', or 'bottom'rc   ÚbadT)r+   r%   r,   r-   r.   r1   r2   r0   r3   r4   r5   r   Úto_dictÚTZassert_numpy_array_equalÚpytestZraisesÚ
ValueError)r   r;   r<   r%   r=   r>   r@   rA   rB   Zfval0Zfval1Úmsgr!   r!   r"   Útest_rank_na_option’   sZ    .zTestRank.test_rank_na_optionc                 C   sP   t ddgddggƒ}t |jdd�|jdd�¡ t |jdd�|jdd�¡ d S )	Nr   r	   r   r
   r   )ÚaxisÚindexÚcolumns)r   r4   r:   r.   )r   rC   r!   r!   r"   Útest_rank_axisà   s    zTestRank.test_rank_axisc              
   C   sØ   dd l }ddl m} tj ddd¡}|d d }dd„ t|jd ƒD ƒ}||d	 |d
 fD ]x}t||d�}dD ]b}dD ]X}|j||d�}	t 	||||dkrž|nd¡}
|
 
tj¡}
t|
|d� 
d¡}t |	|¡ qvqnqZd S )Nr   r$   é   )éd   é   g      $@c                 S   s   g | ]}t td ƒ| ƒ‘qS )Úz)ÚchrÚord)Ú.0Úir!   r!   r"   Ú
<listcomp>í   ó    z4TestRank.test_rank_methods_frame.<locals>.<listcomp>r	   g    €„.Ag�íµ ÷Æ°>)ru   )r   r	   r   )rs   r#   r   Zordinalr[   )r+   r%   r,   r6   r7   ÚrangeÚshaper   r.   r3   r8   r[   r4   r:   )r   r<   r%   ÚxsÚcolsÚvalsrC   ÚaxÚmrD   ZsprankrX   r!   r!   r"   Útest_rank_methods_frameæ   s     ÿz TestRank.test_rank_methods_framer]   )ÚOÚf8Úi8z(ignore:.*Select only valid:FutureWarningc                 C   s¦   d|v r| j  ¡  |¡}n| j  |¡}|jdd�}| ¡ |  ¡ }t ||¡ | ¡ | j|d�}|dkr†|j|ddd�}t ||¡ |j|ddd�}t ||¡ d S )Nr~   F)rT   )r#   r‰   T)r#   rT   rR   )rC   Zdropnar8   r.   r   r4   r:   )r   r#   r]   rC   ÚresrX   Zres2Zres3r!   r!   r"   Útest_rank_descendingü   s    zTestRank.test_rank_descendingrs   r   Nc                 C   s@   | j }ddd„}|d u r|n| |¡}||| j| ||d� d S )Nr   r   c                 S   s@   t ||dœƒ}|dkr"| j} |j}| j||d�}t ||¡ d S )Nr   r	   ©r#   rs   )r   rn   r.   r4   r:   )rC   rX   r#   rs   Zexp_dfrD   r!   r!   r"   Ú_check2d  s    z3TestRank.test_rank_2d_tie_methods.<locals>._check2drŽ   )r   r   )rC   r8   Úresults)r   r#   rs   r]   rC   r�   Úframer!   r!   r"   Útest_rank_2d_tie_methods  s    

z!TestRank.test_rank_2d_tie_methodsz
method,expr   )rH   rH   rH   )rH   ç      à?çUUUUUUå?)rH   r“   çUUUUUUÕ?r   )r•   rH   rH   )r•   r•   r”   )r•   r•   r•   r   )rH   r”   r”   )rH   r”   r•   r   )r”   rH   rH   )r”   r“   r”   )r”   r“   r•   r   )r”   r•   r”   c                 C   s@   t g d¢g d¢g d¢gƒ}|j|dd�}t |ƒ}t ||¡ d S )N)éÜ  éB   r
   )r–   éA   r   )r–   r˜   r	   T)r#   rL   )r   r.   r4   r:   )r   r#   rE   rC   rD   rX   r!   r!   r"   Útest_rank_pct_true#  s    !zTestRank.test_rank_pct_truec                 C   sB   t t d¡t ddd¡dœƒ}|jdd� ¡ }|dk ¡ s>J ‚d S )Ni  r   éÿÿÿÿr   TrK   r	   )r   r,   Zaranger.   r   Úall)r   rC   rD   r!   r!   r"   Útest_pct_max_many_rowsJ  s
    ÿzTestRank.test_pct_max_many_rowszcontents,dtypeiÎÿÿÿrš   g#B’¡œÇ»gÙ}ÚõÐò¾ºg¸ÔJzî�µgœWw'&l¡7rV   g»½×Ùß|Û=r(   r[   g¹j7­Ö–¶Úfloat32rx   Úuint8iœÿÿÿi'  i † g    _ BÚint64Ú1r   ZBAZBar&   ÚobjectrS   Ú
datetime64c                 C   sÈ   t jt jd t  d¡dœ}t j||d�}t jtt|ƒƒdd�d }||v r„|| }t j tt|ƒƒd¡}t  |||¡}t  ||t j¡}t j 	t|ƒ¡}	|||	 ƒ}
|||	 dd�}|
 
¡ }t ||¡ d S )NZnat)r[   r�   r¡   r¢   r\   r[   rH   r   )r,   r-   r¢   Úarrayr�   Úlenr6   ÚchoiceÚinsertZpermutationr.   r4   Úassert_equal)r   Úcontentsr]   Úframe_or_seriesZdtype_na_mapr0   Z	exp_orderZna_valueZnan_indicesZrandom_orderÚobjrX   rD   r!   r!   r"   Útest_rank_inf_and_nanT  s"    >ü
zTestRank.test_rank_inf_and_nanc              
   C   s†   g d¢}g d¢}ddt jdddt jt jdt j g
}t||dœ|dd	�}| ¡ }| ¡ }|d
  ¡ |d
< |d  ¡ |d< t ||¡ d S )N)
r   r   r
   r   r	   r   r   r   é	   r*   )
r   r   r
   r   r   r   r   r	   r   r   r   r   r   r   )Úcol1Úcol2rŠ   )rY   rt   r]   r­   r®   )r,   r-   r2   r   r.   r^   r4   r:   )r   rt   r­   r®   rC   Z	df_resultZseries_resultr!   r!   r"   Ú"test_df_series_inf_nan_consistencyª  s    "þúz+TestRank.test_df_series_inf_nan_consistencyc                 C   s@   t dtj dtjgiƒ}t dg d¢iƒ}| ¡ }t ||¡ d S )NrO   r   ©rH   rJ   rI   )r   r,   r2   r.   r4   r:   r_   r!   r!   r"   Útest_rank_both_inf¿  s    zTestRank.test_rank_both_infzna_option,ascending,expectedrk   T)rI   rH   rJ   FrU   ri   rP   rG   c                 C   s>   |t jt jt j gƒ}|j|||d�}||ƒ}t ||¡ d S )N©r#   rj   rT   )r,   r2   r-   r.   r4   r§   )r   r©   r#   rj   rT   rX   rª   rD   r!   r!   r"   Útest_rank_inf_nans_na_optionÆ  s    z%TestRank.test_rank_inf_nans_na_option)rH   rJ   ç      @rI   )rJ   rI   rH   r´   c                 C   s4   |g d¢ƒ}|j d||d�}||ƒ}t ||¡ d S )N)Úfoorµ   Nrµ   r   r²   )r.   r4   r§   )r   r©   rj   rT   rX   rª   rD   r!   r!   r"   Útest_rank_object_first×  s    
zTestRank.test_rank_object_firstzdata,expected)r	   r   rO   )r   r   r   )rO   rM   rM   r°   rO   )rt   c                 C   sR   t |ƒ}d}tjt|d�� | ¡ }W d   ƒ n1 s80    Y  t ||¡ d S )NzDropping of nuisance columnsrc   )r   r4   rf   rg   r.   r:   )r   rY   rX   rC   rq   rD   r!   r!   r"   Útest_rank_mixed_axis_zeroæ  s
    &z"TestRank.test_rank_mixed_axis_zero)1Ú__name__Ú
__module__Ú__qualname__r   r,   r-   Úsr   rC   r£   r�   ro   Zfixturer#   ÚtdZskip_if_no_scipyrF   rZ   r`   rh   rr   rv   rˆ   ÚmarkZparametrizeÚfilterwarningsr�   r¡   r’   r™   ÚsingleZhigh_memoryrœ   r2   Ziinforž   r   r   rŸ   r   r   r   r«   r¯   r±   r³   r¶   r�   r·   r!   r!   r!   r"   r      s
        û

#1	
M

ýþ	þþýþîþ
	óðóð$ø
õ þÌþ<
üþ	
üþ	
 þþr   )r   r   Únumpyr,   ro   Zpandas._libs.algosr   r   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsr¼   Zpandasr   r   Zpandas._testingZ_testingr4   r   r!   r!   r!   r"   Ú<module>   s   