U
    sVc]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d d!d"gejd#dgd$gfddgd%d$gfddgd$d$gfdddgd&d'd$gfdddgd%d$d$gfdddgd$d'd&gfdddddgd&d&d$d$d'gfddddddgd&d&d'd'd$d$gfd(d)d*d+d,gd-d.d/d0d$gfg	d1d2 Zejdd d!d"gejd#dgd$gfddgd%d$gfddgd%d%gfdddgd&d'd$gfdddgd&d'd'gfdddgd$d'd&gfdddddgd-d-d0d0d/gfddddddgd3d3d%d%d4d4gfd(d)d*d+d,gd-d.d/d0d$gfg	d5d6 Z ejdd d!d"gejd#dgd$gfddgd%d$gfddgd$d$gfdddgd&d'd$gfdddgd&d$d$gfdddgd$d'd&gfdddddgd.d.d$d$d/gfddddddgd&d&d'd'd$d$gfd(d)d*d+d,gd-d.d/d0d$gfg	d7d8 Z!ejdd d!d"gejd#dgd$gfddgd%d$gfddgd9d9gfdddgd&d'd$gfdddgd&d4d4gfdddgd$d'd&gfdddddgd:d:d;d;d/gfddddddgd<d<d=d=d>d>gfd(d)d*d+d,gd-d.d/d0d$gfg	d?d@ Z"ejdd!d"gejd#dgd$gfddgd%d$gfddgd%d$gfdddgd&d'd$gfdddgd&d'd$gfdddgd$d'd&gfdddddgd-d.d0d$d/gfddddddgd3d&d%d'd4d$gfd(d)d*d+d,gd-d.d/d0d$gfg	dAdB Z#ejj$dCdD Z%dS )E    )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   I/tmp/pip-unpacked-wheel-xj8nt62q/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dddddgej	
ddddg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dddddgej	
dejd gejd!gejd"ggd#d$ Zej	
dd%d&d'g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d)d*d+gd)d*d+gfd,d*d)gd+d*d)gfd)d)d-d-d+gd)d)d+d+d*gfd.d/d0d1d2gd)d*d+d,d-gfgd3d4 Zej	
dd%d&d'gd5d6 Zd7d8 Zd9d: Zd;d< ZdS )=TestSeriesRankc                 C   sD  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ddddddg}tdddd
ddg}| }	t|	| tdddtgd d!}tdddtjg}| }	t|	| tjd"d#d$d%d&dd'dd(dd)g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)ZperiodsgJz5g0.++g#B;g{Gz?gIf;g?      @z3 dayz	1 day 10mz-2 dayzm8[ns]dtypeig#Bǻg}gJzgWw'&l7g|=(   float64)scipy.statsr$   r   r   rankastypetmassert_series_equalisnanZfillnainfr   r)   arangerepeatfloatcopyr   Zilocr   arrayrandomZpermutationlen)selfZdatetime_seriesr$   ranksZoranksmaskZfilledexpiseriesZiranksrngvaluesZrandom_orderr   r   r   	test_rank*   s    





zTestSeriesRank.test_rankc              
   C   sV  t ddddddg}t ddddddg}t ddd	d
ddgtddd	d
ddgdd}t| | t|jdd| t ddd	d
ddgtddd	d
ddgdd}t ddddddg}| }t|| t ddddddgtddddddgd}t ddddddg}| }	t|	| t ddd	d
ddtjgtddd	d
dddgd}
t dddddddg}t dddddddg}t ddddddtjg}t|
jdd| t|
jdd| t|
jdd| t dddddddg}t dddddddg}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 5 Q R X tj	t
|d |
jddd W 5 Q R X t ddd	d
tjgtddd	d
gd}
t d!d"d#dd$g}t d$d!d"d#dg}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 ))Nr+   g       @g      @r%   r,   r0   r   secondthirdZfourthZfifthZsixthT)
categoriesorderedF	ascendingr
   r   r   r   r   r   Zseventhr   top)	na_optionbottomkeep)rS   rQ   z3na_option must be one of 'keep', 'top', or 'bottom'matchbad皙?333333?皙?皙?      ?      ?      ?)rS   r.   )r   r8   r	   r9   r:   r7   r   NaNpytestraises
ValueError)rD   rG   Zexp_descrO   	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   sD   t ddg}|jdd d}tjt|d |d W 5 Q R X d S )Nr   r
   r   methodz,No axis named average for object type SeriesrV   )r   r7   ra   rb   rc   )rD   srf   r   r   r   test_rank_signature   s
    z"TestSeriesRank.test_rank_signaturer2   Nc                 C   s>   |\}}|d kr|n| |}|j|d}t|t| d S )Nrh   )r8   r7   r9   r:   r   )rD   r   r!   r2   ri   rG   resultr   r   r   test_rank_tie_methods   s    z$TestSeriesRank.test_rank_tie_methodsrQ   TFri   r   r   r   r   r   rS   rR   rT   rU   z!dtype, na_value, pos_inf, neg_infobjectr5   c              	   C   sf  d}|g| |g|  |g|  }	t |	|d}
