o
    dA                     @   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"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d/g d0g d1g d2gfd3g d,g d4g d5gfd6g d7g d8g d9gfd:g d0g d;g d5gfgd<d= Zejjd>d? Zejd@ej dAdBdCdDdEd&dFdGdHddIejgdJfej dAdBdCdDdKd&dFdGdHddIejgdLfe ej!j"dddMe ej!j#gdNfe ej$j"dOd&ddPdQdRe ej$j#gdSfe% dTdUdVdWdXe& gdYfe'dZdde'dZdde'dZddgd[fgd\d] Z(d^d_ Z)d`da Z*ejdbdcddg defdcdfg dgfdhddg difdhdfg djfgdkdl Z+ejdbdhddg dmfdhdfg dmfdcddg dnfdcdfg dnfgdodp Z,ejdqg drg dsdtedug dvifdwg driee-dg dxfgdydz 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!   i/var/www/html/visualizacion-main/env/lib/python3.10/site-packages/pandas/tests/frame/methods/test_rank.pymethod"   s   zTestRank.methodc                 C   sL  dd l }ddl m} tj|jd d ddf< tj|jd d ddf< tj|jd d ddf< tj|jd d d	d
f< | }|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   r   Cr   Dr	   (   )size)
   r   )scipy.statsr%   npnanloc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
         ?      @       @rK   r	   Tpctr   rL   )bca)rQ   rP   rO   rL   rK   rJ   Fnumeric_only)rL   r   rJ   )r	   r   r   rO   rQ   rJ   )rJ   rJ   rL     r   r   i  r
   )rT   	ascendingrL   rJ   rK   )#B;rX   r*   gDcLg_QPgKH9)r   rJ   r   g      @g      @r   rL   )r   r/   r5   r<   r,   r-   r   )r   rE   expectedrF   datarG   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,   r7   randncopyr/   r5   r<   r   rE   rZ   rF   r!   r!   r"   test_rank_does_not_mutate~   s
   z"TestRank.test_rank_does_not_mutatec                 C   sh   t  |d< tddd|d< |jdd tjtdd |jdd	 W d    d S 1 s-w   Y  d S )
Nr   r	   )dayssecondsr   FrS   z"not supported between instances ofmatchaxis)r   nowr   r/   pytestraises	TypeError)r   float_string_framer!   r!   r"   test_rank_mixed_frame   s   "zTestRank.test_rank_mixed_framec                 C   s  dd l }ddl m} tj|jd d ddf< tj|jd d ddf< tj|jd d ddf< tj|jd d d	d
f< |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 sPw   Y  tjt|d |jddd W d    d S 1 spw   Y  d S )Nr   r$   r   r   r
   r   r   r&   r   r'   bottom)	na_optionr	   topF)rq   rV   z3na_option must be one of 'keep', 'top', or 'bottom'rf   badT)r+   r%   r,   r-   r.   r/   r2   r3   r1   r4   r5   r6   r   to_dictTassert_numpy_array_equalrk   rl   
ValueError)r   r=   r>   r%   r?   r@   rB   rC   rD   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   rh   indexcolumns)r   r5   r<   r/   )r   rE   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   )ri   r#   r   ordinalr]   )r+   r%   r,   r7   r8   rangeshaper   r/   r4   r:   r]   r5   r<   )r   r>   r%   xscolsvalsrE   axmrF   sprankrZ   r!   r!   r"   test_rank_methods_frame   s&   z TestRank.test_rank_methods_framer_   )Of8i8c                 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)rV   )r#   r   T)r#   rV   rT   )rE   dropnar:   r/   r   r5   r<   )r   r#   r_   rE   resrZ   res2res3r!   r!   r"   test_rank_descending   s   zTestRank.test_rank_descendingri   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#   ri   )r   ru   r/   r5   r<   )rE   rZ   r#   ri   exp_dfrF   r!   r!   r"   _check2d  s   z3TestRank.test_rank_2d_tie_methods.<locals>._check2dr   )r   r   )rE   r:   results)r   r#   ri   r_   rE   r   framer!   r!   r"   test_rank_2d_tie_methods  s   

z!TestRank.test_rank_2d_tie_methodsz
method,expr   )rJ   rJ   rJ   )rJ         ?UUUUUU?)rJ   r   UUUUUU?r   )r   rJ   rJ   )r   r   r   )r   r   r   r   )rJ   r   r   )rJ   r   r   r   )r   rJ   rJ   )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#   rN   )r   r/   r5   r<   )r   r#   rG   rE   rF   rZ   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   TrM   r	   )r   r,   aranger/   r   all)r   rE   rF   r!   r!   r"   test_pct_max_many_rowsF  s
   zTestRank.test_pct_max_many_rowszcontents,dtypeir   g#Bǻg}gJzgWw'&l7rX   g|=r(   r]   gj7֖float32r   uint8ii'  i g    _Bint641r   BABar&   objectrU   
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]   rJ   r   )r,   r-   r   arrayr   lenr7   choiceinsertpermutationr/   r5   assert_equal)r   contentsr_   frame_or_seriesdtype_na_mapr1   	exp_orderna_valuenan_indicesrandom_orderobjrZ   rF   r!   r!   r"   test_rank_inf_and_nanO  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   )r[   r|   r_   r   r   )r,   r-   r3   r   r/   ra   r5   r<   )r   r|   r   r   rE   	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 )NrQ   r   rJ   rL   rK   )r   r,   r3   r/   r5   r<   rb   r!   r!   r"   test_rank_both_inf  s   zTestRank.test_rank_both_infzna_option,ascending,expectedrr   T)rK   rJ   rL   FrW   rp   rR   rI   c                 C   s>   |t jt jt j g}|j|||d}||}t|| d S )Nr#   rq   rV   )r,   r3   r-   r/   r5   r   )r   r   r#   rq   rV   rZ   r   rF   r!   r!   r"   test_rank_inf_nans_na_option  s   z%TestRank.test_rank_inf_nans_na_option)rJ   rL         @rK   )rL   rK   rJ   r   c                 C   s4   |g d}|j d||d}||}t|| d S )N)foor   Nr   r   r   )r/   r5   r   )r   r   rq   rV   rZ   r   rF   r!   r!   r"   test_rank_object_first  s   
zTestRank.test_rank_object_firstzdata,expected)r	   r   rQ   )r   r   r   )rQ   rO   rO   r   rQ   )r|   r}   c                 C   sZ   t |}tjtdd |  W d    n1 sw   Y  |jdd}t|| d S )Nz&'<' not supported between instances ofrf   TrS   )r   rk   rl   rm   r/   r5   r<   )r   r[   rZ   rE   rF   r!   r!   r"   test_rank_mixed_axis_zero  s   
z"TestRank.test_rank_mixed_axis_zero)/__name__
__module____qualname__r   r,   r-   sr   rE   r   r   rk   fixturer#   tdskip_if_no_scipyrH   r\   rc   ro   r{   r~   r   markparametrizer   r   r   r   
single_cpur   r3   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,   rk   pandas._libs.algosr   r   pandas.util._test_decoratorsutil_test_decoratorsr   pandasr   r   pandas._testing_testingr5   r   r!   r!   r!   r"   <module>   s    