o
    թZhF                     @   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   \/var/www/html/lang_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float64Zint64Float64ZInt64float64[pyarrow]pyarrowZmarkszint64[pyarrow]c                 C   r   r    r!   r#   r   r   r   dtype*   s   r,   c                   @   s  e Zd Zdd Zdd Zdd Zejdde	gd	d
 Z
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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d7d8 ZdS )9TestSeriesRankc                 C   s2  t d}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dt|}t|| }t|d
 dd}| }	t|	| d S )Nscipy.statsr         @
   r   Ots)indexnamer         ?      @Tpctr   d   g)\(?floatg@_)?r   r,   z1/1/1990)Z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'&l7r<   g|=r   (   r'   )pytestimportorskipr   r   rankastypetmassert_series_equalisnanZfillnainfr   rankdatar3   arangerepeatr:   copyr	   Zilocr   arrayrandomdefault_rngZpermutationlen)selfZdatetime_seriessp_statsranksZoranksmaskZfilledexpiseriesZiranksrngvaluesZ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)r5          @      @r/   r6   r=   )r=   r6   r/   rZ   rY   r5   )r   secondthirdfourthfifthsixthT)
categoriesorderedF	ascending)rY   r/   r=   rZ   r5   r6   )r   r   r   r   r   r   r   r[   r\   r]   r^   r_   )r   r[   r\   r]   r^   r_   Zseventh)rY   rZ   r/   r6   r=   r   r5   )r5   rY   rZ   r/   r6   r=   r   r5   rY   rZ   r/   r6   r=   top)	na_optionbottomkeep)r   r=   r6   r/   rZ   rY   r5   )r=   r6   r/   rZ   rY   r5   r   )re   rc   z3na_option must be one of 'keep', 'top', or 'bottom'matchbad)r   r[   r\   r]   )皙?333333?皙?r5   皙?rn   rk   rl   rm   r5         ?      ?      ?)re   r8   )r   rC   r
   rD   rE   rB   r   r   r@   raises
ValueError)rP   rT   Zexp_descra   	unorderedZexp_unorderedresZ
unordered1Zexp_unordered1Zres1Zna_serZexp_topZexp_botZ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 Seriesrh   )r   rB   r@   rs   rt   )rP   srw   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 )Nry   )rC   rB   rD   rE   r   )rP   r   r%   r,   rz   rT   resultr   r   r   test_rank_tie_methods   s   z$TestSeriesRank.test_rank_tie_methodsrc   TFrz   r   r   r   r   r   re   )rd   rf   rg   z!dtype, na_value, pos_inf, neg_infr&   r'   r(   r)   r*   r+   c                 C   sp  t d |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ru|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 )NZscipyr)   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   rd   r   r   r   rf   r>   )rz   re   rc   )r@   rA   r   r   r   listr   from_iterablerB   rD   rE   )rP   rz   re   rc   r,   Zna_valueZpos_infZneg_infZ	exp_dtypechunkZin_arrrU   Z	exp_ranksrR   orderexpectedr}   r   r   r   "test_rank_tie_methods_on_infs_nans   s2   
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      Frb   r   r   r   r'   r;   )r   r   r   rG   rB   rD   rE   )rP   rU   r}   rT   r   r   r   test_rank_desc_mix_nans_infs/  s   z+TestSeriesRank.test_rank_desc_mix_nans_infsz	op, valuer   g    .Agư>c                    s   t d}tjdd t fddtdddD  tjd  dd tt	 D }| |}t
||d}|j|d	}|||d
krL|nd}	t
|	|dd}
t||
 d S )Nr.   r   r   c                    s   g | ]} |d  qS r    r   .0iZxsr   r   
<listcomp>D  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   G  s    )r3   ry   r   Zordinalr'   )r@   rA   r   rM   rN   Zstandard_normalZconcatenaterangeshufflerO   r   rB   rH   rC   rD   rE   )rP   rz   opvaluerQ   r3   valsr2   r}   Zsprankr   r   r   r   test_rank_methods_series7  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   r>   )r   r   r   r   r   c                 C   s:   t ||}|jdd}t ||j}t|| d S )Nr   ry   r   rC   rB   r,   rD   rE   )rP   r,   r   rT   r{   r}   r   r   r   r   test_rank_dense_methodO  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   Frb   ry   )rz   rc   )dropnarC   rB   r   rD   rE   )
rP   r   r%   r,   rz   _r{   rv   r   Zres2r   r   r   test_rank_descendingb  s   

z#TestSeriesRank.test_rank_descendingc                 C   sF   |\}}|  d}|j|d}t|  }|j|_t|| d S )Ni8ry   )r   rC   rB   r   r3   rD   rE   )rP   r   r%   rz   rT   r{   r}   r   r   r   r   test_rank_intq  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    Trb   F)r   r   r   rC   r&   rB   )rP   r   r   r   test_rank_object_bugz  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   rK   rB   rD   rE   )rP   r{   r   r}   r   r   r   test_rank_modify_inplace  s
   z'TestSeriesRank.test_rank_modify_inplacec                 C   sF   t dddtdgdd}|jdd}t d	d
dtjdg}t|| d S )Ng*"Fg3!ǻg{Q :g1A;-:r(   r;   r   ry   r   r   r   r   )r   r   rB   r   r   rD   rE   )rP   r   r}   r   r   r   r   test_rank_ea_small_values  s   z(TestSeriesRank.test_rank_ea_small_values) __name__
__module____qualname__rX   rx   r|   r@   markparametrizer&   r~   r   r   r   r   rG   r   r"   td
skip_if_nor   r   operatoraddmulr   r   r   r   r   r   r   r   r   r   r   r-   9   sh    [X
"



	
r-   r   r5   rq   r   )UUUUUU?UUUUUU?r5   )r   r   r   )rq   r5   r5   r   )r5   r   r   r   )r   r   r5   r5   r   )r   r   r   r   r   r   )r   r   r   r   r5   r5   r   ro   c                 C   <   t || }|jddd}t ||j}t|| d S )Nr   Trz   r8   r   r,   r   rT   r{   r}   r   r   r   r   test_rank_dense_pct     r   )r   r   r   )rn   rn   rm   rm   rl   )UUUUUU?r   rq   rq   竪?r   c                 C   r   )Nr   Tr   r   r   r   r   r   test_rank_min_pct  r   r   )r   r5   r5   )rk   rk   r5   r5   rl   c                 C   r   )Nr   Tr   r   r   r   r   r   test_rank_max_pct  r   r   rr   )r   r   r   )333333?r   ?r   rl   )rp   rp   竪?r   UUUUUU?r   c                 C   r   )Nr   Tr   r   r   r   r   r   test_rank_average_pct  r   r   )rn   rk   rm   r5   rl   )r   r   rq   r   r   r5   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  Tr7   r   )r   r   rI   rB   r   )r{   r}   r   r   r   test_pct_max_many_rows  s   r   )*	itertoolsr   r   numpyr   r@   Zpandas._libs.algosr   r   Zpandas.util._test_decoratorsutilZ_test_decoratorsr   Zpandasr   r   r   r   r	   Zpandas._testingZ_testingrD   Zpandas.api.typesr
   Zfixturer   rL   r   r%   r"   r   r,   r-   r   r   r   r   r   r   r   Z
single_cpur   r   r   r   r   <module>   s    
$$$$$
	
  b









