U
    sVcy                  '   @   s  d dl m 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
 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dd Zej !ddgddggdd  Z"d!d" Z#ej !d#d$d%d&gd'd( Z$d)d* Z%d+d, Z&d-d. Z'd/d0 Z(ej !d1dd2gd3d4 Z)d5d6 Z*ej j!d7d8d9 d:d9 gd;d<gd=d>d? Z+d@dA Z,dBdC Z-dDdE Z.dFdG Z/dHdI Z0ej !d7dJgdKdLgddMidNdOdPgdQdR Z1dSdT Z2dUdV Z3dWdX Z4ej !dYdZd[d\d]d^d_d`dagdbdc Z5ddde Z6ej !dfdgdhdid djdkdldmdndodpdqg	drdsdd dodtdugdvdwf
dxdydzdgd{ didsd|ddkd}dkd}dkd}dkd}dkg
d~df
dgdhdid djdkdldmdndodpdqg	drdsdd dodtddqgdd}f
dgdhdid djdkdldmdndodpdqg	drdddjdnddgddwf
gdd Z7ej !ddMdddgifdMddgdgdfdMej8ddgifdNdddgifdNdddgifdNej8ddgifdJddd}gifdJddgd}gdfdJej8dgd}gdfdLdddgifdLddgdgdfdLej8dgdgdfdddd}gifdddgd}gdfdej8dgd}gdfddddgifdddgdgdfdej8dgdgdfdKdddgifdKdddgifdKej8ddgifdOdddgifdOdddgifdOej8ddgifddddgifddej8ddgifddddgifddej8ddgifddddgifddej8ddgifg!dd Z9ej !dddMddgfdMej8dgfdddNej8dfddJddgfdJej8dgfddLddgfdLej8dgfddddgfdej8dgfddddgfdej8dgfgdd Z:ej !ddddgdd Z;dS )    )datetimeN)lib)	DataFrameNamedAgg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-xj8nt62q/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]
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   len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valr0   z
2016-01-03r*   z
2016-01-17r1   namesr2   indexc                 S   s   |  d S )N1D)r   ffillxr   r   r   <lambda>L       z+test_groupby_resample_api.<locals>.<lambda>)r   r   	set_indextolistpd
MultiIndexfrom_arraysgroupbyapplytmassert_frame_equal)dfir7   expectedr%   r   r   r   test_groupby_resample_api8   s     


(,rJ   c               	   C   s   t ddgd tdddtjdd} d}tjt|d	8 | d
	d
d }| 	dj
dd
d }W 5 Q R X t|| d S )Nr   r   r,   r'   r
   r3   )keydatesvalues!The default value of numeric_onlymatchrL   rK   Don)r   r   nprandomrandnrE   assert_produces_warningFutureWarningr>   rC   r   r!   rF   )rG   msgrI   r%   r   r   r   test_groupby_resample_on_apiP   s    


"rZ   c               	   C   s  t dddtdddd} | d}|  }tjtd	d
 |dd }W 5 Q R X t|| | jddd}td  |dd }W 5 Q R X t|| t	j
t	ddgd|jg|_| jddd}td  |dd }W 5 Q R X t|| d S )Nr	   r+   r   r   2000r
   r3   r6   Z5DzNot prepending group keysrO   c                 S   s   | S r   r   r:   r   r   r   r<   i   r=   z*test_resample_group_keys.<locals>.<lambda>FZ
