ó
šxŠ\c           @   sÝ  d  d l  m  Z  d  d l Z d  d l Z d  d l m Z m 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 m Z e d e  d d	 d	 ƒ d
 e  d d	 d ƒ d d ƒ Z e
 e j j e e ƒ ƒ e ƒ Z e	 i e d 6e d 6e j e e ƒ ƒ d 6ƒ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d „  Z" d „  Z# d „  Z$ d „  Z% d „  Z& d „  Z' d „  Z( d  „  Z) d! „  Z* d" „  Z+ d# „  Z, d$ „  Z- d% „  Z. d S(&   iÿÿÿÿ(   t   datetimeN(   t   OrderedDictt   range(   t	   DataFramet   Series(   t
   date_range(   t   assert_frame_equalt   assert_series_equalt   startiÕ  i   t   endi
   t   freqt   Mint   At   Bt   Cc          C   s+   t  j d ƒ }  d t |  ƒ k s' t ‚ d  S(   Nt   Hs_   DatetimeIndexResampler [freq=<Hour>, axis=0, closed=left, label=left, convention=start, base=0](   t   test_seriest   resamplet   strt   AssertionError(   t   r(    (    sF   lib/python2.7/site-packages/pandas/tests/resample/test_resample_api.pyt   test_str   s    c          C   sš   t  j d ƒ }  |  j ƒ  } t | t ƒ s0 t ‚ t | ƒ d k sH t ‚ t  j ƒ  j d ƒ }  |  j ƒ  } t | t ƒ s~ t ‚ t | ƒ d k s– t ‚ d  S(   NR   iÙ   (	   R   R   t   meant
   isinstanceR   R   t   lent   to_frameR   (   R   t   result(    (    sF   lib/python2.7/site-packages/pandas/tests/resample/test_resample_api.pyt   test_api   s    c       	   C   s0  t  i t j d d d d d d ƒ d 6d d d	 d	 g d
 6d d d d g d 6ƒ j d ƒ }  t j d d d ƒj ƒ  t j d d d ƒj ƒ  } t j j d g d d	 g d | g d d
 d g ƒ} t  i d g d d g d g d d g d 6d | ƒ} |  j d
 ƒ j d „  ƒ d g } t	 | | ƒ d  S(   NR   s
   2016-01-01t   periodsi   R
   t   Wt   datei   i   t   groupi   i   i   i   t   vals
   2016-01-03s
   2016-01-17t   namest   indexc         S   s   |  j  d ƒ j ƒ  S(   Nt   1D(   R   t   ffill(   t   x(    (    sF   lib/python2.7/site-packages/pandas/tests/resample/test_resample_api.pyt   <lambda>?   s    (
   R   t   pdR   t	   set_indext   tolistt
   MultiIndext   from_arrayst   groupbyt   applyR   (   t   dft   iR"   t   expectedR   (    (    sF   lib/python2.7/site-packages/pandas/tests/resample/test_resample_api.pyt   test_groupby_resample_api,   s    
"'0	c          C   s¢   t  i d d g d d 6t j d d d ƒd 6t j j d ƒ d	 6ƒ }  |  j d ƒ j d ƒ j d
 ƒ j	 ƒ  } |  j d ƒ j d
 d d ƒj	 ƒ  } t
 | | ƒ d  S(   NR   R   i   t   keys
   2016-01-01R   i
   t   datest   valuest   Dt   on(   R   R'   R   t   npt   randomt   randnR(   R,   R   R   R   (   R.   R0   R   (    (    sF   lib/python2.7/site-packages/pandas/tests/resample/test_resample_api.pyt   test_groupby_resample_on_apiC   s    '$c          C   s’   t  j d ƒ }  |  j ƒ  |  j ƒ  } |  j d „  ƒ } t j | | ƒ t j d ƒ }  |  j ƒ  |  j ƒ  } |  j d „  ƒ } t j | | ƒ d  S(   NR   c         S   s   |  j  ƒ  |  j ƒ  S(   N(   t   maxR   (   R%   (    (    sF   lib/python2.7/site-packages/pandas/tests/resample/test_resample_api.pyR&   X   s    c         S   s   |  j  ƒ  |  j ƒ  S(   N(   R;   R   (   R%   (    (    sF   lib/python2.7/site-packages/pandas/tests/resample/test_resample_api.pyR&   ^   s    (	   R   R   R;   R   t   pipet   tmR   t
   test_frameR   (   R   R0   R   (    (    sF   lib/python2.7/site-packages/pandas/tests/resample/test_resample_api.pyt	   test_pipeR   s    c          C   sÊ   t  j d ƒ }  t j |  j j t  j ƒ t  j d ƒ d }  |  j j t  j d k sZ t ‚ t  j d ƒ d }  t j |  j j t  j d d g ƒ t  j d ƒ d }  t j |  j j t  j d d g ƒ d  S(   NR   R   i   R   i    (   R   R   (   R   R   (   R>   R   R=   t   assert_index_equalt   _selected_objt   columnst   nameR   (   R   (    (    sF   lib/python2.7/site-packages/pandas/tests/resample/test_resample_api.pyt   test_getitemb   s    c          C   sr   t  j d ƒ }  t j t |  j d g ƒ t j t |  j d d g ƒ t j t d d ƒ |  d d g Wd  QXd  S(   NR   R5   R   t   matchs   ^[^A]+$(   R>   R   t   pytestt   raisest   KeyErrort   __getitem__(   t   g(    (    sF   lib/python2.7/site-packages/pandas/tests/resample/test_resample_api.pyt   test_select_bad_colst   s
    c          C   s6   t  j d ƒ }  t j |  j j ƒ  |  d j ƒ  ƒ d  S(   NR   R   (   R>   R   R=   R   R   t   sum(   R   (    (    sF   lib/python2.7/site-packages/pandas/tests/resample/test_resample_api.pyt   test_attribute_access€   s    c          C   s   x† d d d g D]u }  t  j d d d d d ƒ} t t j t | ƒ ƒ d	 | ƒ} | j d
 ƒ } t | |  ƒ | j ƒ  t | |  ƒ q Wd  S(   Nt   groupst   ngroupst   indicess   1/1/2012R   id   R
   t   SR"   t   30s(	   R'   R   R   R7   t   arangeR   R   t   getattrR   (   t   attrt   rngt   tst   rs(    (    sF   lib/python2.7/site-packages/pandas/tests/resample/test_resample_api.pyt   test_api_compat_before_use†   s    !
c          C   s¥   t  }  d |  d <|  j d ƒ } | d d g j ƒ  } t j | j j ƒ  | j j ƒ  g d d ƒ} t | | ƒ | d d d g j ƒ  } | j ƒ  } t | | ƒ d  S(	   Nt   fooR5   R   R   R   t   axisi   R   (   R>   R   RL   R'   t   concatR   R   R   (   R.   R   R   R0   (    (    sF   lib/python2.7/site-packages/pandas/tests/resample/test_resample_api.pyt   tests_skip_nuisance—   s    
-c       	   C   sž   t  j d d d d d ƒ}  t t j t |  ƒ d d ƒd |  ƒ} | j d	 ƒ j ƒ  } t d
 d d d d g d t  j d d d	 d d ƒƒ} t | | ƒ d  S(   Ns   1/1/2012R   id   R
   RQ   t   dtypet   int64R"   t   20si    i   i(   i<   iP   s   2012-01-01 00:00:00i   (	   R'   R   R   R7   RS   R   R   t   asfreqR   (   RV   RW   R   R0   (    (    sF   lib/python2.7/site-packages/pandas/tests/resample/test_resample_api.pyt'   test_downsample_but_actually_upsampling¥   s    'c          C   sÍ   t  j d d d d d ƒ}  t t j t |  ƒ ƒ d |  ƒ} | j d d d	 d
 d d d d d d d g } t j t	 d t
 ƒ  | j d d d d d ƒ} Wd  QX| j d ƒ j ƒ  j ƒ  } t | | ƒ d  S(   Ns   1/1/2012R   id   R
   RQ   R"   i    i   i   i   i   i   i   i   i   i   i   t   check_stacklevelt   2st   howR   t   fill_methodR$   (   R'   R   R   R7   RS   R   t   ilocR=   t   assert_produces_warningt   FutureWarningt   FalseR   R   R$   R   (   RV   RW   t   ts2R   R0   (    (    sF   lib/python2.7/site-packages/pandas/tests/resample/test_resample_api.pyt*   test_combined_up_downsampling_of_irregular²   s    !.
!c          C   sS   t  j d ƒ }  t  j t j d d ƒ ƒ j d ƒ } |  j d ƒ } t | | ƒ d  S(   Nt   20minR
   R   (   R   R   R,   R'   t   Groupert	   transformR   (   R   R0   R   (    (    sF   lib/python2.7/site-packages/pandas/tests/resample/test_resample_api.pyt   test_transformÃ   s
    c          C   sÎ   t  j d d d d d ƒ}  t t j t |  ƒ d d ƒd |  ƒ} | j d	 ƒ } | j ƒ  } | j d
 d ƒ } t	 | | ƒ | j
 ƒ  } | j d
 d ƒ } t	 | | ƒ t j t ƒ  | j d ƒ Wd  QXd  S(   Ns   1/1/2012R   i
   R
   t   2SR^   R_   R"   t   st   methodR$   t   bfilli    (   R'   R   R   R7   RS   R   R   R$   t   fillnaR   Rt   RF   RG   t
   ValueError(   RV   RW   R   R0   R   (    (    sF   lib/python2.7/site-packages/pandas/tests/resample/test_resample_api.pyt   test_fillnaÌ   s    'c          C   sd   t  j d ƒ }  t  j t j d d ƒ ƒ } x3 | |  g D]% } | j d „  ƒ } t | t  ƒ q7 Wd  S(   NRm   R
   c         S   s   |  S(   N(    (   R%   (    (    sF   lib/python2.7/site-packages/pandas/tests/resample/test_resample_api.pyR&   æ   s    (   R   R   R,   R'   Rn   R-   R   (   R   RJ   t   tR   (    (    sF   lib/python2.7/site-packages/pandas/tests/resample/test_resample_api.pyt   test_apply_without_aggregationß   s
    c       	   C   sÈ   t  t j j d d ƒ d t j d d d d d ƒd d	 d
 d g ƒ}  |  j d ƒ } t j t	 d t
 ƒL | d	 d
 d g j i d d 6d d 6ƒ } | j i d d 6d d 6ƒ } Wd  QXt | | ƒ d  S(   Niè  i   R"   s   1/1/2012R
   RQ   R   RB   R   R   R   t   3TRc   R   t   r1RL   t   r2(   R   R7   R8   R9   R'   R   R   R=   Rh   Ri   Rj   t   aggR   (   R.   R   R0   R   (    (    sF   lib/python2.7/site-packages/pandas/tests/resample/test_resample_api.pyt   test_agg_consistencyê   s    
*#c       
   C   sM  t  j j d ƒ t t d d d ƒ t d d d ƒ d d ƒ}  d |  _ t t  j j d d ƒ d	 t d
 ƒ d |  ƒ} | j	 ƒ  } | j
 ƒ  } t j j t d ƒ | j g d d d g ƒ| _ | j d ƒ } | | j d d d ƒ| j d d d ƒ| j t j d d ƒ ƒ g } | d j ƒ  } | d j ƒ  } | d j ƒ  } | d j ƒ  }	 | d j ƒ  }
 | d j ƒ  } t j | | |	 |
 g d d ƒ} t j j d d g d d g g ƒ | _ x6 | D]. } | j t  j t  j g ƒ } t | | ƒ q¾Wt j | |
 g d d ƒ} xD | D]< } | j i t  j d 6t  j d 6ƒ } t | | d t ƒqWt j | | g d d ƒ} t j j d d g ƒ | _ x7 | D]/ } | j i d d g d 6ƒ } t | | ƒ qWt j | | g d d ƒ} d d g | _ x' | D] } | d j d d g ƒ } qóWt | | ƒ t j | | g d d ƒ} t j j d d g ƒ | _ xa | D]Y } t j t d t  ƒ) | j i i d d 6d d 6d 6ƒ } Wd  QXt | | d t ƒq`Wt j | | |	 | g d d ƒ} t j j d  d! d" d# g ƒ | _ xv | D]n } t j t d t  ƒ> | j i i d d 6d d 6d 6i d d 6d d 6d 6ƒ } Wd  QXt | | d t ƒqWt j | | |	 |
 g d d ƒ} t j j d$ d% d& d' g ƒ | _ xJ | D]B } | j i d d g d 6d d g d 6ƒ } t | | d t ƒqÁWt j | | |	 | g d d ƒ} t j j d( d) d* d+ g ƒ | _ d  S(,   NiÒ  iÕ  i   i
   R
   R5   R   i   RB   t   ABR"   R!   t   2DR6   t   levelR   R   R[   R   t   stdt
   check_likeRL   Rc   t   mean2t   sum2R{   R|   (   R   R   (   R   R‚   (   R   R   (   R   RL   (   R   R   (   R   RL   (   R   R„   (   R   R…   (   R   R   (   R   R‚   (   R   R   (   R   R‚   (   R{   R   R   (   R{   R   RL   (   R|   R   R   (   R|   R   RL   (!   R7   R8   t   seedR   R    RC   R   t   randt   listt   reset_indext   copyR'   R*   R+   R   R"   R   R,   Rn   R   R‚   RL   R\   t   from_productRB   t	   aggregateR   t   Truet   from_tuplesR=   Rh   Ri   Rj   (   R"   R.   t   df_colt   df_multR   t   casest   a_meant   a_stdt   a_sumt   b_meant   b_stdt   b_sumR0   Rx   R   (    (    sF   lib/python2.7/site-packages/pandas/tests/resample/test_resample_api.pyt   test_aggþ   s–    	-!
*!
!!!c    
      C   sg  t  j j d ƒ t t d d d ƒ t d d d ƒ d d ƒ}  d |  _ t t  j j d d ƒ d	 t d
 ƒ d |  ƒ} | j	 ƒ  } | j
 ƒ  } t j j t d ƒ | j g d d d g ƒ| _ | j d ƒ } | | j d d d ƒ| j d d d ƒ| j t j d d ƒ ƒ g } x | D]w } | j i t  j d 6d „  d 6ƒ } | d j d „  ƒ } t j | d j ƒ  | g d d ƒ}	 t | |	 d t ƒqWt j | d j ƒ  | d j ƒ  | d j ƒ  | d j ƒ  g d d ƒ}	 t j j d d d d g ƒ |	 _ xt | D]l } t j t d t ƒ< | d d g j t  d t  j f d t  j f g ƒ ƒ } Wd  QXt | |	 d t ƒqWt j | d j ƒ  | d j! ƒ  | d j ƒ  | d j! ƒ  g d d ƒ}	 t j j d  d! d" d# g ƒ |	 _ xT | D]L } | j t  d d d g f d d d g f g ƒ ƒ } t | |	 d t ƒqãWxT | D]L } | d d g j i d d g d 6d d g d 6ƒ } t | |	 d t ƒq:Wxe| D]]} t j t d t ƒ% | d j i d d g d 6ƒ } Wd  QXt j | d j ƒ  | d j! ƒ  g d d ƒ}	 t j j d$ d% g ƒ |	 _ t | |	 d t ƒt j | d j d d g ƒ | d j d d g ƒ g d d ƒ}	 t j j d& d' d( d) g ƒ |	 _ t j t d t ƒ2 | d j i d d g d 6d d g d 6ƒ } Wd  QXt | |	 d t ƒq‘Wxn | D]f } t" j# t$ ƒ O t j t d t ƒ3 | d g j i d d g d 6d d g d 6ƒ Wd  QXWd  QXqùWd  S(*   NiÒ  iÕ  i   i
   R
   R5   R   i   RB   R   R"   R!   R€   R6   R   R   c         S   s   t  j |  d d ƒS(   Nt   ddofi   (   R7   R‚   (   R%   (    (    sF   lib/python2.7/site-packages/pandas/tests/resample/test_resample_api.pyR&   q  s    R   c         S   s   t  j |  d d ƒS(   NR™   i   (   R7   R‚   (   R%   (    (    sF   lib/python2.7/site-packages/pandas/tests/resample/test_resample_api.pyR&   r  s    R[   Rƒ   t   result1t   result2Rc   RL   R‚   R   (   Rš   R   (   Rš   R   (   R›   R   (   R›   R   (   R   RL   (   R   R‚   (   R   R   (   R   R‚   (   R   RL   (   R   R‚   (   R   RL   (   R   R‚   (   R   R   (   R   R‚   (%   R7   R8   R†   R   R    RC   R   R‡   Rˆ   R‰   RŠ   R'   R*   R+   R   R"   R   R,   Rn   R}   RL   R-   R\   R   R   R   RŽ   RB   R=   Rh   Ri   Rj   R   R‚   RF   RG   RH   (
   R"   R.   R   R   R   R‘   Rx   R   t   rcustomR0   (    (    sF   lib/python2.7/site-packages/pandas/tests/resample/test_resample_api.pyt   test_agg_miscY  s     	-%	
	 
&		

c             s‡  t  j j d ƒ t t d d d ƒ t d d d ƒ d d ƒ}  d |  _ t t  j j d d ƒ d	 t d
 ƒ d |  ƒ} | j	 ƒ  } | j
 ƒ  } t j j t d ƒ | j g d d d g ƒ| _ | j d ƒ } | | j d d d ƒ| j d d d ƒ| j t j d d ƒ ƒ g } x  | D] ‰ ‡  ‡ f d †  ‰  qWxN| D]F‰ t j ˆ d j ƒ  ˆ d j ƒ  ˆ d j ƒ  ˆ d j ƒ  g d d ƒ} t j j d d d d g ƒ | _ t j t d t ƒF ˆ d d g j i i d d g d 6d 6i d d g d 6d 6ƒ } Wd  QXt | | d t ƒt j t d t ƒ< ˆ j i i d d g d 6d 6i d d g d 6d 6ƒ } Wd  QXt | | d t ƒq9Wd  S(   NiÒ  iÕ  i   i
   R
   R5   R   i   RB   R   R"   R!   R€   R6   R   c              sI   ˆ j  i i d d g d 6d 6i d d g d 6d 6ƒ t j t ˆ  ƒ d  S(   NR   RL   R   R{   R   R|   (   RŒ   RF   RG   Rv   (    (   t   fRx   (    sF   lib/python2.7/site-packages/pandas/tests/resample/test_resample_api.pyRž   Ô  s    R   R   R[   t   raR   R‚   t   rbRc   Rƒ   (   RŸ   R   (   RŸ   R‚   (   R    R   (   R    R‚   (   R7   R8   R†   R   R    RC   R   R‡   Rˆ   R‰   RŠ   R'   R*   R+   R   R"   R   R,   Rn   R\   R   R‚   RŽ   RB   R=   Rh   Ri   Rj   R}   R   R   (   R"   R.   R   R   R   R‘   R0   R   (    (   Rž   Rx   sF   lib/python2.7/site-packages/pandas/tests/resample/test_resample_api.pyt   test_agg_nested_dictsÀ  s>    	--
' 
 c          C   sÞ   i t  d d d d ƒ d 6d d 6d d	 6i t  d d d d ƒ d 6d d 6d d	 6i t  d d d d
 ƒ d 6d d 6d d	 6g }  t |  ƒ j d ƒ } t j t ƒ 9 | j d ƒ j i d g d 6d g d	 6d g d 6ƒ Wd  QXd  S(   Niá  i   i   i    t   dtg      ð?R%   g       @t   yi   g      @g      ø?t   30TR   t   medianRL   t   z(   R    R   R(   RF   RG   RH   R   R}   (   t   dataR.   (    (    sF   lib/python2.7/site-packages/pandas/tests/resample/test_resample_api.pyt&   test_try_aggregate_non_existing_columnì  s    ''-
c          C   s+  t  t d d d ƒ t d d d ƒ d d ƒ}  t j t |  ƒ d t j ƒ} t i |  d 6| d 6d	 t j j	 | |  g d
 d d g ƒƒ} t i | d 6d	 |  ƒ} t
 j t ƒ  | j d d d ƒWd  QXt
 j t ƒ  | j d d d d d ƒWd  QXt
 j t ƒ  | j d d d d g ƒWd  QXt
 j t ƒ  | j d d d d g ƒWd  QXt
 j t ƒ  | j d d d ƒj ƒ  Wd  QXt
 j t ƒ  | j d d d ƒj ƒ  Wd  QX| j d ƒ j ƒ  } d | j _ t | | j d d d ƒj ƒ  ƒ d | j _ t | | j d d d ƒj ƒ  ƒ d  S(   NiÕ  i   i
   R
   R5   R^   R   t   aR"   R!   t   vt   dR€   R   R6   (   R   R    R7   RS   R   R_   R   R'   R*   R+   RF   RG   t	   TypeErrorR   Rv   RH   Ra   RL   R"   RC   R   (   R"   RV   R.   t   df_expt   exp(    (    sF   lib/python2.7/site-packages/pandas/tests/resample/test_resample_api.pyt   test_selection_api_validationü  s0    "(/   R    t   numpyR7   RF   t   pandas.compatR   R   t   pandasR'   R   R   t   pandas.core.indexes.datetimesR   t   pandas.util.testingt   utilt   testingR=   R   R   t   dtiR8   R‡   R   R   RS   R>   R   R   R1   R:   R?   RD   RK   RM   RY   R]   Rb   Rl   Rp   Rw   Ry   R~   R˜   R   R¡   R¨   R¯   (    (    (    sF   lib/python2.7/site-packages/pandas/tests/resample/test_resample_api.pyt   <module>   sD   !-																		[	g	,	