o
    d+E                     @   s  d dl mZ d dl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mZmZmZ d dlmZ d dlmZ ejdd Zejded	d
ddejdd	dejd
g
gdeddddejdddejdg
gdeddddejdddejdg
gdeddddejdddejdg
gdeddddejdddejdg
ggddd Zejdddd d!ejd"ed#d$ejd%ed#d$gdd&d' ZG d(d) d)Z ej!"d*dgd+gfddgd,d+gfddgd+d+gfg d-g d.fg d/g d0fg d1g d2fg d3g d4fg d5g d6fg d7g d8fg	d9d: Z#ej!"d*dgd+gfddgd,d+gfddgd,d,gfg d-g d.fg d/g d;fg d1g d2fg d3g d<fg d5g d=fg d7g d8fg	d>d? Z$ej!"d*dgd+gfddgd,d+gfddgd+d+gfg d-g d.fg d/g d@fg d1g d2fg d3g dAfg d5g d6fg d7g d8fg	dBdC Z%ej!"d*dgd+gfddgd,d+gfddgdDdDgfg d-g d.fg d/g dEfg d1g d2fg d3g dFfg d5g dGfg d7g d8fg	dHdI Z&ej!"d*dgd+gfddgd,d+gfddgd,d+gfg d-g d.fg d/g d.fg d1g d2fg d3g dJfg d5g dKfg d7g d8fg	dLdM Z'ej!j(dNdO Z)dS )P    )chainN)InfinityNegInfinity)NANaTSeries	Timestamp
date_range)CategoricalDtypec                   C   s    t ddddtjdddtjdg
S )N               )r   npnan r   r   j/var/www/html/visualizacion-main/env/lib/python3.10/site-packages/pandas/tests/series/methods/test_rank.pyser   s    r   averageg      ?g      @      @g      @g       @minr   r      r      maxr      r   firstdense)paramsc                 C      | j S Nparamrequestr   r   r   results   s   
r%   objectfloat64int64Float64Int64float64[pyarrow]pyarrowmarkszint64[pyarrow]c                 C   r   r    r!   r#   r   r   r   dtype*   s   r/   c                   @   s  e Zd Zejdd Zdd Zdd Zej	
ddegd	d
 Zejej	
dddgej	
dg dej	
dg dej	
ddde e fdejejej fdeejej fejdeejej eddgdd Zdd Zejej	
dg dej	
dejdgejdgejd ggd!d" Zej	
d#d$gd$gfd%gd$gfdgd$gfd%d%gd$d$gfg d&g d&fg d'g d(fg d)g d*fg d+g d,fgd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 ZdS )7TestSeriesRankc                 C   s,  ddl m} tj|d d d< d|d dd< | }|d }t|| t|}|	tj
}t|||jdd	}tj||< t|| ttd
d}| }	|t }t|	| ttd
d }|d }|jdd}	t|	| ttdd}ttdd}|jdd}	t|	| |d}tj|d< ttdd}tj|d< |jdd}	t|	| ttd
d }tj|d< |d }|jdd}	t|	| tttjd}| }|jdd}	t|	| ttd
ddd }tj|d< |d }|jdd}	t|	| tdd
d}
ttd
|
ddd }tj|jd< |d }|jdd}	t|	| tg d}tg d}| }	t|	| tdddtgdd}tdddtjg}| }	t|	| tjg ddd}tjt|}t|| }t|d dd}| }	t|	| d S ) Nr   rankdatar         @
   r   Ots)indexnamer         ?      @Tpctr   d   g)\(?floatg@_)?r   r/   z1/1/1990)periods)gJz5g0.++#B;g{Gz?gIf;g?)r   r   r   r   r         @z3 dayz	1 day 10mz-2 dayzm8[ns])ig#Bǻg}gJzr   gWw'&l7rA   g|=r   (   r'   )scipy.statsr2   r   r   rankastypetmassert_series_equalisnanfillnainfr   r7   arangerepeatr>   copyr	   ilocr   arrayrandompermutationlen)selfdatetime_seriesr2   ranksoranksmaskfilledexpiseriesiranksrngvaluesrandom_orderr   r   r   	test_rank:   s   