group_keysc                 S   s   | S r   r   r:   r   r   r   r<   o   r=   r   z
2000-01-06r,   Tc                 S   s   | S r   r   r:   r   r   r   r<   y   r=   )r   r   r   r   rE   rW   rX   rD   rF   r@   rA   rB   Zto_datetimerepeatr7   )rG   grI   r%   r   r   r   test_resample_group_keysd   s"    
r`   c                 C   sl   t d}| |  }|dd }t|| | d}| |  }|dd }t|| d S )Nr   c                 S   s   |   |   S r   maxr!   r:   r   r   r   r<      r=   ztest_pipe.<locals>.<lambda>c                 S   s   |   |   S r   ra   r:   r   r   r   r<      r=   )r   r   rb   r!   piperE   assert_series_equalrF   )r   r   rI   r%   r   r   r   	test_pipe}   s    

re   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   rE   Zassert_index_equalZ_selected_objcolumnsnamer   r   r   r   r   r   test_getitem   s    
ri   rK   rQ   r   c              	   C   s4   | d}d}tjt|d ||   W 5 Q R X d S )Nr   z^\"Columns not found: 'D'\"$rO   )r   pytestraisesKeyError)rK   r   r_   rY   r   r   r   test_select_bad_cols   s    
rm   c                 C   s(   |  d}t|j |d   d S )Nr   r   )r   rE   rd   r   sumrh   r   r   r   test_attribute_access   s    
ro   attrgroupsZngroupsindicesc                 C   sN   t dddd}ttt||d}|d}t||  |  t||  d S )N1/1/2012d   Sr*   r   r6   Z30s)r   r   rT   aranger#   r   getattrr!   )rp   rngtsrsr   r   r   test_api_compat_before_use   s    

r|   c              	   C   s   | }d|d< | d}|ddg  }tj|j |j gdd}t|| |dddg  }d	}tjt	|d
 | }W 5 Q R X t|| d S )NfoorQ   r   r   r   r	   Zaxisr   rN   rO   )
r   rn   r@   concatr   r   rE   rF   rW   rX   )r   rG   r   r%   rI   rY   r   r   r   tests_skip_nuisance   s    
r   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 )Nrs   rt   ru   rv   int64dtyper6   Z20sr      (   <   P   2012-01-01 00:00:00r,   r   r*   )	r   r   rT   rw   r#   r   asfreqrE   rd   )ry   rz   r%   rI   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 ).Nrs   rt   ru   rv   r6   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)r   r   )r   r   rT   rw   r#   Zilocr   r!   r9   r@   ZDatetimeIndexrE   rd   )ry   rz   Zts2r%   rI   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   rC   r@   Grouper	transformrE   rd   )r   rI   r%   r   r   r   test_transform_series  s    

r   rS   r0   c                 C   s   t tdddtddddd}d|_ttjddtd|d	}|t	j
d
dd}| dkrt|jdd}| }|jd
| d}|d}t|| d S )Nr   r	   r
   rQ   r   r0   r+   ABrf   r7   r   r!   T)ZdroprR   )r   r   rg   r   rT   rU   randlistrC   r@   r   r   reset_indexr   rE   rF   )rS   r7   rG   rI   r   r%   r   r   r   test_transform_frame  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 )Nrs   r
   r   rv   r   r   r6   sr9   )methodbfillzTInvalid fill method\. Expecting pad \(ffill\), backfill \(bfill\) or nearest\. Got 0rO   r   )r   r   rT   rw   r#   r   r9   ZfillnarE   rd   r   rj   rk   
ValueError)ry   rz   r   rI   r%   rY   r   r   r   test_fillna+  s    
r   funcc                 C   s   | j dddS )Nr   Fr]   )r   r:   r   r   r   r<   E  r=   r<   c                 C   s   | j tjddddS )Nr   r   Fr]   )rC   r@   r   r:   r   r   r   r<   F  r=   r   rC   )idsc                 C   s&   | t }|dd }t|t  d S )Nc                 S   s   | S r   r   r:   r   r   r   r<   M  r=   z0test_apply_without_aggregation.<locals>.<lambda>)r   rD   rE   rd   )r   tr%   r   r   r   test_apply_without_aggregationB  s    
r   c                  C   s>   t jddjddd} | d dd }t|t d d S )Nr}   )rg   r   Fr]   c                 S   s   | S r   r   r:   r   r   r   r<   S  r=   z1test_apply_without_aggregation2.<locals>.<lambda>)r   r$   r   rD   rE   rd   rename)Zgroupedr%   r   r   r   test_apply_without_aggregation2Q  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   rs   ru   r   r   r   r   r7   rf   3Tz'Column\(s\) \['r1', 'r2'\] do not existrO   r!   rn   r1r2
r   rT   rU   rV   r   r   rj   rk   rl   aggrG   r   rY   r   r   r   test_agg_consistencyW  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+   rs   ru   r   r	   ar   r   z#Column\(s\) \[2, 'b'\] do not existrO   r!   rn   )r+   br   r   r   r   r   'test_agg_consistency_int_str_column_mixh  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  }|d  }|d  }|d  }	|d  }
|d  }tj|||	|
gdd}tjddgddgg|_|D ]T}||d krFtnd }tj|dd |t jt jg}W 5 Q R X t|| q0tj||
gdd}|D ]}|t jt jd}tj||dd |jdt jfdt jfd}tj||dd |jtdt jtdt jd}tj||dd qtj||gdd}tjddg|_|D ]$}|dddgi}t|| qHtj||gdd}ddg|_|D ]B}|d ddg}t|| |d jddd}t|| qd}|D ]8}t j!tj"j#|d |ddddi W 5 Q R X qtj|||	|gdd}tjddd d!g|_|D ]@}t j!tj"j#|d" |dddddd"d W 5 Q R X qDtj|||	|
gdd}tjddd#d$g|_|D ].}|ddgddgd}tj||dd qtj|||	|gdd}tjd%d&d'd(g|_d S ))N  r   r	   r
   rQ   r   r0   r+   r   r   r7   r4   2DrR   levelr   r   r~   r!   stdz)\['date'\] did not aggregate successfullyrO   r[   TZ
check_like)r   r!   r   r   rn   )r!   rn   nested renamer is not supportedr   rn   )r   mean2)r   sum2)r   r   r   r!   r   r   )r   r   r!   )r   r   rn   )r   r   r!   )r   r   rn   )$rT   rU   seedr   r   rg   r   r   r   r   r   r@   rA   rB   ranger7   r   rC   r   r!   r   rn   r   Zfrom_productrf   rX   rE   rW   	aggregaterF   r   from_tuplesrj   rk   errorsSpecificationError)r7   rG   df_coldf_multr   casesZa_meanZa_stdZa_sumZb_meanZb_stdZb_sumrI   r   warnr%   rY   r   r   r   test_agg{  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 ]}|t jdd d}|d dd }tj|d  |gdd}	tj||	dd |jdt jfddd fd}tj||	dd |jtdt jtdd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 tjt|
d ( |ddg jd"t jfd#t jfd W 5 Q R X tjt|
d , |ddg jtd"t jtd#t jd W 5 Q R X qt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 qd+}
|D ]t}tjtj!j"|
d  |d dd(d)gi W 5 Q R X tjtj!j"|
d " |d d(d)gd*d)gd W 5 Q R X q>d,}
|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
   rQ   r   r0   r+   r   r   r7   r4   r   rR   r   c                 S   s   t j| ddS Nr	   )ZddofrT   r   r:   r   r   r   r<     r=   ztest_agg_misc.<locals>.<lambda>r[   r   c                 S   s   t j| ddS r   r   r:   r   r   r   r<     r=   r   r~   Tr   c                 S   s   t j| ddS r   r   r:   r   r   r   r<     r=   c                 S   s   t j| ddS r   r   r:   r   r   r   r<     r=   )result1r   )r   r   )result2r   )r   r   z1Column\(s\) \['result1', 'result2'\] do not existrO   )r   r   r   r   r   r   r   r   rn   r   r!   r   z Column\(s\) \['B'\] do not exist)#rT   rU   r   r   r   rg   r   r   r   r   r   r@   rA   rB   r   r7   r   rC   r   r   rn   rD   r   rE   rF   r   r!   r   rf   rj   rk   rl   r   r   r   )r7   rG   r   r   r   r   r   r%   ZrcustomrI   rY   r   r   r   test_agg_misc  s     

 * 
&,
 
* 
  *r   minr!   rb   rn   prodmedianr[   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
j	}|j
ddd}tjtdd ||  W 5 Q R X d S )Nr   r   r	   r
   rQ   r   r0   r+   r   r   Mr~   z"axis other than 0 is not supportedrO   )rT   rU   r   r   r   rg   r   r   r   Tr   rj   rk   NotImplementedErrorr   )r   r7   rG   resr   r   r   test_multi_agg_axis_1_raises=  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}|D ]B}tjt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|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|d& |dddgidddgid W 5 Q R X qd S )Nr   r   r	   r
   rQ   r   r0   r+   r   r   r7   r4   r   rR   r   r   rO   r   r!   rn   r   r   rar   rbr[   )rT   rU   r   r   r   rg   r   r   r   r   r   r@   rA   rB   r   r7   r   rC   r   rj   rk   r   r   r   r   )r7   rG   r   r   r   r   rY   r   r   r   r   test_agg_nested_dictsK  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       @)dtr;   yr+   g      @g      ?r   z Column\(s\) \['z'\] do not existrO   Z30Tr!   r   rn   )r;   r   z)r   r   r>   rj   rk   rl   r   r   )datarG   rY   r   r   r   &test_try_aggregate_non_existing_columnn  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_|jddd }t|| d	|j_d}tjt|d |jdd	d }W 5 Q R X t|| d S )Nr   r	   r
   rQ   r   r   )r0   r   vdr4   r6   r   zaOnly valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'Int64Index'rO   r   r   z2The Grouper cannot specify both a key and a level!r0   )rS   r   zunhashable type: 'list'rR   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-likerN   )r   r   rT   rw   r#   r   r   r@   rA   rB   rj   rk   	TypeErrorr   r   rl   r   rn   r7   rg   rE   rF   rW   rX   )r7   ry   rG   Zdf_exprY   expr%   r   r   r   test_selection_api_validation}  sF    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@rQ   r   r   )levelscodes)
r   r   r   r   r   r   r@   rA   rE   rF   )r   rG   r%   rI   r   r   r   *test_agg_with_datetime_index_list_agg_func  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)writer6   r8   r      lastfirstrb   r   )r   rT   Z
zeros_likeZsetflagsr   r   r@   Z	Timestampr   rE   rd   )r7   ZarrZserr{   rI   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   r6   )r   closed)r   r   r*   )r   r   r   rn   rE   rd   )r   r   r   r   Zresample_freqr   r   Zexp_dataZexp_endZexp_periodsry   rz   r   rI   r   r   r   test_end_and_end_day_origin  s    Ar  z#method, numeric_only, expected_dataTnumr   FZ
cat_1cat_2catr  rt   cat_1r   cat_2r   r   g      )@r   gH6%@)r   F!could not convert string to floatvarg      \@)r  Fr  semg      @)r	  Fr  c              
   C   s2  t dddd}t dddd}tdd	gd
dgd|d}|d}|tjkrPi }nd|i}t|| }|tjkr| dkrt}	d|  d}
n*| dkr|dk	rt}	d|  d}
nd }	d}
tj|	|
dj t	|t
r| dkrtnt}tj||d |f |}W 5 Q R X n"|f |}t||d}t|| W 5 Q R X d S )N
2018-01-01r+   rQ   rv   
2018-12-31r	   Yr  r  r,   r   r  r6   numeric_only)r   rb   r   r   r   z2default value of numeric_only in DataFrameGroupBy.z is deprecated)r   r!   r   Tz-Dropping invalid columns in DataFrameGroupBy. rO   r  )r   r   r   r   
no_defaultrx   rX   rE   rW   r"   r   r   r   rj   rk   rF   )r   r  expected_datar7   expected_indexrG   	resampledkwargsr   r   rY   klass_r%   rI   r   r   r   test_frame_downsample_method0  s2    *




r  )rn   Tr   )r   Tr   )r   Fr   r   )r   Tr   )rb   Tr   )r   Tr   )r   Tr   c           
   
   C   s   t dddd}t dddd}tdd	g|d
}|d}t|| }|r|tjk	rtjtdd* t	j
tdd ||d W 5 Q R X W 5 Q R X nP| dkrt	j
tdd ||d W 5 Q R X n"||d}t||d
}	t||	 d S )Nr
  r+   rQ   rv   r  r	   r  r  r  r6   zThis will raise a TypeErrorrO   znot implement numeric_onlyr  r   z"can't multiply sequence by non-int)r   r   r   rx   r   r  rE   rW   rX   rj   rk   r   r   rd   )
r   r  r  r7   r  rG   r  r   r%   rI   r   r   r   test_series_downsample_method  s$    

  
r  r   r   rD   r   c              	   C   s   t jddd}| dkrxd}tjt|d t|| tj W 5 Q R X t|| tjdd}|j	d	dd}t
|| n\d
}tjt|d t|| tj W 5 Q R X tjtdd t|| tjdd W 5 Q R X d S )Nr;   )rQ   r   r   rN   rO   Tr  r!   z$The operation <function mean.*failedz"got an unexpected keyword argument)r   Zassignr   rE   rW   rX   rx   rT   r!   r   rF   rj   rk   r   )r   r  rY   r%   rI   r   r   r   test_numeric_only_warning_numpy  s    r  )<r   ZnumpyrT   rj   Zpandas._libsr   Zpandasr@   r   r   r   Zpandas._testingZ_testingrE   Zpandas.core.indexes.datetimesr   ZdtirU   r   r#   r   rw   r   Zfixturer   r   r&   rJ   rZ   r`   re   ri   markZparametrizerm   ro   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r   r   r   r   <module>   sT  

	
8

g[ 
#5 


5
'
)






