ó
šxŠ\c           @  sb  d  Z  d d l m Z d d l Z d d l Z d d l Z d d l m Z m	 Z	 m
 Z
 m Z m Z m Z m Z d d l m Z d d l j j Z e j j d d d d	 d
 d d e j d d e j j d ƒ g ƒd d d g
 ƒ d „  ƒ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e j j d d e j  f d e j! f d
 e j" f d e j# f d e j$ f d e j% f d e j& f d d „  f d d „  f g	 ƒ d  „  ƒ Z' e j j d d e j  f d d! „  f d
 d" „  f d e j% f d e j& f g ƒ d# „  ƒ Z( d$ „  Z) e j j d% d d d d g ƒ e j j d& e d' ƒ e d( ƒ g ƒ d) „  ƒ ƒ Z* d S(*   s   
test cython .agg behavior
iÿÿÿÿ(   t   print_functionN(   t	   DataFramet   Indext   NaTt   Seriest	   Timedeltat	   Timestampt   bdate_range(   t	   DataErrort   op_namet   countt   sumt   stdt   vart   semt   meant   mediant   markss   ignore::RuntimeWarningt   prodt   mint   maxc   
        sÈ  i d d d d d d d d d d t  j t  j g d 6d d g d d 6t  j j d ƒ d 6} t | ƒ } t  j | j d	 d
 d	 … d f <‡ f d †  ‰  | j d g d d ƒj d ƒ } ‡  f d †  | Dƒ } t i | d 6ƒ } d | j _	 ˆ  | ƒ } t
 j | | ƒ | j d d g ƒ } i  } x: | D]2 \ \ } } }	 ˆ  |	 d ƒ | j | i  ƒ | <q)Wt | ƒ j j d t ƒ } d d g | j _ d | _	 ˆ  | ƒ d } ˆ d k rÄt
 j | | ƒ n  d  S(   Ni    i   g      ð?t   At   Bi   i   t   Ci   i
   c           s   t  |  ˆ  ƒ ƒ  S(   N(   t   getattr(   t   x(   R	   (    sI   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_cython.pyt   <lambda>+   s    t   axisc           s)   i  |  ] \ } } ˆ  | d  ƒ | “ q S(   R   (    (   t   .0t   catt   group(   t   op(    sI   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_cython.pys
   <dictcomp>/   s   	 t   dropnaR   R   (   R   R   (   t   npt   nant   randomt   randnR   t   loct   dropt   groupbyt   indext   namet   tmt   assert_frame_equalt
   setdefaultt   Tt   stackt   Falset   namest   assert_series_equal(
   R	   t   datat   dft   groupedt   expt   resultt   expdt   cat1t   cat2R   (    (   R   R	   sI   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_cython.pyt   test_cythonized_aggers   s,    4!$	c          C  s“   t  i t j j d d d ƒ d 6t j j d d d ƒ j d ƒ d 6ƒ }  |  j d ƒ d j ƒ  } |  j d ƒ d j t j ƒ } t j	 | | ƒ d  S(   Ni    i   i2   t   ai   t   boolt   b(
   R   R!   R#   t   randintt   astypeR'   R   t   aggR*   R1   (   t   frameR6   t   expected(    (    sI   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_cython.pyt   test_cython_agg_booleanC   s
    (c          C  sã   t  i t j j d d d ƒ d 6d d g d d 6ƒ }  d	 } t j t d
 | ƒ |  j d ƒ d j ƒ  Wd  QXt  i t j j d d d ƒ d 6d d g d d 6ƒ }  t j t d
 | ƒ# |  d g j |  d ƒ j ƒ  Wd  QXd  S(   Ni    i   i2   R;   t   foot   bari   R=   s   No numeric types to aggregatet   match(	   R   R!   R#   R>   t   pytestt   raisesR   R'   R   (   RA   t   msg(    (    sI   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_cython.pyt   test_cython_agg_nothing_to_aggL   s    c          C  sŽ   t  i t j j d d d ƒ d 6d d g d d 6t j d	 d
 d d d ƒd 6ƒ }  d } t j t d | ƒ |  j	 d ƒ j
 j ƒ  Wd  QXd  S(   Ni    i   i2   R;   RD   RE   i   R=   t   nowt   periodst   freqR-   t   datess   No numeric types to aggregateRF   (   R   R!   R#   R>   t   pdt
   date_rangeRG   RH   R   R'   RN   R   (   RA   RI   (    (    sI   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_cython.pyt)   test_cython_agg_nothing_to_agg_with_datesZ   s    "c          C  s    t  i d d d g d 6d d d g d 6ƒ }  |  j d d	 d
 d ƒ j ƒ  |  j d d	 d
 d ƒ j ƒ  |  j d d	 d
 d ƒ j ƒ  |  j d d	 d
 d ƒ j ƒ  d  S(   Ni   i   i   R   i   i   t   yt   leveli    R   t   columns(   R   R'   R   (   R3   (    (    sI   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_cython.pyt   test_cython_agg_frame_columnsc   s
    ,c       
   C  sý   t  i d d d d d d d d g d 6d d d d d d d d g d 6t j j d ƒ d	 6t j j d ƒ d
 6ƒ }  |  j d ƒ d j d „  ƒ } t i d d 6d d 6d d 6i d d 6d d 6d d 6g d t d d g d d ƒd d ƒ} t j	 | | ƒ d  S(   NRD   RE   R   t   onet   twot   threeR   i   R   t   Dc         S  s   |  j  ƒ  j ƒ  S(   N(   t   value_countst   to_dict(   R   (    (    sI   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_cython.pyR   u   s    i   i   R(   R)   (
   R   R!   R#   R$   R'   R@   R   R   R*   R1   (   R3   t   tsRB   (    (    sI   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_cython.pyt   test_cython_agg_return_dictm   s    "	c          C  s{   t  d d d ƒ}  t d d d d d g d	 d
 |  ƒ} | j d „  ƒ } | j ƒ  } | j t j ƒ } t j | | ƒ d  S(   Ns   1/1/2000RL   i2   R   R   R   RY   t   Ei
   R(   c         S  s   |  j  S(   N(   t   month(   R   (    (    sI   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_cython.pyR      s    (   R   R   R'   R   R@   R!   R*   R1   (   t   drR\   R4   t   summedRB   (    (    sI   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_cython.pyt   test_cython_fail_agg}   s    %s
   op, targopt   addt   firstc         C  s   |  j  d S(   Ni    (   t   iloc(   R   (    (    sI   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_cython.pyR      s    t   lastc         C  s   |  j  d S(   Niÿÿÿÿ(   Re   (   R   (    (    sI   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_cython.pyR      s    c         C  s€   t  t j j d ƒ ƒ } t j j d d d d ƒj t ƒ } | j | ƒ j |  ƒ } | j | ƒ j	 | ƒ } t
 j | | ƒ d  S(   Niè  i    i2   t   size(   R   R!   R#   R$   R>   R?   t   floatR'   t   _cython_agg_generalR@   R*   R+   (   R   t   targopR3   t   labelsR6   RB   (    (    sI   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_cython.pyt   test__cython_agg_general‡   s
    $c         C  s&   t  |  ƒ d k r t j |  ƒ St j S(   Ni    (   t   lenR!   R   R"   (   R   (    (    sI   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_cython.pyR      s    c         C  s   t  j |  d d ƒS(   Nt   ddofi   (   R!   R   (   R   (    (    sI   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_cython.pyR   ž   s    c           s¯   t  j d d d g ƒ } t d d d ƒ } | j t  j | d | ƒ d | ƒ} | j |  ƒ } | j t  j | d | ƒ d | ƒ} | j ‡  f d †  ƒ } t j | | ƒ d  S(	   Ni   i   i   i    i7   i   t   observedc           s
   ˆ  |  ƒ S(   N(    (   R   (   Rj   (    sI   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_cython.pyR   ¬   s    (	   RO   R   t   rangeR'   t   cutRi   R@   R*   R+   (   R   Rj   Ro   R3   t   grpst   gR6   RB   (    (   Rj   sI   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_cython.pyt   test_cython_agg_empty_buckets›   s    %%c      	   C  s}  t  j d d d g d d g ƒ} t d d d ƒ } | j t  j | d | ƒ d	 |  ƒj d
 ƒ } t  j d d d d ƒ} t  j i d d d d g d 6d t  j | d d d t ƒƒ} |  rÒ | | j	 d k } n  t
 j | | ƒ | j t  j | d | ƒ d	 |  ƒj d ƒ } t  j i d d d d g d 6d t  j | d d d t ƒƒ} |  ri| | j	 d k } n  t
 j | | ƒ d  S(   Ni   i   i   RT   R;   i    i   i   Ro   Rc   i   RM   i$   R(   R)   t   orderedR   i   i´  (   RO   R   Rp   R'   Rq   Ri   t   interval_ranget   CategoricalIndext   TrueR;   R*   R+   (   Ro   R3   Rr   R6   t	   intervalsRB   (    (    sI   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_cython.pyt$   test_cython_agg_empty_buckets_nanops°   s&    !R   R2   s   2016-10-14 21:00:44.557s   17088 days 21:00:44.557c         C  s‰   t  i d d g d 6| t g d 6ƒ } t d d g d d ƒ} t  i | t g d 6d | ƒ} | j d ƒ j |  ƒ } t j | | ƒ d  S(   Ni    i   R;   R=   R)   R(   (   R   R   R   R'   t	   aggregateR*   R+   (   R   R2   R3   R(   RB   R6   (    (    sI   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_cython.pyt"   test_cython_with_timestamp_and_natÍ   s
    &(+   t   __doc__t
   __future__R    t   numpyR!   RG   t   pandasRO   R   R   R   R   R   R   R   t   pandas.core.groupby.groupbyR   t   pandas.util.testingt   utilt   testingR*   t   markt   parametrizet   paramt   filterwarningsR:   RC   RJ   RQ   RU   R]   Rb   R   R   R   R   R   R   R   Rl   Rt   Rz   R|   (    (    (    sI   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_cython.pyt   <module>   s^   4	!						
		
		