zTestSeriesRank.test_rankc                 C   s  t g d}t g d}t g dtg ddd}t| | t|jdd| t g dtg ddd}t g d}| }t|| t g d	tg d	d}t g d}| }	t|	| t d
dddddtjgtg dd}
t g d}t g d}t ddddddtjg}t|
jdd| t|
jdd| t|
jdd| t g d}t g d}t ddddddtjg}t|
jddd| t|
jddd| t|
jddd| d }tj	t
|d! |
jd"dd W d    n	1 s	w   Y  tj	t
|d! |
jddd W d    n	1 s(w   Y  t d
dddtjgtg d#d}
t g d$}t g d%}t d&d'd(dtjg}t|
jddd)| t|
jddd)| t|
jddd)| d S )*N)r9          @      @r3   r:   rB   )rB   r:   r3   rc   rb   r9   )r   secondthirdfourthfifthsixthT)
categoriesorderedF	ascending)rb   r3   rB   rc   r9   r:   )r   r   r   r   r   r   r   rd   re   rf   rg   rh   )r   rd   re   rf   rg   rh   seventh)rb   rc   r3   r:   rB   r   r9   )r9   rb   rc   r3   r:   rB   r   r9   rb   rc   r3   r:   rB   top)	na_optionbottomkeep)r   rB   r:   r3   rc   rb   r9   )rB   r:   r3   rc   rb   r9   r   )ro   rl   z3na_option must be one of 'keep', 'top', or 'bottom'matchbad)r   rd   re   rf   )皙?333333?皙?r9   皙?rx   ru   rv   rw   r9         ?      ?      ?)ro   r<   )r   rG   r
   rH   rI   rF   r   NaNpytestraises
ValueError)rU   r[   exp_descrj   	unorderedexp_unorderedres
unordered1exp_unordered1res1na_serexp_topexp_botexp_keepmsgr   r   r   test_rank_categorical   s   	z$TestSeriesRank.test_rank_categoricalc                 C   sZ   t ddg}|jdd d}tjt|d |d W d    d S 1 s&w   Y  d S )Nr   r   r   methodz,No axis named average for object type Seriesrr   )r   rF   r~   r   r   )rU   sr   r   r   r   test_rank_signature   s   "z"TestSeriesRank.test_rank_signaturer/   Nc                 C   s>   |\}}|d u r
|n| |}|j|d}t|t| d S )Nr   )rG   rF   rH   rI   r   )rU   r   r%   r/   r   r[   resultr   r   r   test_rank_tie_methods   s   z$TestSeriesRank.test_rank_tie_methodsrl   TFr   r   r   r   r   r   ro   )rn   rp   rq   z!dtype, na_value, pos_inf, neg_infr&   r'   r)   r+   r,   r-   c                 C   sf  |dkr|dkrd}nd}nd}d}	|g|	 |g|	  |g|	  }
t |
|d}g dg dg d	fg d
g dg dfg dg dg dfg dg dg dfg d
g dg dfd}|| }|dkrp|d |d |d g}n|dkr|d |d |d g}n|d tjg|	 |d g}|r|n|d d d }tt|}|j|||d}t|t ||d d S )Nr+   r   zuint64[pyarrow]r'   r   r?   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )	   r   r   r   r   r   )r   r   r   )r   r   r   r   rn   r   r   r   rp   rC   )r   ro   rl   )	r   r   r   listr   from_iterablerF   rH   rI   )rU   r   ro   rl   r/   na_valuepos_infneg_inf	exp_dtypechunkin_arrr\   	exp_ranksrW   orderexpectedr   r   r   r   "test_rank_tie_methods_on_infs_nans   s0   z1TestSeriesRank.test_rank_tie_methods_on_infs_nansc                 C   sN   t dtjtjtj dg}|jdd}t dtjdddgdd	}t|| d S )
Nr      Frk   r   r   r   r'   r?   )r   r   r   rL   rF   rH   rI   )rU   r\   r   r[   r   r   r   test_rank_desc_mix_nans_infs0  s   z+TestSeriesRank.test_rank_desc_mix_nans_infsz	op, valuer   g    .Agư>c                    s   ddl m} tjd t fddtdddD  tj  dd tt D }| |}t	||d}|j
|d	}|||d
krF|nd}	t	|	|dd}
t||
 d S )Nr   r1   r   c                    s   g | ]} |d  qS r    r   .0ixsr   r   
