ó
šxŠ\c           @   s”   d  Z  d d l Z d d l Z d d l m Z d d l j j Z	 d d l
 Z d d l
 m Z m Z m Z d d l j j Z d e f d „  ƒ  YZ d S(   sP   
Tests for statistical reductions of 2nd moment or higher: var, skew, kurt, ...
iÿÿÿÿN(   t   lrange(   t	   DataFramet   Seriest   compatt   TestSeriesStatReductionsc           B   sƒ   e  Z e e d  „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z e j d	 „  ƒ Z e j d
 „  ƒ Z RS(   c         C   s´  t  j d t ƒ œt t | ƒ } t j | d d +| d k r| t t  j d d d	 ƒƒ } t j	 t
 ƒ  | | ƒ Wd  QXn  t  j | | ƒ ƒ s— t ‚ t  j | | d
 t ƒƒ s¸ t ‚ | j ƒ  } t j | | ƒ | | j ƒ ƒ t j | | ƒ | | j ƒ ƒ | t j }	 | r3t j | |	 ƒ ƒ s3t ‚ n  t d d d d  d g ƒ }
 | |
 ƒ d g } | j t d d ƒ ƒ t | d d ƒ}
 t j t | |
 ƒ ƒ t | |
 j ƒ ƒ ƒ | rt t  j d d d	 ƒƒ }
 | |
 ƒ } | |
 ƒ } | | k st ‚ n  | d k r=t j	 t
 ƒ  | t t d ƒ ƒ ƒ Wd  QXn  t j	 t ƒ  | | d d ƒWd  QXd t j | ƒ j k rªt j	 t d | ƒ | | d t ƒWd  QXn  Wd  QXd  S(   Nt   use_bottlenecki   i   t   maxt   mint   means   1/1/2001t   periodsi
   t   skipnai   i   i   i    i(   iè  t   dtypet   int64s   1/1/2000t   sumt   abct   axist   numeric_onlyt   match(   R   R   R   I       I       Iè     (   R   R   R   (    t   pdt   option_contextt   Falset   getattrR   t   npt   NaNt
   date_ranget   pytestt   raisest	   TypeErrort   notnat   AssertionErrort   isnat   dropnat   tmt   assert_almost_equalt   valuest   nant   isnant   Nonet   extendR    t   floatt   bdate_ranget   listt
   ValueErrorR   t	   signaturet   argst   NotImplementedErrort   True(   t   selft   namet	   alternatet   string_series_t   check_objectst   check_allnat   ft   dst   nonat   allnat   st   itemst   rest   exp(    (    sK   lib/python2.7/site-packages/pandas/tests/reductions/test_stat_reductions.pyt   _check_stat_op   sD    !
	+c         C   s5   t  j ƒ  j d ƒ } |  j d t j | d t ƒd  S(   Nt   seriesR   R4   (   R    t   makeStringSeriest   renameR=   R   R   R   (   R/   t   string_series(    (    sK   lib/python2.7/site-packages/pandas/tests/reductions/test_stat_reductions.pyt   test_sumR   s    c         C   s/   t  j ƒ  j d ƒ } |  j d t j | ƒ d  S(   NR>   R   (   R    R?   R@   R=   R   R   (   R/   RA   (    (    sK   lib/python2.7/site-packages/pandas/tests/reductions/test_stat_reductions.pyt	   test_meanV   s    c         C   su   t  j ƒ  j d ƒ } |  j d t j | ƒ t t j d d t ƒd t	 d ƒ ƒ} t  j
 t j | ƒ | j ƒ  ƒ d  S(   NR>   t   mediani
   R   t   index(   R    R?   R@   R=   R   RD   R   t   onest   intR    R!   (   R/   RA   t   int_ts(    (    sK   lib/python2.7/site-packages/pandas/tests/reductions/test_stat_reductions.pyt   test_medianZ   s    'c         C   s/   t  j ƒ  j d ƒ } |  j d t j | ƒ d  S(   NR>   t   prod(   R    R?   R@   R=   R   RJ   (   R/   RA   (    (    sK   lib/python2.7/site-packages/pandas/tests/reductions/test_stat_reductions.pyt	   test_prodb   s    c         C   s5   t  j ƒ  j d ƒ } |  j d t j | d t ƒd  S(   NR>   R   R3   (   R    R?   R@   R=   R   R   R.   (   R/   RA   (    (    sK   lib/python2.7/site-packages/pandas/tests/reductions/test_stat_reductions.pyt   test_minf   s    c         C   s5   t  j ƒ  j d ƒ } |  j d t j | d t ƒd  S(   NR>   R   R3   (   R    R?   R@   R=   R   R   R.   (   R/   RA   (    (    sK   lib/python2.7/site-packages/pandas/tests/reductions/test_stat_reductions.pyt   test_maxj   s    c         C   s8  t  j ƒ  j d ƒ } t  j ƒ  j d ƒ } d „  } |  j d | | ƒ d „  } |  j d | | ƒ | j d d ƒ } t j | j d d ƒ} t  j | | ƒ | j	 d d ƒ } t j	 | j d d ƒ} t  j | | ƒ | j
 d	 g } | j	 d d
 ƒ } t j | ƒ st ‚ | j d d
 ƒ } t j | ƒ s4t ‚ d  S(   NR>   t   tsc         S   s   t  j |  d d ƒS(   Nt   ddofi   (   R   t   std(   t   x(    (    sK   lib/python2.7/site-packages/pandas/tests/reductions/test_stat_reductions.pyt   <lambda>r   s    RP   c         S   s   t  j |  d d ƒS(   NRO   i   (   R   t   var(   RQ   (    (    sK   lib/python2.7/site-packages/pandas/tests/reductions/test_stat_reductions.pyRR   u   s    RS   RO   i   i    i   (   R    R?   R@   t   makeTimeSeriesR=   RP   R   R"   R!   RS   t   ilocR   R   R   (   R/   RA   t   datetime_seriest   altt   resultt   expectedR9   (    (    sK   lib/python2.7/site-packages/pandas/tests/reductions/test_stat_reductions.pyt   test_var_stdn   s"    		c         C   sÑ   t  j ƒ  j d ƒ } t  j ƒ  j d ƒ } d „  } |  j d | | ƒ | j d d ƒ } t j | j d d ƒt j	 t
 | j ƒ ƒ } t  j | | ƒ | j d g } | j d d ƒ } t j | ƒ sÍ t ‚ d  S(	   NR>   RN   c         S   s&   t  j |  d d ƒt  j t |  ƒ ƒ S(   NRO   i   (   R   RP   t   sqrtt   len(   RQ   (    (    sK   lib/python2.7/site-packages/pandas/tests/reductions/test_stat_reductions.pyRR   Œ   s    t   semRO   i   i    i   (   R    R?   R@   RT   R=   R]   R   RP   R"   R[   R\   R!   RU   R   R   R   (   R/   RA   RV   RW   RX   RY   R9   (    (    sK   lib/python2.7/site-packages/pandas/tests/reductions/test_stat_reductions.pyt   test_semˆ   s    	c            s   d d l  m ‰  t j ƒ  j d ƒ } ‡  f d †  } |  j d | | ƒ d } xÌ t d | d ƒ D]· } t t j	 | ƒ ƒ } t
 t j	 | | f ƒ ƒ } | | k  râ t j | j ƒ  ƒ s¾ t ‚ t j | j ƒ  ƒ j ƒ  st ‚ qa d | j ƒ  k sú t ‚ | j ƒ  d k j ƒ  sa t ‚ qa Wd  S(	   Niÿÿÿÿ(   t   skewR>   c            s   ˆ  |  d t  ƒS(   Nt   bias(   R   (   RQ   (   R_   (    sK   lib/python2.7/site-packages/pandas/tests/reductions/test_stat_reductions.pyRR   Ÿ   s    R_   i   i   i    (   t   scipy.statsR_   R    R?   R@   R=   t   rangeR   R   RF   R   R$   R   t   all(   R/   RA   RW   t   min_Nt   iR9   t   df(    (   R_   sK   lib/python2.7/site-packages/pandas/tests/reductions/test_stat_reductions.pyt	   test_skew™   s    $c            sÖ  d d l  m ‰  t j ƒ  j d ƒ } ‡  f d †  } |  j d | | ƒ t j d d g d d	 d
 g d d g g d d d d d d d g d d d d d d g d d d d d d g g ƒ } t t	 j
 j d ƒ d | ƒ} t j | j ƒ  | j d d ƒ d ƒ d } xÌ t d | d ƒ D]· } t t	 j | ƒ ƒ } t t	 j | | f ƒ ƒ } | | k  r˜t	 j | j ƒ  ƒ stt ‚ t	 j | j ƒ  ƒ j ƒ  sÎt ‚ qd | j ƒ  k s°t ‚ | j ƒ  d k j ƒ  st ‚ qWd  S(   Niÿÿÿÿ(   t   kurtosisR>   c            s   ˆ  |  d t  ƒS(   NR`   (   R   (   RQ   (   Rh   (    sK   lib/python2.7/site-packages/pandas/tests/reductions/test_stat_reductions.pyRR   µ   s    t   kurtt   levelst   bart   onet   twot   threei    i   t   codesi   i   RE   t   leveli   (   Ra   Rh   R    R?   R@   R=   R   t
   MultiIndexR   R   t   randomt   randnR!   Ri   Rb   RF   R   R$   R   Rc   (   R/   RA   RW   RE   R9   Rd   Re   Rf   (    (   Rh   sK   lib/python2.7/site-packages/pandas/tests/reductions/test_stat_reductions.pyt	   test_kurt¯   s$    	!H&$(   t   __name__t
   __module__R   R=   RB   RC   RI   RK   RL   RM   RZ   R^   t   tdt   skip_if_no_scipyRg   Rt   (    (    (    sK   lib/python2.7/site-packages/pandas/tests/reductions/test_stat_reductions.pyR      s   ;								(   t   __doc__t   numpyR   R   t   pandas.compatR    t   pandas.util._test_decoratorst   utilt   _test_decoratorsRw   t   pandasR   R   R   R   t   pandas.util.testingt   testingR    t   objectR   (    (    (    sK   lib/python2.7/site-packages/pandas/tests/reductions/test_stat_reductions.pyt   <module>   s   