dddgdddgdddgfdddgdddgdddgfdddgd	d	d	gd
d
d
gfdddgddd	gddd
gfdddgdddgdddgfd}|| }|dkr|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 d S )Nr   r1   r   r   r   r
   r   r   r   	   )r   r   r   r   r   rR   r   rT   r3   )ri   rS   rQ   r5   )	r   r   r   listr   from_iterabler7   r9   r:   )rD   ri   rS   rQ   r2   Zna_valueZpos_infZneg_infchunkZin_arrrH   Z	exp_ranksrE   orderexpectedrl   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
      FrP   r   r   r   r5   r1   )r   r   r   r<   r7   r9   r:   )rD   rH   rl   rG   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r|nd}	t	|	|dd}
t||
 d S )Nr   r#   ro   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ordrx   r   r   r   r}   &  s     )r)   rh   r   Zordinalr5   )r6   r$   r   rB   ZrandnZconcatenaterangeshufflerC   r   r7   r8   r9   r:   )rD   ri   opvaluer$   r)   valsr(   rl   Zsprankrt   r   r{   r   test_rank_methods_series  s     
z'TestSeriesRank.test_rank_methods_seriesr'   f8i8ser, expr
   r   r   r   r   r3   c                 C   s:   t ||}|jdd}t ||j}t|| d S )Nr   rh   r   r8   r7   r2   r9   r:   )rD   r2   r   rG   rj   rl   rt   r   r   r   test_rank_dense_method.  s    z%TestSeriesRank.test_rank_dense_methodc           
      C   s~   |\}}d|kr|  }n
||}|jdd}| |  }t|| | | j|d}|j|dd}	t|	| d S )Nrz   FrP   rh   )ri   rQ   )dropnar8   r7   r   r9   r:   )
rD   r   r!   r2   ri   _rj   re   rt   Zres2r   r   r   test_rank_descendingB  s    

z#TestSeriesRank.test_rank_descendingc                 C   sF   |\}}|  d}|j|d}t|  }|j|_t|| d S )Nr   rh   )r   r8   r7   r   r)   r9   r:   )rD   r   r!   ri   rG   rj   rl   rt   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    TrP   F)r   r   r   r8   rn   r7   )rD   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   r@   r7   r9   r:   )rD   rj   rt   rl   r   r   r   test_rank_modify_inplaceb  s
    z'TestSeriesRank.test_rank_modify_inplace)__name__
__module____qualname__tdZskip_if_no_scipyrK   rg   rk   ra   markparametrizern   rm   r   r   r   r   r<   ru   rw   operatoraddmulr   r   r   r   r   r   r   r   r   r   r"   )   s^   
WX




	r"   r2   r'   r   r   r   r+   r^   gUUUUUU?gUUUUUU?r   r   r   r   r3   r\   rY   rZ   r[   c                 C   s<   t || }|jddd}t ||j}t|| d S )Nr   Tri   r.   r   r2   r   rG   rj   rl   rt   r   r   r   test_rank_dense_pctp  s    r   gUUUUUU?g?c                 C   s<   t || }|jddd}t ||j}t|| d S )Nr   Tr   r   r   r   r   r   test_rank_min_pct  s    r   c                 C   s<   t || }|jddd}t ||j}t|| d S )Nr   Tr   r   r   r   r   r   test_rank_max_pct  s    r   r_   g333333?g?r]   g?gUUUUUU?c                 C   s<   t || }|jddd}t ||j}t|| d S )Nr   Tr   r   r   r   r   r   test_rank_average_pct  s    r   c                 C   s<   t || }|jddd}t ||j}t|| d S )Nr   Tr   r   r   r   r   r   test_rank_first_pct  s    r   c                  C   s.   t td} | jdd }|dks*td S )Ni  Tr-   r
   )r   r   r=   r7   r   AssertionError)rj   rl   r   r   r   test_pct_max_many_rows  s    r   )&	itertoolsr   r   Znumpyr   ra   Zpandas._libs.algosr   r   Zpandas.util._test_decoratorsutilZ_test_decoratorsr   Zpandasr   r   r   r   Zpandas._testingZ_testingr9   Zpandas.api.typesr	   Zfixturer   rA   r   r!   r"   r   r   r   r   r   r   r   Z
single_cpur   r   r   r   r   <module>   s   
$$$$$	
  I




