U
    f/eR                     @   sz  d dl m Z  d dlZd dlZd dlZd dlmZmZ d dlm	Z
 d dlmZ ee ddde ddddd	ZeejeeeZeeeeeed
Zejdd Zdd Zdd Zdd Zdd Zdd Zdd Zejddgddggdd Zdd Zd d! Z d"d# Z!d$d% Z"d&d' Z#d(d) Z$d*d+ Z%d,d- Z&d.d/ Z'd0d1 Z(d2d3 Z)d4d5 Z*d6d7 Z+d8d9 Z,d:d; Z-ejd<d=d>d?d@dAdBdCdDgdEdF Z.dGdH Z/ejdIdJdKdLd dMdNdOdPdQdRdSdTg	dUdVdd dRdWdXgdYdZf
d[d\d]dgd^ dLdVd_ddNd`dNd`dNd`dNd`dNg
dadf
dJdKdLd dMdNdOdPdQdRdSdTg	dUdVdbd dRdWdcdTgddd`f
dJdKdLd dMdNdOdPdQdRdSdTg	dUdeddMdQdfdfgdgdZf
gdhdi Z0dS )j    )datetimeN)	DataFrameSeries)
date_range     
   ZMin)startendfreq)ABCc                   C   s   t  S N)_test_framecopy r   r   K/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/resample/test_resample_api.py
test_frame   s    r   c                  C   s<   t d} dt| kstt jddd} dt| ks8td S )NHziDatetimeIndexResampler [freq=<Hour>, axis=0, closed=left, label=left, convention=start, origin=start_day]z
2000-01-01)originzsDatetimeIndexResampler [freq=<Hour>, axis=0, closed=left, label=left, convention=start, origin=2000-01-01 00:00:00])test_seriesresamplestrAssertionError)rr   r   r   test_str   s    
r   c                  C   sh   t d} |  }t|ts tt|dks0tt  d} |  }t|tsTtt|dksdtd S )Nr      )	r   r   mean
isinstancer   r   lenZto_framer   )r   resultr   r   r   test_api(   s    
r"   c                  C   s   t tddddddddgddd	d
gdd} tdd
d tdd
d  }tjjdgd
 dgd
  |gddgd}t ddgd	 dg d	gd	  d
g i|d}| ddd dg }t	
|| d S )N
2016-01-01   W)r	   periodsr   r                  )dategroupvalr,   z
2016-01-03r&   z
2016-01-17r-   namesr.   indexc                 S   s   |  d S )N1D)r   ffillxr   r   r   <lambda>I       z+test_groupby_resample_api.<locals>.<lambda>)r   r   	set_indextolistpd
MultiIndexfrom_arraysgroupbyapplytmassert_frame_equal)dfir3   expectedr!   r   r   r   test_groupby_resample_api5   s     


(,rF   c                  C   sj   t ddgd tdddtjdd} | dd	d
 }| d	jd
dd }t	
|| d S )Nr   r   r(   r#   r   r/   )keydatesvaluesrH   rG   Don)r   r   nprandomrandnr:   r?   r   r   rA   rB   )rC   rE   r!   r   r   r   test_groupby_resample_on_apiM   s    


rP   c                 C   sl   t d}| |  }|dd }t|| | d}| |  }|dd }t|| d S )Nr   c                 S   s   |   |   S r   maxr   r6   r   r   r   r8   f   r9   ztest_pipe.<locals>.<lambda>c                 S   s   |   |   S r   rQ   r6   r   r   r   r8   l   r9   )r   r   rR   r   piperA   assert_series_equalrB   )r   r   rE   r!   r   r   r   	test_pipe`   s    

rU   c                 C   s   |  d}t|jj| j |  dd }|jj| jd ks@t|  dd }t|jj| jddg  |  dd }t|jj| jddg  d S )Nr   r   r   r   r   r   )r   rA   Zassert_index_equalZ_selected_objcolumnsnamer   r   r   r   r   r   test_getitemp   s    
rZ   rG   rJ   r   c              	   C   s4   | d}d}tjt|d ||   W 5 Q R X d S )Nr   z^\"Columns not found: 'D'\"$match)r   pytestraisesKeyError)rG   r   gmsgr   r   r   test_select_bad_cols   s    
rb   c                 C   s(   |  d}t|j |d   d S )Nr   r   )r   rA   rT   r   sumrY   r   r   r   test_attribute_access   s    
rd   c                  C   sX   dD ]N} t dddd}ttt||d}|d}t||  |  t||  qd S )N)groupsZngroupsindices1/1/2012d   Sr&   r   r2   Z30s)r   r   rM   aranger    r   getattrr   )attrrngtsrsr   r   r   test_api_compat_before_use   s    

