B
    `?O                 @   s  d dl mZmZ d dlZd dlZd dlm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 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ddgfg	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ddgfg	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ddgfg	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dd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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ddgfg	d0d1 Z ejj!ejj"d2d3 Z#dS )4    )chainproductN)iNaT)InfinityNegInfinity)NaTSeries	Timestamp
date_range)CategoricalDtypec               @   sP  e Zd Zeddddejdddejdg
Zedddd	ejd	dd
ejdg
eddddejdddejdg
eddddejdddejdg
eddddejdddejdg
eddddejdddejdg
dZdd Z	dd Z
dd Zejdej dddddddddddejgd fej ddddd!ddddddejgd"feejjddd#eejjgd$fejeejjd%ddd&d'd(eejjgd)ejjd*d+d,e d-d.d/d0d1e gd2fgd3d4 Zd5d6 Zejejd7d8d9gejd:d;d<d=d>d?gejd@dAdBdCgdDdE ZdFdG ZdHdI ZdJdK Z dLdM Z!dNdO Z"dPdQ Z#dRdS Z$dTS )UTestSeriesRank               g      ?g      @g      @g      @g       @         )averageminmaxfirstdensec             C   sL  t d t d}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 ),Nzscipy.stats.specialzscipy.stats.rankdatar   g      @
   r   Ots)indexnamer   g      ?g      @T)pctr   d   g)\(?g@_)?r   z1/1/1990)ZperiodsgJz5g0.++g#B;g{Gz?gIf;g?g      @z3 dayz	1 day 10mz-2 dayzm8[ns])dtypeig#Bǻg}gJzr   gWw'&l7g|=(   float64)pytestimportorskipnpnanrankastypetmassert_series_equalisnanZfillnainfr   r   arangerepeatfloatcopyr
   Zilocr   arrayrandompermutationlen)selfZdatetime_seriesrankdataranksZoranksmaskZfilledexpiseriesiranksrngvaluesrandom_order rA   T/home/dcms/DCMS/lib/python3.7/site-packages/pandas/tests/series/methods/test_rank.py	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 d Q R X tj	t
|d |
jddd W d 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 ))Ng      ?g       @g      @g      @g      @g      @r   secondthirdZfourthZfifthZsixthT)
categoriesorderedF)	ascendingr   r   r   r   r   r   Zseventhg      @top)	na_optionbottomkeep)rJ   rH   z3na_option must be one of 'keep', 'top', or 'bottom')matchbadg?g333333?g?g?g      ?g      ?g      ?)rJ   r   )r   r*   r   r+   r,   r)   r'   NaNr%   raises
ValueError)r7   r;   Zexp_descrG   	unorderedZexp_unorderedresZ
unordered1Zexp_unordered1Zres1Zna_serZexp_topZexp_botZexp_keepmsgrA   rA   rB   test_rank_categoricalr   sj    

z$TestSeriesRank.test_rank_categoricalc          	   C   sD   t ddg}|jdd d}tjt|d |d W d Q R X d S )Nr   r   r   )methodz,No axis named average for object type Series)rM   )r   r)   r%   rP   rQ   )r7   srT   rA   rA   rB   test_rank_signature   s
    z"TestSeriesRank.test_rank_signaturezcontents,dtypeir"   g#Bǻg}gJzr   gWw'&l7g#B;g|=r#   r$   gj7֖float32r    uint8ii'  i g    _Bint64zHiNaT is equivalent to minimum value of dtypeint64 pending issue GH#16674)reason)Zmarks1AZBAZBaCobjectc             C   s   t jt jtd d}t j||d}t jtt|ddd }||kr~|| }t jtt|d}t |||}t ||t j}t j	t|}t
|| }	t
|| dd}
|	 }t||
 d S )N)r$   rY   r[   r`   )r!   r$   g      ?r   )r'   r(   r   r3   ranger6   r4   choiceinsertr5   r   r)   r+   r,   )r7   contentsr!   Zdtype_na_mapr?   Z	exp_orderna_valueZnan_indicesr@   r<   r;   r=   rA   rA   rB   test_rank_inf   s     >zTestSeriesRank.test_rank_infc       	      C   sz   | j }ddd}d tg}tdfh}| j}xLt||D ]>\}}||f|krJq4|d krV|n||}|||| |d q4W d S )Nr   c             S   s    | j |d}t|t| d S )N)rV   )r)   r+   r,   r   )rW   expectedrV   resultrA   rA   rB   _check)  s    z4TestSeriesRank.test_rank_tie_methods.<locals>._checkr   )rV   )r   )rW   r`   resultsr   r*   )	r7   rW   ri   dtypesdisabledrj   rV   r!   ZseriesrA   rA   rB   test_rank_tie_methods&  s    

z$TestSeriesRank.test_rank_tie_methodsrH   TFrV   r   r   r   r   r   rJ   rI   rK   rL   c                s   dd t  t fdtjtjtj fg}d dh} fdd}xZ|D ]R\}}}	}
|
g  |g   |	g   }t||d}||f|krq@||||| q@W d S )Nr`   r$   r   )r`   r   c       	   	      s6  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   r   r   r   r   r   r   r   	   )r   r   r   r   r   rI   r   rK   r"   )rV   rJ   rH   r$   )r!   )	r'   r(   listr   from_iterabler)   r+   r,   r   )	rW   rV   rJ   rH   Z	exp_ranksr9   orderrg   rh   )chunkrA   rB   ri   C  s     zATestSeriesRank.test_rank_tie_methods_on_infs_nans.<locals>._check)r!   )r   r   r'   r(   r.   r   )r7   rV   rJ   rH   rk   rl   ri   r!   re   Zpos_infZneg_infZin_arrr<   rA   )rr   rB   "test_rank_tie_methods_on_infs_nans7  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      F)rH   r   r   r   r$   )r!   )r   r'   r(   r.   r)   r+   r,   )r7   r<   rh   r;   rA   rA   rB   test_rank_desc_mix_nans_infs^  s    z+TestSeriesRank.test_rank_desc_mix_nans_infsc       	         s   t d t d}tjd t fddtdddD  tj  dd tt D }xt  d	  d
 gD ]^}t	||d}xLdD ]D}|j
