o
    i]B                     @   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 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G dd dZejdg d 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 d(g d)fg d*g d+fg d,g d-fg d.g d/fg	d0d1 Zejdg d 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 d2fg d(g d)fg d*g d3fg d,g d4fg d.g d/fg	d5d6 Z ejdg d 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 d7fg d(g d)fg d*g d8fg d,g d-fg d.g d/fg	d9d: Z!ejdg d 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 d(g d)fg d*g d=fg d,g d>fg d.g d/fg	d?d@ Z"ejddAdBg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 d(g d)fg d*g dCfg d,g dDfg d.g d/fg	dEdF Z#ejj$dGdH Z%dS )I    )chainN)InfinityNegInfinity)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   `/var/www/edux/Edux_v2/venv/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   s   | j S N)param)requestr   r   r   results   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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g d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ej	
dg dd,d- Zd.d/ Zd0d1 Zd2d3 ZdS )4TestSeriesRankc                 C   s"  ddl m} tj|d d 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|	| 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 }tj|d< |d }|jdd}	t|	| tdd
d}
tt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)\(?g@_)?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]dtype)ig#Bǻg}gJzr   gWw'&l7r1   g|=r   (   float64)scipy.statsr$   r   r   rankastypetmassert_series_equalisnanfillnainfr   r)   arangerepeatfloatcopyr   ilocr   arrayrandompermutationlen)selfdatetime_seriesr$   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)r+          @      @r%   r,   r2   )r2   r,   r%   rW   rV   r+   )r   secondthirdfourthfifthsixthT)
categoriesorderedF	ascending)rV   r%   r2   rW   r+   r,   )r
   r   r   r   r   r   r   rX   rY   rZ   r[   r\   )r   rX   rY   rZ   r[   r\   seventh)rV   rW   r%   r,   r2   r   r+   )r+   rV   rW   r%   r,   r2   r   r+   rV   rW   r%   r,   r2   top)	na_optionbottomkeep)r   r2   r,   r%   rW   rV   r+   )r2   r,   r%   rW   rV   r+   r   )rc   r`   z3na_option must be one of 'keep', 'top', or 'bottom'matchbad)r   rX   rY   rZ   )皙?333333?皙?r+   皙?rl   ri   rj   rk   r+         ?      ?      ?)rc   r.   )r   r:   r	   r;   r<   r9   r   NaNpytestraises
ValueError)rI   rO   exp_descr^   	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 Seriesrf   )r   r9   rr   rs   rt   )rI   sr   r   r   r   test_rank_signature   s   "z"TestSeriesRank.test_rank_signaturer4   Nc                 C   s>   |\}}|d u r
|n| |}|j|d}t|t| d S )Nr   )r:   r9   r;   r<   r   )rI   r   r!   r4   r   rO   resultr   r   r   test_rank_tie_methods   s   z$TestSeriesRank.test_rank_tie_methodsr`   TFr   r   r   r   r   r   rc   )rb   rd   re   z!dtype, na_value, pos_inf, neg_infobjectr7   c                 C   sF  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r`|d |d |d g}n|dkrp|d |d |d g}n|d tjg| |d g}|r|n|d d d }tt|}|
j|||d}t|t |dd d S )Nr   r3   )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   rb   r
   r   r   rd   r5   )r   rc   r`   r7   )	r   r   r   listr   from_iterabler9   r;   r<   )rI   r   rc   r`   r4   na_valuepos_infneg_infchunkin_arrrP   	exp_ranksrK   orderexpectedr   r   r   r   "test_rank_tie_methods_on_infs_nans   s&   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
      Fr_   r   r   r   r7   r3   )r   r   r   r?   r9   r;   r<   )rI   rP   r   rO   r   r   r   test_rank_desc_mix_nans_infs  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   r#   r   c                    s   g | ]} |d  qS r   r   .0ixsr   r   
<listcomp>#  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   &  s    )r)   r   r   ordinalr7   )r8   r$   r   rF   randnconcatenaterangeshufflerH   r   r9   r:   r;   r<   )rI   r   opvaluer$   r)   valsr(   r   sprankr   r   r   r   test_rank_methods_series  s    
z'TestSeriesRank.test_rank_methods_seriesr'   f8i8ser, expr
   r   r   r   r   r
   )r   r   r
   r
   r
   r   r   r   )r
   r
   r   r   r   r5   )r
   r   r   r   r   c                 C   s:   t ||}|jdd}t ||j}t|| d S )Nr   r   r   r:   r9   r4   r;   r<   )rI   r4   r   rO   r   r   r   r   r   r   test_rank_dense_method.  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   Fr_   r   )r   r`   )dropnar:   r9   r   r;   r<   )
rI   r   r!   r4   r   _r   rx   r   res2r   r   r   test_rank_descendingB  s   

z#TestSeriesRank.test_rank_descendingc                 C   sF   |\}}|  d}|j|d}t|  }|j|_t|| d S )Nr   r   )r   r:   r9   r   r)   r;   r<   )rI   r   r!   r   rO   r   r   r   r   r   r   test_rank_intR  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    Tr_   F)r   r   r   r:   r   r9   )rI   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   rC   r9   r;   r<   )rI   r   r   r   r   r   r   test_rank_modify_inplaceb  s
   z'TestSeriesRank.test_rank_modify_inplace)__name__
__module____qualname__tdskip_if_no_scipyrU   r   r   rr   markparametrizer   r   r   r   r   r   r?   r   r   operatoraddmulr   r   r   r   r   r   r   r   r   r   r"   )   s`    
WX




	r"   r4   r   r   r+   ro   r   )UUUUUU?UUUUUU?r+   )r
   r   r   )ro   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   rm   c                 C   <   t || }|jddd}t ||j}t|| d S )Nr   Tr   r.   r   r4   r   rO   r   r   r   r   r   r   test_rank_dense_pctp     r   )r   r   r   )rl   rl   rk   rk   rj   )UUUUUU?r   ro   ro   竪?r   c                 C   r   )Nr   Tr   r   r   r   r   r   test_rank_min_pct  r   r   )r   r+   r+   )ri   ri   r+   r+   rj   c                 C   r   )Nr   Tr   r   r   r   r   r   test_rank_max_pct  r   r   rp   )r   r   r   )333333?r   ?r   rj   )rn   rn   竪?r   UUUUUU?r   c                 C   r   )Nr   Tr   r   r   r   r   r   test_rank_average_pct  r   r   r   r   )rl   ri   rk   r+   rj   )r   r   ro   r   r   r+   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   r@   r9   r   )r   r   r   r   r   test_pct_max_many_rows  s   r   )&	itertoolsr   r   numpyr   rr   pandas._libs.algosr   r   pandas.util._test_decoratorsutil_test_decoratorsr   pandasr   r   r   r   pandas._testing_testingr;   pandas.api.typesr	   fixturer   rE   r   r!   r"   r   r   r   r   r   r   r   
single_cpur   r   r   r   r   <module>   s    
$$$$$
	  I