<listcomp>F  s    z;TestSeriesRank.test_rank_methods_series.<locals>.<listcomp>r   c                 S   s   g | ]
}t td | qS )a)chrordr   r   r   r   r   I  s    )r7   r   r   ordinalr'   )rE   r2   r   rR   randnconcatenaterangeshufflerT   r   rF   rG   rH   rI   )rU   r   opvaluer2   r7   valsr6   r   sprankr   r   r   r   test_rank_methods_series8  s    
z'TestSeriesRank.test_rank_methods_seriesser, expr   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   rC   )r   r   r   r   r   c                 C   s:   t ||}|jdd}t ||j}t|| d S )Nr   r   r   rG   rF   r/   rH   rI   )rU   r/   r   r[   r   r   r   r   r   r   test_rank_dense_methodQ  s   z%TestSeriesRank.test_rank_dense_methodc           
      C   s~   |\}}d|v r|  }n||}|jdd}| |  }t|| | | j|d}|j|dd}	t|	| d S )Nr   Frk   r   )r   rl   )dropnarG   rF   r   rH   rI   )
rU   r   r%   r/   r   _r   r   r   res2r   r   r   test_rank_descendingd  s   

z#TestSeriesRank.test_rank_descendingc                 C   sF   |\}}|  d}|j|d}t|  }|j|_t|| d S )Ni8r   )r   rG   rF   r   r7   rH   rI   )rU   r   r%   r   r[   r   r   r   r   r   r   test_rank_ints  s   zTestSeriesRank.test_rank_intc                 C   s@   t tjgd tjdd t tjgd tjdd d S )N    Trk   F)r   r   r   rG   r&   rF   )rU   r   r   r   test_rank_object_bug|  s   "z#TestSeriesRank.test_rank_object_bugc                 C   s4   t tdtg}| }|  |}t|| d S )Nz2017-01-05 10:20:27.569000)r   r   r   rO   rF   rH   rI   )rU   r   r   r   r   r   r   test_rank_modify_inplace  s
   z'TestSeriesRank.test_rank_modify_inplace) __name__
__module____qualname__tdskip_if_no_scipyra   r   r   r~   markparametrizer&   r   r   r   r   r   rL   r   r"   
skip_if_nor   r   operatoraddmulr   r   r   r   r   r   r   r   r   r   r0   9   sl    
[X
!



	r0   r   r9   r{   r   )UUUUUU?UUUUUU?r9   )r   r   r   )r{   r9   r9   r   )r9   r   r   r   )r   r   r9   r9   r   )r   r   r   r   r   r   )r   r   r   r   r9   r9   r   ry   c                 C   <   t || }|jddd}t ||j}t|| d S )Nr   Tr   r<   r   r/   r   r[   r   r   r   r   r   r   test_rank_dense_pct     r   )r   r   r   )rx   rx   rw   rw   rv   )UUUUUU?r   r{   r{   竪?r   c                 C   r   )Nr   Tr   r   r   r   r   r   test_rank_min_pct  r   r   )r   r9   r9   )ru   ru   r9   r9   rv   c                 C   r   )Nr   Tr   r   r   r   r   r   test_rank_max_pct  r   r   r|   )r   r   r   )333333?r   ?r   rv   )rz   rz   竪?r   UUUUUU?r   c                 C   r   )Nr   Tr   r   r   r   r   r   test_rank_average_pct  r   r   )rx   ru   rw   r9   rv   )r   r   r{   r   r   r9   c                 C   r   )Nr   Tr   r   r   r   r   r   test_rank_first_pct  r   r   c                  C   s.   t td} | jdd }|dksJ d S )Ni  Tr;   r   )r   r   rM   rF   r   )r   r   r   r   r   test_pct_max_many_rows  s   r   )*	itertoolsr   r   numpyr   r~   pandas._libs.algosr   r   pandas.util._test_decoratorsutil_test_decoratorsr   pandasr   r   r   r   r	   pandas._testing_testingrH   pandas.api.typesr
   fixturer   rQ   r   r%   r"   r   r/   r0   r   r   r   r   r   r   r   
single_cpur   r   r   r   r   <module>   s    
$$$$$
	
  Z