|d}|||dkr|nd}t	||dd}t|| qW qvW d S )Nzscipy.stats.specialzscipy.stats.rankdatarn   c                s   g | ]} |d  qS )NrA   ).0i)xsrA   rB   
<listcomp>k  s    z;TestSeriesRank.test_rank_methods_series.<locals>.<listcomp>r   r   c             S   s   g | ]}t td | qS )a)chrord)rv   rw   rA   rA   rB   ry   n  s    g    .Agư>)r   )r   r   r   r   r   )rV   r   Zordinalr$   )r%   r&   r'   r4   ZrandnZconcatenatera   shuffler6   r   r)   r*   r+   r,   )	r7   r8   r   valsr   mrh   Zsprankrg   rA   )rx   rB   test_rank_methods_seriesf  s    

 
z'TestSeriesRank.test_rank_methods_seriesc       	      C   s   dddg}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dddgddddd	gfg}xT|D ]L\}}xB|D ]:}t ||}|jdd}t ||j}t|| qW qW d S )Nr   f8i8r   r   r   r   r   r   r"   r   )rV   )r   r*   r)   r!   r+   r,   )	r7   rk   Zin_outserr;   r!   rW   rh   rg   rA   rA   rB   test_rank_dense_methody  s    




z%TestSeriesRank.test_rank_dense_methodc             C   s   dddg}xt || jD ]\}}d|kr4| j }n| j|}|jdd}| |  }t|| |dkrz|dkrzq| | j|d}|j|dd	}t|| qW d S )
Nr   r   r   rw   F)rH   r   )rV   )rV   rH   )	r   rj   rW   dropnar*   r)   r   r+   r,   )r7   rk   r!   rV   rW   rS   rg   Zres2rA   rA   rB   test_rank_descending  s    
z#TestSeriesRank.test_rank_descendingc             C   sX   | j  d}xB| j D ]4\}}|j|d}t| }|j|_t	|| qW d S )Nr   )rV   )
rW   r   r*   rj   itemsr)   r   r   r+   r,   )r7   rW   rV   rS   rh   rg   rA   rA   rB   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    T)rH   F)r   r'   r(   r*   r`   r)   )r7   rA   rA   rB   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   r2   r)   r+   r,   )r7   rW   rg   rh   rA   rA   rB   test_rank_modify_inplace  s
    z'TestSeriesRank.test_rank_modify_inplaceN)%__name__
__module____qualname__r   r'   r(   rW   r3   rj   rC   rU   rX   r%   markparametrizer.   ZiinforZ   r   r   paramr[   Zxfailr   r   rf   rm   tdZskip_if_no_scipyrs   ru   r   r   r   r   r   r   rA   rA   rA   rB   r      s        &XX$
&"$	r   r!   r   r   r   zser, expr   g      ?r   g      ?r   gUUUUUU?gUUUUUU?r   r   r   r   r   r   r"   g?g?g333333?g?c             C   s<   t || }|jddd}t ||j}t|| d S )Nr   T)rV   r   )r   r*   r)   r!   r+   r,   )r!   r   r;   rW   rh   rg   rA   rA   rB   test_rank_dense_pct  s    r   gUUUUUU?g?c             C   s<   t || }|jddd}t ||j}t|| d S )Nr   T)rV   r   )r   r*   r)   r!   r+   r,   )r!   r   r;   rW   rh   rg   rA   rA   rB   test_rank_min_pct  s    r   c             C   s<   t || }|jddd}t ||j}t|| d S )Nr   T)rV   r   )r   r*   r)   r!   r+   r,   )r!   r   r;   rW   rh   rg   rA   rA   rB   test_rank_max_pct  s    r   g      ?g333333?g?g      ?g?gUUUUUU?c             C   s<   t || }|jddd}t ||j}t|| d S )Nr   T)rV   r   )r   r*   r)   r!   r+   r,   )r!   r   r;   rW   rh   rg   rA   rA   rB   test_rank_average_pct  s    r   c             C   s<   t || }|jddd}t ||j}t|| d S )Nr   T)rV   r   )r   r*   r)   r!   r+   r,   )r!   r   r;   rW   rh   rg   rA   rA   rB   test_rank_first_pct  s    r   c              C   s.   t td} | jdd }|dks*td S )Ni  T)r   r   )r   r'   r/   r)   r   AssertionError)rW   rh   rA   rA   rB   test_pct_max_many_rows-  s    r   )$	itertoolsr   r   numpyr'   r%   Zpandas._libsr   Zpandas._libs.algosr   r   Zpandas.util._test_decoratorsutilZ_test_decoratorsr   Zpandasr   r   r	   r
   Zpandas._testingZ_testingr+   Zpandas.api.typesr   r   r   r   r   r   r   r   r   ZsingleZhigh_memoryr   rA   rA   rA   rB   <module>   s      3
*

*

*

*

*
