o
    %jM                     @   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dd Zejdd d!d"d#ejd$ed%d&ejd'ed%d&ejd(ed%d&d)d*g
d+d,d- ZdYd/d0Z G d1d2 d2Z!ej"#d3dgd4gfddgd5d4gfddgd4d4gfg d6g d7fg d8g d9fg d:g d;fg d<g d=fg d>g d?fg d@g dAfg	dBdC Z$ej"#d3dgd4gfddgd5d4gfddgd5d5gfg d6g d7fg d8g dDfg d:g d;fg d<g dEfg d>g dFfg d@g dAfg	dGdH Z%ej"#d3dgd4gfddgd5d4gfddgd4d4gfg d6g d7fg d8g dIfg d:g d;fg d<g dJfg d>g d?fg d@g dAfg	dKdL Z&ej"#d3dgd4gfddgd5d4gfddgdMdMgfg d6g d7fg d8g dNfg d:g d;fg d<g dOfg d>g dPfg d@g dAfg	dQdR Z'ej"#d3dgd4gfddgd5d4gfddgd5d4gfg d6g d7fg d8g d7fg d:g d;fg d<g dSfg d>g dTfg d@g dAfg	dUdV Z(ej"j)dWdX Z*dS )Z    )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   f/var/www/html/Deteccion_Ine/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densec                 C   s   | d S )Nr   r   )xr   r   r   <lambda>%   s    r   )paramsZidsc                 C      | j S Nparamrequestr   r   r   results   s   r'   objectfloat64int64Float64Int64float64[pyarrow]pyarrowZmarksint64[pyarrow]string[pyarrow]zstring[python]str)r    c                 C   r!   r"   r#   r%   r   r   r   dtype+   s   r3   Fc                 C   s8   d}| dv r
d}|S | dv r|dks|rd}|S d}|S )Nr)   )r1   r+   )r-   r0   r   zdouble[pyarrow]uint64[pyarrow]r   )r3   methodpct	exp_dtyper   r   r   expected_dtype=   s   r8   c                   @   s  e Zd Zdd Zdd Zdd Z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.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 ZdS )8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r6   r   d   g)\(?floatg@_)?r   r3   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'&l7rG   g|=r   (   r)   )pytestimportorskipr   r   rankastypetmassert_series_equalisnanZfillnainfr   rankdatar?   arangerepeatrE   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_rankL   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)rA          @      @r;   rB   rH   )rH   rB   r;   re   rd   rA   )r   secondthirdfourthfifthsixthT)
categoriesorderedF	ascending)rd   r;   rH   re   rA   rB   )r   r   r   r   r   r   r   rf   rg   rh   ri   rj   )r   rf   rg   rh   ri   rj   Zseventh)rd   re   r;   rB   rH   r   rA   )rA   rd   re   r;   rB   rH   r   rA   rd   re   r;   rB   rH   top)	na_optionbottomkeep)r   rH   rB   r;   re   rd   rA   )rH   rB   r;   re   rd   rA   r   )rp   rn   z3na_option must be one of 'keep', 'top', or 'bottom'matchbad)r   rf   rg   rh   )皙?333333?皙?rA   皙?ry   rv   rw   rx   rA         ?      ?      ?)rp   r6   )r   rN   r
   rO   rP   rM   r   r   rK   raises
