o
    5cB                     @   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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{ Z/d(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!   Z/var/www/html/gps/gps/lib/python3.10/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randint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
         ?      @       @rJ   r	   Tpctr   rK   )bca)rP   rO   rN   rK   rJ   rI   Fnumeric_only)rK   r   rI   )r	   r   r   rN   rP   rI   )rI   rI   rK     r   r   i  r
   )rS   	ascendingrK   rI   rJ   )#B;rW   r*   gDcLg_QPgKH9)r   rI   r   g      @g      @r   rK   )r   r.   r4   r;   r,   r-   r   )r   rD   expectedrE   datarF   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   randncopyr.   r4   r;   r   rD   rY   rE   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 s&w   Y  tjtdd |d}W d    n1 sBw   Y  |jdd	d}t|| d S )
Nr   r	   )dayssecondsr   znumeric_only=NonematchrR   zDropping of nuisanceT)r   nowr   r4   assert_produces_warningFutureWarningr.   r;   )r   float_string_framerE   rY   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 sLw   Y  tjt|d |jddd W d    d S 1 slw   Y  d S )Nr   r$   r   r   r   r
   r&   r   r'   r   bottom)	na_optionr	   topF)rm   rU   z3na_option must be one of 'keep', 'top', or 'bottom're   badT)r+   r%   r,   r-   r.   r1   r2   r0   r3   r4   r5   r   to_dictTassert_numpy_array_equalpytestraises
ValueError)r   r<   r=   r%   r>   r?   rA   rB   rC   fval0fval1msgr!   r!   r"   test_rank_na_option   s^   $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   rD   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 ]<}t||d}dD ]1}dD ],}|j||d}	t	||||dkrO|nd}
|

tj}
t|
|d
d}t|	| q;q7q-d S )Nr   r$      )d      g      $@c                 S   s   g | ]
}t td | qS )z)chrord).0ir!   r!   r"   
<listcomp>   s    z4TestRank.test_rank_methods_frame.<locals>.<listcomp>r	   g    .Agư>)r|   )r   r	   r   )rz   r#   r   ordinalr\   )r+   r%   r,   r6   r7   rangeshaper   r.   r3   r9   r\   r4   r;   )r   r=   r%   xscolsvalsrD   axmrE   sprankrY   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rC|j|ddd}t|| |j|ddd}t|| d S )Nr   F)rU   )r#   r   T)r#   rU   rS   )rD   dropnar9   r.   r   r4   r;   )r   r#   r^   rD   resrY   res2res3r!   r!   r"   test_rank_descending   s   zTestRank.test_rank_descendingrz   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#   rz   )r   rq   r.   r4   r;   )rD   rY   r#   rz   exp_dfrE   r!   r!   r"   _check2d  s   z3TestRank.test_rank_2d_tie_methods.<locals>._check2dr   )r   r   )rD   r9   results)r   r#   rz   r^   rD   r   framer!   r!   r"   test_rank_2d_tie_methods  s   

z!TestRank.test_rank_2d_tie_methodsz
method,expr   )rI   rI   rI   )rI         ?UUUUUU?)rI   r   UUUUUU?r   )r   rI   rI   )r   r   r   )r   r   r   r   )rI   r   r   )rI   r   r   r   )r   rI   rI   )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#   rM   )r   r.   r4   r;   )r   r#   rF   rD   rE   rY   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   TrL   r	   )r   r,   aranger.   r   all)r   rD   rE   r!   r!   r"   test_pct_max_many_rowsJ  s
   zTestRank.test_pct_max_many_rowszcontents,dtypeir   g#Bǻg}gJzgWw'&l7rW   g|=r(   r\   gj7֖float32r   uint8ii'  i g    _Bint641r   BABar&   objectrT   
datetime64c                 C   s   t jt jd t dd}t j||d}t jtt|ddd }||v rB|| }t jtt|d}t |||}t ||t j}t j	t|}	|||	 }
|||	 dd}|

 }t|| d S )Nnat)r\   r   r   r   r]   r\   rI   r   )r,   r-   r   arrayr   lenr6   choiceinsertpermutationr.   r4   assert_equal)r   contentsr^   frame_or_seriesdtype_na_mapr0   	exp_orderna_valuenan_indicesrandom_orderobjrY   rE   r!   r!   r"   test_rank_inf_and_nanS  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   )rZ   r{   r^   r   r   )r,   r-   r2   r   r.   r`   r4   r;   )r   r{   r   r   rD   	df_result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 )NrP   r   rI   rK   rJ   )r   r,   r2   r.   r4   r;   ra   r!   r!   r"   test_rank_both_inf  s   zTestRank.test_rank_both_infzna_option,ascending,expectedrn   T)rJ   rI   rK   FrV   rl   rQ   rH   c                 C   s>   |t jt jt j g}|j|||d}||}t|| d S )Nr#   rm   rU   )r,   r2   r-   r.   r4   r   )r   r   r#   rm   rU   rY   r   rE   r!   r!   r"   test_rank_inf_nans_na_option  s   z%TestRank.test_rank_inf_nans_na_option)rI   rK         @rJ   )rK   rJ   rI   r   c                 C   s4   |g d}|j d||d}||}t|| d S )N)foor   Nr   r   r   )r.   r4   r   )r   r   rm   rU   rY   r   rE   r!   r!   r"   test_rank_object_first  s   
zTestRank.test_rank_object_firstzdata,expected)r	   r   rP   )r   r   r   )rP   rN   rN   r   rP   )r{   c                 C   sR   t |}d}tjt|d | }W d    n1 sw   Y  t|| d S )NzDropping of nuisance columnsre   )r   r4   rh   ri   r.   r;   )r   rZ   rY   rD   rx   rE   r!   r!   r"   test_rank_mixed_axis_zero  s   
z"TestRank.test_rank_mixed_axis_zero)0__name__
__module____qualname__r   r,   r-   sr   rD   r   r   rs   fixturer#   tdskip_if_no_scipyrG   r[   rb   rk   ry   r}   r   markparametrizefilterwarningsr   r   r   r   
single_cpur   r2   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,   rs   pandas._libs.algosr   r   pandas.util._test_decoratorsutil_test_decoratorsr   pandasr   r   pandas._testing_testingr4   r   r!   r!   r!   r"   <module>   s    