o
    _~#gF                     @   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/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/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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)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isnanfillnainfr   rankdatar6   arangerepeatr=   copyr	   ilocr   arrayrandomdefault_rngpermutationlen)selfdatetime_seriessp_stats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)r8          @      @r2   r9   rA   )rA   r9   r2   rf   re   r8   )r   secondthirdfourthfifthsixthT)
categoriesorderedF	ascending)re   r2   rA   rf   r8   r9   )r   r   r   r   r   r   r   rg   rh   ri   rj   rk   )r   rg   rh   ri   rj   rk   seventh)re   rf   r2   r9   rA   r   r8   )r8   re   rf   r2   r9   rA   r   r8   re   rf   r2   r9   rA   top)	na_optionbottomkeep)r   rA   r9   r2   rf   re   r8   )rA   r9   r2   rf   re   r8   r   )rr   ro   z3na_option must be one of 'keep', 'top', or 'bottom'matchbad)r   rg   rh   ri   )皙?333333?皙?r8   皙?r{   rx   ry   rz   r8         ?      ?      ?)rr   r;   )r   rG   r
   rH   rI   rF   r   r   rD   raises
ValueError)rW   r^   exp_descrm   	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 Seriesru   )r   rF   rD   r   r   )rW   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   )rW   r   r%   r/   r   r^   resultr   r   r   test_rank_tie_methods   s   z$TestSeriesRank.test_rank_tie_methodsro   TFr   r   r   r   r   r   rr   )rq   rs   rt   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 )N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   rq   r   r   r   rs   rB   )r   rr   ro   )rD   rE   r   r   r   listr   from_iterablerF   rH   rI   )rW   r   rr   ro   r/   na_valuepos_infneg_inf	exp_dtypechunkin_arrr_   	exp_ranksrZ   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      Frn   r   r   r   r'   r>   )r   r   r   rL   rF   rH   rI   )rW   r_   r   r^   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 )Nr1   r   r   c                    s   g | ]} |d  qS r    r   .0i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    )r6   r   r   ordinalr'   )rD   rE   r   rS   rT   standard_normalconcatenaterangeshufflerV   r   rF   rM   rG   rH   rI   )rW   r   opvaluerY   r6   valsr5   r   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   rB   )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   )rW   r/   r   r^   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   Frn   r   )r   ro   )dropnarG   rF   r   rH   rI   )
rW   r   r%   r/   r   _r   r   r   res2r   r   r   test_rank_descendingb  s   

z#TestSeriesRank.test_rank_descendingc                 C   sF   |\}}|  d}|j|d}t|  }|j|_t|| d S )Ni8r   )r   rG   rF   r   r6   rH   rI   )rW   r   r%   r   r^   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    Trn   F)r   r   r   rG   r&   rF   )rW   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   rP   rF   rH   rI   )rW   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   r   r   r   r   r   )r   r   rF   r   r   rH   rI   )rW   r   r   r   r   r   r   test_rank_ea_small_values  s   z(TestSeriesRank.test_rank_ea_small_values) __name__
__module____qualname__rd   r   r   rD   markparametrizer&   r   r   r   r   r   rL   r   r"   td
skip_if_nor   r   operatoraddmulr   r   r   r   r   r   r   r   r   r   r   r0   9   sh    [X
"



	
r0   r   r8   r~   r   )UUUUUU?UUUUUU?r8   )r   r   r   )r~   r8   r8   r   )r8   r   r   r   )r   r   r8   r8   r   )r   r   r   r   r   r   )r   r   r   r   r8   r8   r   r|   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   )r{   r{   rz   rz   ry   )UUUUUU?r   r~   r~   竪?r   c                 C   r   )Nr   Tr   r   r   r   r   r   test_rank_min_pct  r   r   )r   r8   r8   )rx   rx   r8   r8   ry   c                 C   r   )Nr   Tr   r   r   r   r   r   test_rank_max_pct  r   r   r   )r   r   r   )333333?r   ?r   ry   )r}   r}   竪?r   UUUUUU?r   c                 C   r   )Nr   Tr   r   r   r   r   r   test_rank_average_pct  r   r   )r{   rx   rz   r8   ry   )r   r   r~   r   r   r8   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   rN   rF   r   )r   r   r   r   r   test_pct_max_many_rows  s   r   )*	itertoolsr   r   numpyr   rD   pandas._libs.algosr   r   pandas.util._test_decoratorsutil_test_decoratorsr   pandasr   r   r   r   r	   pandas._testing_testingrH   pandas.api.typesr
   fixturer   rR   r   r%   r"   r   r/   r0   r   r   r   r   r   r   r   
single_cpur   r   r   r   r   <module>   s    
$$$$$
	
  b









