ó
šxŠ\c           @   sI  d  Z  d d l Z d d l Z d d l m Z d d l Z d d l m Z m	 Z	 m
 Z
 m Z m Z d d l m Z d d l m Z d d l j j Z d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z e j j d d „  d „  d „  g g ƒ d „  ƒ Z d „  Z d „  Z  d „  Z! d „  Z" d „  Z# d „  Z$ d „  Z% d S(   sN   
test .agg behavior / note that .apply is tested generally in test_groupby.py
iÿÿÿÿN(   t   OrderedDict(   t	   DataFramet   Indext
   MultiIndext   Seriest   concat(   t   SpecificationError(   t   Groupingc         C   sM   |  j  d „  d „  g ƒ } | j t j ƒ } | j ƒ  } t j | | ƒ d  S(   Nc         S   s   |  j  S(   N(   t   year(   t   x(    (    sL   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyt   <lambda>   s    c         S   s   |  j  S(   N(   t   month(   R	   (    (    sL   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyR
      s    (   t   groupbyt   aggt   npt   meant   tmt   assert_frame_equal(   t   tsframet   groupedt   resultt   expected(    (    sL   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyt   test_agg_regression1   s    c         C   su   |  j  d ƒ d } d } t j t d | ƒ | j d „  ƒ Wd  QXt j t d | ƒ | j d „  ƒ Wd  QXd  S(   Nt   At   Cs   Must produce aggregated valuet   matchc         S   s
   |  j  ƒ  S(   N(   t   describe(   R	   (    (    sL   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyR
      s    c         S   s   |  j  d  S(   Ni   (   t   index(   R	   (    (    sL   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyR
   !   s    (   R   t   pytestt   raisest	   ExceptionR   (   t   dfR   t   msg(    (    sL   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyt   test_agg_must_agg   s    c         C   sl   |  j  } d „  } |  j  j |  j |  j g ƒ j | ƒ } |  j d d g ƒ j ƒ  d } t j | | ƒ d  S(   Nc         S   s
   |  j  ƒ  S(   N(   t   sum(   R	   (    (    sL   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyR
   (   s    R   t   BR   (   R   R   R   R#   t	   aggregateR"   R   t   assert_series_equal(   R   t   sert   ft   resultsR   (    (    sL   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyt   test_agg_ser_multi_key$   s
    		'c          C   s  t  i d d d t j d d d d g d 6d d d t j d	 d	 d
 d g d 6d t j d d d  d! d" d# d$ d% g d d d g ƒƒ}  t  i d d d d d d d t j d d d d g d 6d d	 d d d d	 d t j d
 d d d g d 6d d d d t j d d d d d t j d g d 6d d d d t j d d d d d t j t j g d 6ƒ } | j d d g ƒ } | d d g j ƒ  } t j | |  ƒ d  S(&   Ni   i   i   i   i   t   v1i7   iM   i!   i,   i   t   v2R   i_   ic   i   t   bigt   dampt   bluet   dryt   redt   wett   namest   by1t   by2i   i	   iX   i   (   i   i_   (   i   ic   (   i   i_   (   i   ic   (   R,   R-   (   R.   R/   (   R0   R0   (   R0   R1   (	   R   R   t   nanR   t   from_tuplesR   R   R   R   (   R   R   t   gR   (    (    sL   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyt$   test_groupby_aggregation_mixed_dtype.   s$    "%..'
!c      
   C   sv  |  j  |  t j ƒ } |  j t j k s. t ‚ t g  d t j d t j g  d t j ƒƒ} t	 j
 | j ƒ  | ƒ t	 j
 | j t j ƒ | ƒ t	 j
 | j t j ƒ | d t ƒ| j  | d t j ƒ } t d | j d t d t j g  d t j ƒƒ } t	 j | j ƒ  | d t ƒt	 j | j t j ƒ | d t ƒt	 j | j t j ƒ | j d  d  … d  d … f d t ƒd  S(   Nt   dtypeR   t   check_index_typeR   t   columnst   check_namesi    (   R   R   R5   R9   t   float64t   AssertionErrorR   t   pdR   R   R%   R"   R   t   applyt   FalseR   R;   t   floatR   t   iloc(   t   tsR   R   t   expt   exp_df(    (    sL   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyt   test_agg_apply_cornerH   s    "4c         C   sÕ   t  j ƒ  } | j d „  ƒ } | j j d j } t |  j t | ƒ ƒ | j j d <| j t	 j
 ƒ } | j
 ƒ  } t  j | | ƒ t |  j t | ƒ ƒ | j j d <| j t	 j
 ƒ } | j
 ƒ  } t  j | | ƒ d  S(   Nc         S   s   |  j  S(   N(   R   (   R	   (    (    sL   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyR
   b   s    i    (   R   t   makeTimeDataFrameR   t   groupert	   groupingsR   R   t   listR   R   R   R   t   tuple(   RD   R   R   RI   R   R   (    (    sL   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyt   test_agg_grouping_is_list_tuple_   s    ""c         C   sG   |  j  d d g ƒ } | j t j ƒ } | j ƒ  } t j | | ƒ d  S(   NR   R#   (   R   R   R   R   R   R   (   t   mframeR   R   R   (    (    sL   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyt   test_agg_python_multiindexq   s    t   groupbyfuncc         C   s
   |  j  ƒ  S(   N(   t   weekday(   R	   (    (    sL   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyR
   z   s    c         C   s   |  j  S(   N(   R   (   R	   (    (    sL   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyR
   {   s    c         C   s
   |  j  ƒ  S(   N(   RQ   (   R	   (    (    sL   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyR
   {   s    c         C   s  |  j  | ƒ } | d j d ƒ } | d j ƒ  } t j | | ƒ | j d ƒ } | j ƒ  } t j | | ƒ | j t d d g d d g d d g d d g g ƒ ƒ } t	 t d | d j ƒ  g d | d j ƒ  g d | d j
 ƒ  g d | d j ƒ  g g ƒ ƒ } t j | | ƒ d  S(	   NR   t   stdt   varR#   R   R   t   Dt   sem(   R   R   RR   R   R%   R$   RS   R   R    R   R   RU   (   R   RP   R   R   R   (    (    sL   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyt   test_aggregate_str_funcy   s     		c         C   s^  |  j  d ƒ } d „  } | j | ƒ } |  j d k j ƒ  } |  j d k j ƒ  } t | j ƒ } t j t j	 | g | ƒ d t
 d ƒ d t j d d ƒ} t j | j d ƒ | ƒ t j t j	 | g | ƒ d t
 d ƒ d t j d d ƒ} t j | j d ƒ | ƒ d	 „  } t ƒ  j  |  j ƒ j | ƒ } t | t ƒ sBt ‚ t | ƒ d
 k sZt ‚ d  S(   NR   c         S   s   |  j  S(   N(   t   size(   R&   (    (    sL   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyR
   ™   s    t   foot   barR   t   BCDR9   t   namec         S   s   |  j  S(   N(   RW   (   R&   (    (    sL   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyt   aggfun©   s    i    (   R   R   R   R"   t   lenR;   R?   R   R   t   arrayRK   R=   R   R%   t   xst   assert_almost_equalR   t
   isinstanceR>   (   R   R   R\   R   RX   RY   t   KRE   (    (    sL   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyt   test_aggregate_item_by_item–   s     	((	c         C   s   |  j  d d g ƒ } d „  } | j | ƒ } |  j d  d  … |  j d k f } | j  d d g ƒ j | ƒ } t j | | ƒ d  S(   NR   R#   c         S   s)   |  j  t j k r t ‚ n
 |  j ƒ  Sd  S(   N(   R9   R   t   objectt	   TypeErrorR"   (   R&   (    (    sL   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyt   func´   s    	R   (   R   R$   t   locR;   R   R   (   t   three_groupR   Rf   R   t   exp_groupedR   (    (    sL   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyt   test_wrap_agg_out±   s    	"c         C   sr   d t  j f d t  j f d t  j f g } |  j d ƒ d j | ƒ } t d d d g ƒ } t j | j	 | ƒ d  S(   NR   t   maxt   minR   R   (
   R   R   Rk   Rl   R   R   R   R   t   assert_index_equalR;   (   R   t   funcsR   t   exp_cols(    (    sL   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyt*   test_agg_multiple_functions_maintain_orderÀ   s    *c         C   s¤   d d g } d d g } |  j  d ƒ d j | ƒ } |  j  d ƒ d j | ƒ } t j | | ƒ |  j  d ƒ j | ƒ } |  j  d ƒ j | ƒ } t j | | ƒ d  S(	   NRX   R   RR   R   R   (   RX   R   (   RX   R   (   RR   RR   (   R   R   R   R   (   R   Rn   t   ex_funcsR   R   (    (    sL   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyt-   test_multiple_functions_tuples_and_non_tuplesÉ   s    c         C   sW   |  j  d ƒ } d d „  d „  g } d } t j t d | ƒ | j | ƒ Wd  QXd  S(   NR   R   c         S   s
   |  j  ƒ  S(   N(   R   (   R	   (    (    sL   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyR
   Ù   s    c         S   s
   |  j  ƒ  S(   N(   RR   (   R	   (    (    sL   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyR
   Ù   s    s<   Function names must be unique, found multiple named <lambda>R   (   R   R   R   R   R   (   R   R   Rn   R    (    (    sL   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyt,   test_agg_multiple_functions_too_many_lambdas×   s
    c   	      C   sQ  |  j  d ƒ } | j t d t j g d t j g g ƒ ƒ } | j t d t j g d t j g g ƒ ƒ } t | | g d d d g d d ƒ} | j d	 d d d ƒj d
 d	 d d ƒ } t d t j t j g g d t j t j g g g ƒ } | j	 | ƒ } t
 j | | ƒ | j	 t d t j g d t j t j g g g ƒ ƒ } | j	 t d t j g d t j t j g g g ƒ ƒ } t
 j | | ƒ d „  } d „  } t
 j t d t ƒS t d t j g d t d t j g d t j g g ƒ g g ƒ } | j	 | ƒ } Wd  QXt d t j g g d | | g g g ƒ } | j	 | ƒ } t
 j | | ƒ d  S(   NR   R   RT   t   keysR   RR   t   axisi   i    t   levelc         S   s   t  j |  ƒ S(   N(   R   R   (   R	   (    (    sL   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyRX   õ   s    c         S   s   t  j |  d d ƒS(   Nt   ddofi   (   R   RR   (   R	   (    (    sL   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyRY   ø   s    t   check_stacklevelRX   RY   (   R   R   R    R   R   RR   R   t	   swaplevelt
   sort_indexR$   R   R   t   assert_produces_warningt   FutureWarningRA   (	   R   R   t   exmeant   exstdR   t   dR   RX   RY   (    (    sL   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyt'   test_more_flexible_frame_multi_functionà   s.    --$*6!!		*c         C   s`  |  j  d ƒ } t d t d d g d d g g ƒ g d i d d 6g g ƒ } t j t d	 t ƒ | j | ƒ } Wd  QXt d t d d g d d g g ƒ g d d g g ƒ } t j t d	 t ƒ | j | ƒ } Wd  QXt j | | ƒ t d t d d g d d g g ƒ g d d g g g ƒ } t j t d	 t ƒ | j | ƒ } Wd  QXt j | | ƒ d  S(
   NR   R   RX   R   RY   RR   RT   R"   Rx   (   R   R    R   R{   R|   RA   R$   R   (   R   R   R   R   R   (    (    sL   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyt    test_multi_function_flexible_mix  s    $$$(&   t   __doc__t   numpyR   R   t   pandas.compatR    t   pandasR?   R   R   R   R   R   t   pandas.core.baseR   t   pandas.core.groupby.grouperR   t   pandas.util.testingt   utilt   testingR   R   R!   R)   R8   RG   RM   RO   t   markt   parametrizeRV   Rc   Rj   Rp   Rr   Rs   R€   R   (    (    (    sL   lib/python2.7/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyt   <module>   s2   (		
	
				!								(