ó
šxŠ\c           @   s    d  d l  m  Z  m Z d  d l m Z d  d l Z d  d l Z d  d l m Z m	 Z	 d  d l
 m Z d  d l j j Z d  d l m Z d e f d „  ƒ  YZ d S(	   iÿÿÿÿ(   t   datetimet	   timedelta(   t   LooseVersionN(   t	   DataFramet   Series(   t   TestData(   t   assert_frame_equalt   TestRankc           B   s‘  e  Z e d  d d d e j d d  d e j d g
 ƒ Z e i e d 6e d 6ƒ Z i e j d d d	 d
 e j d
 d d e j d g
 ƒ d 6e j d  d d d e j d d  d e j d g
 ƒ d 6e j d d d d e j d d d e j d g
 ƒ d 6e j d  d d d e j d d d e j d g
 ƒ d 6e j d  d d d e j d d  d e j d g
 ƒ d 6Z	 e
 j d d d d d d g ƒ d „  ƒ Z d „  Z d „  Z d „  Z d „  Z d „  Z e
 j j d d d d g ƒ d „  ƒ Z e
 j j d  d! d  g ƒ e
 j j d d* e g ƒ d" „  ƒ ƒ Z e
 j j d# d d$ d$ d$ g d$ d% d& d g d$ d% d$ d g g f d d$ d d$ d$ g d$ d d$ d d& d g d$ d d$ d d$ d g g f d d$ d$ d$ g d$ d& d d& d g d$ d& d d$ d g g f d d& d d$ d$ g d& d d% d& d g d& d d% d$ d g g f d d$ d d$ d$ g d& d d$ d d& d g d' d d& d d$ d g g f g ƒ d( „  ƒ Z e
 j j d) „  ƒ Z RS(+   i   i   i   i   i   t   At   Bg      ø?g      @g      @g      @g       @t   averagei   i   t   mini   t   maxt   firstt   denset   paramsc         C   s   | j  S(   s5   
        Fixture for trying all rank methods
        (   t   param(   t   selft   request(    (    s;   lib/python2.7/site-packages/pandas/tests/frame/test_rank.pyt   method   s    c         C   sÑ  t  j d ƒ } t j |  j d d  d  d … <t j |  j d d  d  d … <t j |  j d d  d  d … <t j |  j d d  d  d	 … <|  j j ƒ  } |  j j d
 ƒ } t j |  j j ƒ } |  j j t j	 ƒ j } t j
 | d | ƒ } t j | | <t j
 | d
 | ƒ } t j | | <t j | j | ƒ t j | j | ƒ t t j j d d	 d d ƒj d ƒ ƒ } | j ƒ  }	 | j t ƒ j ƒ  }
 t j |	 |
 ƒ | j d
 ƒ }	 | j t ƒ j d
 ƒ }
 t j |	 |
 ƒ d  S(   Ns   scipy.stats.rankdataR   i   R	   i   t   Ci   t   Di   i   i    t   sizei(   i
   (   i
   i   (   t   pytestt   importorskipt   npt   nant   framet   rankt   isnant   valuest   fillnat   inft   apply_along_axist   tmt   assert_almost_equalR   t   randomt   randintt   reshapet   astypet   floatR   (   R   t   rankdatat   ranks0t   ranks1t   maskt   fvalst   exp0t   exp1t   dft   resultt   exp(    (    s;   lib/python2.7/site-packages/pandas/tests/frame/test_rank.pyt	   test_rank"   s,    *c      	   C   s"  t  d d d g d d d g g ƒ } t  d d d g d d d g g ƒ d } | j d d t ƒ} t j | | ƒ t  d d d g d d d g g ƒ } | j d ƒ d } | j d d t ƒ} t j | | ƒ t  d	 d
 d g d d
 d	 g g ƒ } t  d d d g d d d g g ƒ } | j d d t ƒ} t j | | ƒ t  d d d g d d d g g ƒ } | j d d t ƒ} t j | | ƒ t  d	 t j d g d d
 d	 g g ƒ } t  d t j d g d d d g g ƒ } | j d d t ƒ} t j | | ƒ t  d t j d g d d d g g ƒ } | j d d t ƒ} t j | | ƒ t d d d ƒ t j t d d d ƒ g t d d d ƒ t d d d ƒ t d d d ƒ g g } t  | ƒ } t  d t j d g d d d g g ƒ } | j d d t d t ƒ} t j | | ƒ t  d t j d g d d d g g ƒ } | j d d t d t ƒ} t j | | ƒ t j	 ƒ  |  j
 d <t d d d d ƒ |  j
 d <|  j
 j d ƒ } |  j
 j d d t ƒ} t j | | ƒ t  i d d d! d d d d g d 6ƒ } t  i d d d d d d  d g d 6ƒ } t j | j ƒ  | ƒ d  S("   Ni   i   i   g      ð?g      @g       @t   pcti    t   bt   ct   at   numeric_onlyg      ø?iÑ  i   iÐ  t	   ascendingR    t   dayst   secondsR   g#B’¡œÇ;iûÿÿÿgœWw'&l¡7i
   gDóÂääécLg_ûðQïüŠPg ÂëþKH´9g      @g      @g      @g      @g#B’¡œÇ;(   R   R   t   TrueR"   R   t   FalseR   R   R    t   nowt   mixed_frameR   (   R   R0   t   expectedR1   t   dataR2   (    (    s;   lib/python2.7/site-packages/pandas/tests/frame/test_rank.pyt
   test_rank2D   sV    $($$$$''''(c   
   
   C   s  t  j d ƒ } t j |  j d d  d  d … <t j |  j d d  d  d … <t j |  j d d  d  d … <t j |  j d d  d  d	 … <|  j j d
 d ƒ } |  j j d d
 d ƒ} |  j j t j ƒ j } t j	 | d | ƒ } t j	 | d | ƒ } t
 j | j | ƒ t
 j | j | ƒ |  j j d
 d ƒ } |  j j d d
 d ƒ} |  j j |  j j ƒ  d j ƒ  ƒ j } |  j j } | j | j ƒ  d j ƒ  ƒ j } | j t j ƒ j } t j	 | d | ƒ } t j	 | d | ƒ } t
 j | j | ƒ t
 j | j | ƒ |  j j d
 d d t ƒ } |  j j d d
 d d t ƒ} |  j j t j ƒ j } t j	 | d | ƒ } t j	 | d | ƒ } t
 j | j | ƒ t
 j | j | ƒ |  j j d
 d d t ƒ } |  j j d d
 d d t ƒ} |  j j |  j j ƒ  d j ƒ  ƒ j } |  j j } | j | j ƒ  d j ƒ  ƒ j } | j t j ƒ j } t j	 | d | ƒ } t j	 | d | ƒ } t
 j | j | ƒ t
 j | j | ƒ d }	 t  j t d |	 ƒ |  j j d
 d d t ƒ Wd  QXt  j t d |	 ƒ |  j j d
 t d t ƒ Wd  QXd  S(   Ns   scipy.stats.rankdataR   i   R	   i   R   i   R   i   t	   na_optiont   bottomi   i    t   topR9   s3   na_option must be one of 'keep', 'top', or 'bottom't   matcht   bad(   R   R   R   R   R   R   R   R    R   R!   R"   R#   R   t   to_dictt   TR=   t   assert_numpy_array_equalt   raisest
   ValueErrorR<   (
   R   R)   R*   R+   R-   R.   R/   t   fval0t   fval1t   msg(    (    s;   lib/python2.7/site-packages/pandas/tests/frame/test_rank.pyt   test_rank_na_option   sX    ("("c         C   sr   t  d d g d d g g ƒ } t j | j d d ƒ | j d d ƒ ƒ t j | j d d ƒ | j d d ƒ ƒ d  S(	   Ni   i   i   i   t   axisi    t   indext   columns(   R   R"   R   R   (   R   R0   (    (    s;   lib/python2.7/site-packages/pandas/tests/frame/test_rank.pyt   test_rank_axisË   s    (c      	   C   s–  t  j d ƒ t  j d ƒ } d d  l } t j j d d d ƒ } | d d } g  t | j d	 ƒ D] } t t	 d
 ƒ | ƒ ^ qb } x| | d | d g D]ò } t
 | d | ƒ} x× d d	 g D]É } xÀ d d d d d g D]© }	 | j d | d |	 ƒ }
 t j | | | |	 d k r|	 n d ƒ } | j t j ƒ } t
 | d | ƒ} t | j ƒ t d ƒ k rv| j d ƒ } n  t j |
 | ƒ qÝ WqÁ Wqœ Wd  S(   Ns   scipy.stats.specials   scipy.stats.rankdataiÿÿÿÿi    i   id   i   g      $@i   t   zg    €„.Agíµ ÷Æ°>RS   R
   R   R   R   R   RQ   R   t   ordinals   0.17.0t   float64(   id   i   (   R   R   t   scipyR   R$   R%   t   ranget   shapet   chrt   ordR   R   R!   R'   RW   R   t   __version__R"   R   (   R   R)   RX   t   xst   it   colst   valsR0   t   axt   mR1   t   sprankR@   (    (    s;   lib/python2.7/site-packages/pandas/tests/frame/test_rank.pyt   test_rank_methods_frameÑ   s(    6	t   dtypet   Ot   f8t   i8c         C   s  d | k r |  j  j ƒ  } n |  j  j | ƒ } | j d t ƒ } | j ƒ  | j ƒ  } t | | ƒ | d k r | d k r d  S| j ƒ  | j d | ƒ } | d k r× | j d | d t d t ƒ } t | | ƒ n  | j d | d t d t ƒ } t | | ƒ d  S(   NR_   R9   R   Rg   R   R8   (   R0   t   dropnaR'   R   R=   R   R   R<   (   R   R   Rf   R0   t   resR@   t   res2t   res3(    (    s;   lib/python2.7/site-packages/pandas/tests/frame/test_rank.pyt   test_rank_descendingë   s     		RQ   i    c         C   s‚   |  j  } d d d „ } t d f h } | | f | k r= d  S| d  k rO | n | j | ƒ } | | |  j | d | d | ƒd  S(   NR
   i    c         S   sd   t  i | d 6| d 6ƒ } | d k r; |  j }  | j } n  |  j d | d | ƒ } t | | ƒ d  S(   NR   R	   i   R   RQ   (   R   RI   R   R   (   R0   R@   R   RQ   t   exp_dfR1   (    (    s;   lib/python2.7/site-packages/pandas/tests/frame/test_rank.pyt   _check2d
  s    	R   R   RQ   (   R0   t   objectt   NoneR'   t   results(   R   R   RQ   Rf   R0   Rp   t   disabledR   (    (    s;   lib/python2.7/site-packages/pandas/tests/frame/test_rank.pyt   test_rank_2d_tie_methods  s    	
!s
   method,expg      ð?g      à?g       @g      @c         C   sh   t  d d d g d d d g d d d g g ƒ } | j d | d t ƒ } t  | ƒ } t j | | ƒ d  S(	   NiÜ  iB   i   iA   i   i   R   R4   (   R   R   R<   R"   R   (   R   R   R2   R0   R1   R@   (    (    s;   lib/python2.7/site-packages/pandas/tests/frame/test_rank.pyt   test_rank_pct_true  s    0c         C   sf   t  i t j d
 ƒ d 6t j d d d ƒ d 6ƒ } | j d t ƒ j ƒ  } | d k j ƒ  sb t ‚ d  S(   Ni   i   i   R   i    iÿÿÿÿR	   R4   i   i  i   i  (   R   R   t   arangeR   R<   R   t   allt   AssertionError(   R   R0   R1   (    (    s;   lib/python2.7/site-packages/pandas/tests/frame/test_rank.pyt   test_pct_max_many_rows8  s    N(   t   __name__t
   __module__R   R   R   t   sR   R0   t   arrayRs   R   t   fixtureR   R3   RB   RP   RT   Re   t   markt   parametrizeRn   Rr   Rq   Ru   Rv   t   singleRz   (    (    (    s;   lib/python2.7/site-packages/pandas/tests/frame/test_rank.pyR      sP   04447*	"	;	L		''	0
(   R    R   t   distutils.versionR   t   numpyR   R   t   pandasR   R   t   pandas.tests.frame.commonR   t   pandas.util.testingt   utilt   testingR"   R   R   (    (    (    s;   lib/python2.7/site-packages/pandas/tests/frame/test_rank.pyt   <module>   s   