rq   c                 C   sz   | }d|d< | d}|ddg  }tj|j |j gdd}t|| |dddg  }| }t|| d S )	NZfoorJ   r   r   r   r   Zaxisr   )r   rc   r<   concatr   r   rA   rB   )r   rC   r   r!   rE   r   r   r   tests_skip_nuisance   s    
rt   c                  C   sf   t dddd} ttjt| dd| d}|d }td	d
dddgt ddddd}t|| d S )Nrg   rh   ri   rj   int64dtyper2   Z20sr      (   <   P   2012-01-01 00:00:00r(   r   r&   )	r   r   rM   rk   r    r   asfreqrA   rT   )rn   ro   r!   rE   r   r   r   'test_downsample_but_actually_upsampling   s    r   c                  C   s   t dddd} ttt| | d}|jdddd	d
ddddddg }|d  }tddddddddddddddddgt	j
dddddd d!d"d#d$d%d&d'd(d)d*gd+d,d-d}t|| d S ).Nrg   rh   ri   rj   r2   r   r   r'      r(   r*                  Z2sg      ?g      @g      @g      @g      &@g      .@g      0@g      9@g      >@r|   z2012-01-01 00:00:02z2012-01-01 00:00:04z2012-01-01 00:00:06z2012-01-01 00:00:08z2012-01-01 00:00:10z2012-01-01 00:00:12z2012-01-01 00:00:14z2012-01-01 00:00:16z2012-01-01 00:00:18z2012-01-01 00:00:20z2012-01-01 00:00:22z2012-01-01 00:00:24z2012-01-01 00:00:26z2012-01-01 00:00:28z2012-01-01 00:00:30zdatetime64[ns]2S)rw   r   )r   r   rM   rk   r    Zilocr   r   r5   r<   ZDatetimeIndexrA   rT   )rn   ro   Zts2r!   rE   r   r   r   *test_combined_up_downsampling_of_irregular   sZ     *r   c                  C   s<   t d} t tjddd}| d}t|| d S )N20minr   r   )r   r   r?   r<   GrouperZ	transformrA   rT   )r   rE   r!   r   r   r   test_transform   s    