ValueError)r[   r_   Zexp_descrl   	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   r5   z,No axis named average for object type Seriesrs   )r   rM   rK   r~   r   )r[   sr   r   r   r   test_rank_signature   s   "z"TestSeriesRank.test_rank_signaturec                 C   sn   |\}}|dks|dks|s|dkrt d |d u r|n||}|j|d}t|t|t||d d S )Nr*   r,   r2   zint64/str does not support NaNr   rF   )rK   skiprN   rM   rO   rP   r   r8   )r[   r   r'   r3   using_infer_stringr5   r_   resultr   r   r   test_rank_tie_methods  s   
z$TestSeriesRank.test_rank_tie_methodsrn   TFr5   r   r   r   r   r   rp   )ro   rq   rr   z!dtype, na_value, pos_inf, neg_infr(   Nr)   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   r4   r)   r   rF   )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   ro   r   r   r   rq   rI   )r5   rp   rn   )rK   rL   r   r   r   listr   from_iterablerM   rO   rP   )r[   r5   rp   rn   r3   Zna_valueZpos_infZneg_infr7   chunkZin_arrr`   Z	exp_ranksr]   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      Frm   r   r   r   r)   rF   )r   r   r   rR   rM   rO   rP   )r[   r`   r   r_   r   r   r   test_rank_desc_mix_nans_infsG  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>\  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   Zordinalr)   )rK   rL   r   rX   rY   Zstandard_normalZconcatenaterangeshufflerZ   r   rM   rS   rN   rO   rP   )r[   r5   opvaluer\   r?   valsr>   r   Zsprankr   r   r   r   test_rank_methods_seriesO  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   rI   )r   r   r   r   r   c                 C   sb   |d dk r| dr|d d d }t||}|jdd}t|t|d}t|| d S )Nr   r2   rI   r   r   
startswithr   rN   rM   r8   rO   rP   )r[   r3   r   r_   r   r   r   r   r   r   test_rank_dense_methodg  s   z%TestSeriesRank.test_rank_dense_methodc                 C   s   |\}}|dks|s|dkr|  }n||}|jdd}|dr2|d |d  }	n| |  }	t||	t|d |dr\|d |d j|d}	n
| | j|d}	|j|dd}
t|
|	t|| d S )	Nr*   r2   Frm   r)   r   r   )r5   rn   )dropnarN   rM   r   r   rO   rP   r8   )r[   r   r'   r3   r   r5   _r   r   r   Zres2r   r   r   test_rank_descending|  s    



z#TestSeriesRank.test_rank_descendingc                 C   sF   |\}}|  d}|j|d}t|  }|j|_t|| d S )Ni8r   )r   rN   rM   r   r?   rO   rP   )r[   r   r'   r5   r_   r   r   r   r   r   r   test_rank_int  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    Trm   F)r   r   r   rN   r(   rM   )r[   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   rV   rM   rO   rP   )r[   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+   rF   r   r   r   r   r   r   )r   r   rM   r   r   rO   rP   )r[   r   r   r   r   r   r   test_rank_ea_small_values  s   z(TestSeriesRank.test_rank_ea_small_values)__name__
__module____qualname__rc   r   r   r   rK   markparametrizer   r   r   r   rR   r   r$   td
skip_if_nor   r   operatoraddmulr   r   r   r   r   r   r   r   r   r   r   r9   K   sf    [X"



	
r9   r   rA   r|   r   )UUUUUU?UUUUUU?rA   )r   r   r   )r|   rA   rA   r   )rA   r   r   r   )r   r   rA   rA   r   )r   r   r   r   r   r   )r   r   r   r   rA   rA   r   rz   c                 C   h   |d dk r|  dr|d d d }t|| }|jddd}t|t| ddd}t|| d S )Nr   r2   rI   r   Tr5   r6   rC   r   r3   r   r_   r   r   r   r   r   r   test_rank_dense_pct     r   )r   r   r   )ry   ry   rx   rx   rw   )UUUUUU?r   r|   r|   竪?r   c                 C   r   )Nr   r2   rI   r   Tr   rC   r   r   r   r   r   test_rank_min_pct  r   r   )r   rA   rA   )rv   rv   rA   rA   rw   c                 C   r   )Nr   r2   rI   r   Tr   rC   r   r   r   r   r   test_rank_max_pct  r   r   r}   )r   r   r   )333333?r   ?r   rw   )r{   r{   竪?r   UUUUUU?r   c                 C   r   )Nr   r2   rI   r   Tr   rC   r   r   r   r   r   test_rank_average_pct   r   r   )ry   rv   rx   rA   rw   )r   r   r|   r   r   rA   c                 C   r   )Nr   r2   rI   r   Tr   rC   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  TrC   r   )r   r   rT   rM   r   )r   r   r   r   r   test_pct_max_many_rows.  s   r   )F)+	itertoolsr   r   numpyr   rK   Zpandas._libs.algosr   r   Zpandas.util._test_decoratorsutilZ_test_decoratorsr   Zpandasr   r   r   r   r	   Zpandas._testingZ_testingrO   Zpandas.api.typesr
   Zfixturer   rW   r   r'   r$   r   r3   r8   r9   r   r   r   r   r   r   r   Z
single_cpur   r   r   r   r   <module>   s    
$$$$$



  r

	

	

	

	

	