r   c               	   C   s   t dddd} ttjt| dd| d}|d}| }|jd	d
}t	|| |
 }|jdd
}t	|| d}tjt|d |d W 5 Q R X d S )Nrg   r   r   rj   ru   rv   r2   sr5   )methodbfillzTInvalid fill method\. Expecting pad \(ffill\), backfill \(bfill\) or nearest\. Got 0r[   r   )r   r   rM   rk   r    r   r5   ZfillnarA   rT   r   r]   r^   
ValueError)rn   ro   r   rE   r!   ra   r   r   r   test_fillna   s    
r   c                  C   sH   t d} t tjdd}|| fD ]}|dd }t|t  q$d S )Nr   r   c                 S   s   | S r   r   r6   r   r   r   r8     r9   z0test_apply_without_aggregation.<locals>.<lambda>)r   r   r?   r<   r   r@   rA   rT   )r   r`   tr!   r   r   r   test_apply_without_aggregation  s
    
r   c               	   C   sd   t tjddtdddddddgd	} | d
}d}tjt|d |	ddd W 5 Q R X d S )N  r   rg   ri   r}   r   r   r   r3   rW   3Tz'Column\(s\) \['r1', 'r2'\] do not existr[   r   rc   r1r2
r   rM   rN   rO   r   r   r]   r^   r_   aggrC   r   ra   r   r   r   test_agg_consistency  s    
r   c               	   C   sb   t tjddtddddddgd} | d	}d
}tjt|d |	ddd W 5 Q R X d S )Nr   r'   rg   ri   r}   r   ar   r   z#Column\(s\) \[2, 'b'\] do not existr[   r   rc   )r'   br   r   r   r   r   'test_agg_consistency_int_str_column_mix/  s    
r   c               
   C   st  t jd ttdddtddddd} d| _tt jddtd	| d
}|	 }|
 }tjjtd|jgddgd|_|d}||jddd|jddd|tjddg}|d  }|d  }|d  }|d  }	|d  }
|d  }tj|||	|
gdd}tjddgddgg|_|D ]$}|t jt jg}t|| q0tj||
gdd}|D ]*}|t jt jd}tj||dd qltj||gdd}tjddg|_|D ]$}|dddgi}t|| qtj||gdd}ddg|_|D ]}|d ddg}qt|| d}|D ]:}tjtjj j!|d |ddddi W 5 Q R X q4tj|||	|gdd}tjdddd g|_|D ]B}tjtjj j!|d" |dddddd!d W 5 Q R X qtj|||	|
gdd}tjddd"d#g|_|D ].}|ddgddgd}tj||dd qtj|||	|gdd}tjd$d%d&d'g|_d S )(N  r   r   r   rJ   r   r,   r'   ABrW   r3   r3   r0   2DrK   levelr   r   rr   r   stdrV   TZ
check_like)r   r   r   r   rc   nested renamer is not supportedr[   )r   rc   r   rc   )r   mean2)r   sum2)r   r   r   r   r   r   )r   r   r   )r   r   rc   )r   r   r   )r   r   rc   )"rM   rN   seedr   r   rX   r   randlistreset_indexr   r<   r=   r>   ranger3   r   r?   r   r   r   rc   rs   Zfrom_productrW   	aggregaterA   rB   from_tuplesr]   r^   corebaseSpecificationError)r3   rC   df_coldf_multr   casesZa_meanZa_stdZa_sumZb_meanZb_stdZb_sumrE   r   r!   ra   r   r   r   test_aggB  s     

"

r   c               
   C   s,  t jd ttdddtddddd} d| _tt jddtd	| d
}|	 }|
 }tjjtd|jgddgd|_|d}||jddd|jddd|tjddg}|D ]V}|t jdd d}|d dd }tj|d  |gdd}	tj||	dd qtj|d  |d  |d  |d  gdd}	tjddddg|	_d}
|D ]<}tjt|
d" |ddg t jt jd W 5 Q R X qdtj|d  |d  |d  |d  gdd}	tjd d!d"d#g|	_|D ].}|d$d%gd&d%gd}tj||	dd q|D ]6}|ddg d$d%gd&d%gd}tj||	dd q&d'}
|D ]x}tjtj j!j"|
d |d dd$d%gi W 5 Q R X tjtj j!j"|
d" |d d$d%gd&d%gd W 5 Q R X qfd(}
|D ]>}tjt|
d$ |dg d$d%gd&d%gd W 5 Q R X qd S ))Nr   r   r   r   rJ   r   r,   r'   r   r   r3   r0   r   rK   r   c                 S   s   t j| ddS Nr   )ZddofrM   r   r6   r   r   r   r8     r9   ztest_agg_misc.<locals>.<lambda>rV   r   c                 S   s   t j| ddS r   r   r6   r   r   r   r8     r9   r   rr   Tr   )result1r   )r   r   )result2r   )r   r   z1Column\(s\) \['result1', 'result2'\] do not existr[   )r   r   r   r   r   r   rc   r   r   r   z Column\(s\) \['B'\] do not exist)#rM   rN   r   r   r   rX   r   r   r   r   r   r<   r=   r>   r   r3   r   r?   r   r   rc   r@   rs   rA   rB   r   r   rW   r]   r^   r_   r   r   r   r   )r3   rC   r   r   r   r   r   r!   ZrcustomrE   ra   r   r   r   test_agg_misc  sn     
* 
** 
  *r   c               
   C   s  t jd ttdddtddddd} d| _tt jddtd	| d
}|	 }|
 }tjjtd|jgddgd|_|d}||jddd|jddd|tjddg}d}|D ]D}tjtjjj|d& |dddgidddgid W 5 Q R X q|D ]}tjtjjj|d. |ddg dddgidddgid W 5 Q R X tjtjjj|d& |dddgidddgid W 5 Q R X qd S )Nr   r   r   r   rJ   r   r,   r'   r   r   r3   r0   r   rK   r   r   r[   r   r   rc   r   r   rar   rbrV   )rM   rN   r   r   r   rX   r   r   r   r   r   r<   r=   r>   r   r3   r   r?   r   r]   r^   r   r   r   r   r   )r3   rC   r   r   r   r   ra   r   r   r   r   test_agg_nested_dicts  s6     
,r   c               	   C   s   t dddddddt dddddddt ddddd	d
dg} t| d}d}tjt|d$ |ddgdgdgd W 5 Q R X d S )Ni  r)   r   r   g      ?g       @)dtr7   yr'   g      @g      ?r   z Column\(s\) \['z'\] do not existr[   Z30Tr   Zmedianrc   )r7   r   z)r   r   r:   r]   r^   r_   r   r   )datarC   ra   r   r   r   &test_try_aggregate_non_existing_column  s    r   c               	   C   s  t tdddtddddd} tjt| tjd}t| |dtjj	|| gdd	gd
d}td|i| d}d}t
jt|d |jddd W 5 Q R X d}t
jt|d |jddd	d W 5 Q R X d}t
jt|d |jdddgd W 5 Q R X d}t
jt|d |jdddgd W 5 Q R X d}t
jt|d |jdd	d  W 5 Q R X t
jt|d |jddd  W 5 Q R X |d }d|j_t||jddd  d	|j_t||jdd	d  d S )Nr   r   r   rJ   r   rv   )r,   r   vdr0   r2   r   zaOnly valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'Int64Index'r[   r   r   z2The Grouper cannot specify both a key and a level!r,   )rL   r   zunhashable type: 'list'rK   z#\"Level \['a', 'date'\] not found\"z|Upsampling from level= or on= selection is not supported, use \.set_index\(\.\.\.\) to explicitly set index to datetime-like)r   r   rM   rk   r    ru   r   r<   r=   r>   r]   r^   	TypeErrorr   r   r_   r~   rc   r3   rX   rA   rB   )r3   rn   rC   Zdf_expra   expr   r   r   test_selection_api_validation  s>    r   col_namet2Zt2xZt2qZT_2MZt2pZt2mZt2m1ZT2Mc                 C   s   t ttdtddddd| gd}|ddg}t d	d
dgtdddddtj| gdggdgdggdd}t	|| d S )N   z
2017-01-01Z15minzEurope/Berlin)r	   r   r&   tzr   Z1dr   g     G@g     a@g     ph@rJ   r   r   )levelscodes)
r   r   r   r   r   r   r<   r=   rA   rB   )r   rC   r!   rE   r   r   r   *test_agg_with_datetime_index_list_agg_funcG  s"    	
   r   c                  C   s   t dddd} t| }|jdd t|| d}|d}ttd	td	g| d d d
 d}|d}t	
|| |d}t	
|| |d}t	
|| |d}t	
|| d S )Nz
2020-01-01z
2020-01-02Z1hr   F)writer2   r4   r      lastfirstrR   min)r   rM   Z
zeros_likeZsetflagsr   r   r<   Z	Timestampr   rA   rT   )r3   ZarrZserrp   rE   r!   r   r   r   test_resample_agg_readonly`  s    

&



r   zLstart,end,freq,data,resample_freq,origin,closed,exp_data,exp_end,exp_periodsz2000-10-01 23:30:00z2000-10-02 00:26:00Z7minr   r)   	      r         r   Z17minr
      ?   z20001002 00:26:00r$   z20200101 8:26:35z20200101 9:31:58Z77s3   rightr(   z2020-01-01 09:30:45left'   z20001002 00:43:00Zend_day-   z2000-10-02 00:29:00c
                 C   sT   t | ||d}
t||
d}|j|||d }t|t |||	dd}t|| d S )Nr   r2   )r   closed)r
   r   r&   )r   r   r   rc   rA   rT   )r	   r
   r   r   Zresample_freqr   r   Zexp_dataZexp_endZexp_periodsrn   ro   resrE   r   r   r   test_end_and_end_day_originx  s    Ar   )1r   ZnumpyrM   r]   Zpandasr<   r   r   Zpandas._testingZ_testingrA   Zpandas.core.indexes.datetimesr   ZdtirN   r   r    r   rk   r   Zfixturer   r   r"   rF   rP   rU   rZ   markZparametrizerb   rd   rq   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s   

	8WK#1 


5