o
    թZh=.                     @   sR  d dl m 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 d dlmZ d dlmZ d dlmZ ejdd Zd	d
 Zdd Zdd Zdd Zejde	ddge	ddge	ddgejddgddgggdd Zdd Zdd Zejj ddd d! Z!ejd"d#i d fd#d$d id fd#d$diej"fd%i dfd%d$d idfd%d$diej"fgd&d' Z#ejd(d)ej"fd*ej"fd+d,d-gd.d/ Z$d0d1 Z%d2d3 Z&ejd4d#i g d5fd#d$d ig d5fd#d$didej"dgfd#d$diej"ej"ej"gfd%i g d6fd%d$d ig d6fd%d$didej"dgfd%d$diej"ej"ej"gfgd7d8 Z'd9d: Z(dS );    )datetime)methodcallerN)	DataFrameIndexSeries	Timestamp)Grouper)
date_rangec                   C   s"   t tjddtddddS )N     z1/1/2000periodsindex)r   nprandomdefault_rngstandard_normalr	    r   r   ^/var/www/html/lang_env/lib/python3.10/site-packages/pandas/tests/resample/test_time_grouper.pytest_series   s   
r   c                 C   sj   t dddd}| |}dd }||}| dd |}|jd|_|jd|_t|| d S )	NYErightfreqlabelclosedc                 S   s   |   dd  S )N)Zsort_valuesxr   r   r   f       ztest_apply.<locals>.fc                 S      | j S Nyearr   r   r   r   <lambda>$       ztest_apply.<locals>.<lambda>r   )r   groupbyapplyr   Z	dropleveltmassert_series_equal)r   groupergroupedr    Zappliedexpectedr   r   r   
test_apply   s   

r/   c                 C   sx   t j| d d d< | dd  }tdddd}| | }|j|_t|| | d }|j|_t|| d S )N   c                 S   r"   r#   r$   r   r   r   r   r&   .   r'   ztest_count.<locals>.<lambda>r   r   r   )	r   nanr(   countr   r   r*   r+   resample)r   r.   r,   resultr   r   r   
test_count+   s   r5   c                 C   sr   | j ddd }d}tjt|d | dd tj}W d    n1 s(w   Y  |j|_t	|| d S )Nr   r   )r   zusing SeriesGroupBy.prodmatchc                 S   r"   r#   r$   r   r   r   r   r&   ?   r'   z&test_numpy_reduction.<locals>.<lambda>)
r3   prodr*   assert_produces_warningFutureWarningr(   Zaggr   r   r+   )r   r4   msgr.   r   r   r   test_numpy_reduction:   s   r<   c            	      C   sp   d} t dd| d}tddd|d}td	d
}||\}}|j|dd}dd }||}t|j|j d S )Nr   
2000-01-01D)startr   r      r
   )opencloser   ZMEr   F)Z
group_keysc                 S   s   | d | d  S )NrB   rA   r   )dfr   r   r   r    Q   r!   ztest_apply_iteration.<locals>.f)	r	   r   r   Z_get_grouperr(   r)   r*   Zassert_index_equalr   )	NindrD   tgr,   _r-   r    r4   r   r   r   test_apply_iterationE   s   

rI   r   r@   r
   abg?g@c                 C   sr   t | j}tdtt| i| d}d| d}tjt|d |t	dd W d    d S 1 s2w   Y  d S )NrJ   r   zVOnly valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of ''r6   r>   rC   )
type__name__r   rangelenpytestZraises	TypeErrorr(   r   )r   namerD   r;   r   r   r   test_fails_on_no_datetime_indexY   s   

"rT   c                  C   s2  d} t jd| df}t|g dd}tdddtdddtdddtdddtddd	gd |d
< |td
dd}t	|
tddd|d d d	  t	|
tddd|dd d	  t	|
tddd|dd d	  t	|
tddd|dd d	  t	|
tddd	|dd d	  d S )N   r
      ABCr>   columns  r@   r0      keyr>   r_   r   )r   r   r   r   r   r   r(   r   r*   assert_frame_equalZ	get_group)ndatarD   r-   r   r   r   test_aaa_group_ordern   s"   




$$$$(rd   c              	   C   s   t jdd}t|g dd}g dd |d< t|g dd}ttdd	d	tdd	dtdd	d
tdd	dtdd	dgd dd|d< |d}|tddd}t	||  }t	||  }t
ddddd|_t|| dS )?Check TimeGrouper's aggregation is identical as normal groupby.r
   rU   rV   rW   r[   r@   r
   r0   rV   r^   rV   r_   r]   r@   r0   r^   M8[ns]dtyper>   r`   
2013-01-01r?   r   r   rS   N)r   r   r   r   r   r   r   r(   r   getattrr	   r   r*   Zassert_equal)Zresample_methodrc   	normal_dfdt_dfnormal_grouped
dt_groupedr.   	dt_resultr   r   r   test_aggregate_normal   s*   






rs   z7if TimeGrouper is used included, 'nth' doesn't work yet)reasonc                  C   s   t jdd} t| g dd}g dd |d< t| g dd}tdd	d	tdd	dtdd	d
tdd	dtdd	dgd |d< |d}|tddd}|d
}t	ddddd|_
|d
}t|| dS )re   r
   rf   rW   r[   rg   rV   r_   r]   r@   r0   r^   r>   r`   rk   rl   N)r   r   r   r   r   r   r(   r   Znthr	   r   r*   ra   )rc   rn   ro   rp   rq   r.   rr   r   r   r   test_aggregate_nth   s$   







ru   zmethod, method_args, unitsumZ	min_countr8   c                 C   st   t dgd tjgd  tdddd}t| fi ||d}tjdd	gd
dd}t d|g|d}t	|| d S )Nr   r
   2017rV   r   r   Z2dz
2017-01-01z
2017-01-03rh   Z2Drj   r   g        )
r   r   r1   r	   r   r3   pdDatetimeIndexr*   r+   )methodmethod_argsunitserr4   Zexp_dtir.   r   r   r   !test_resample_entirely_nat_window   s
   &r   zfunc, fill_valueminmax)rv   r   )r8   r@   )r2   r   c              	   C   sD  d}t jd|dfd}t|g dd}ddt jddgd |d	< t|g dd}ttd
ddtd
ddt	j
td
ddtd
ddgd dd|d	< |d	}|td	dd}t||  }t||  }	t|gd gdgg dd}
t	||
g}| }tdddd	|d	 jjd}|d |_t||	 |	jjd	ksJ d S )NrU   r
   rV   int64rW   r[   r@   r^   r_   r]   rh   ri   r>   r`   r0   )r   r\   rk   r?   r   r   rS   r}   )r   r   r   r   astyper   r1   r   r   ry   NaTr(   r   rm   concat
sort_indexr	   _valuesr}   
_with_freqr   r*   ra   rS   )funcZ
fill_valuerb   rc   rn   ro   rp   rq   normal_resultrr   padr.   Zdtir   r   r   test_aggregate_with_nat   sB   	






r   c            
   	   C   s,  d} t jd| dfd}t|g dd}ddt jddgd |d	< t|g dd}ttd
ddtd
ddt	j
td
ddtd
ddgd dd|d	< |d	}|td	dd}| }| }tdgdgd}t	||g}	|	 }	tdddd	|d	 jjdd |	_t|	| |jjd	ksJ d S )NrU   r
   rV   r   rW   r[   r@   r^   r_   r]   rh   ri   r>   r`   r   r0   r   rk   r   )r   r   r   r   r   r   r1   r   r   ry   r   r(   r   sizer   r   r   r	   r   r}   r   r   r*   r+   rS   )
rb   rc   rn   ro   rp   rq   r   rr   r   r.   r   r   r   test_aggregate_with_nat_size   sD   






r   c                  C   sF   t tddd} d}| |ksJ t tdddd} d}| |ks!J d S )NrX   hr`   zTimeGrouper(key='A', freq=<Hour>, axis=0, sort=True, dropna=True, closed='left', label='left', how='mean', convention='e', origin='start_day')r=   )r_   r   originzTimeGrouper(key='A', freq=<Hour>, axis=0, sort=True, dropna=True, closed='left', label='left', how='mean', convention='e', origin=Timestamp('2000-01-01 00:00:00')))reprr   )r4   r.   r   r   r   	test_repr'  s   r   z$method, method_args, expected_values)r@   r   r@   )r@   r@   r@   c                 C   sd   t dtddddd}|d}tjg dd	dd
}t| fi ||}t ||d}t|| d S )Nr@   rw   r
   r   r   r   r   Z30min)z2017-01-01T00:00:00z2017-01-01T00:30:00z2017-01-01T01:00:00rh   rx   )r   r	   r3   ry   rz   r   r*   r+   )r{   r|   Zexpected_valuesr~   Z	resampledr   r4   r.   r   r   r   test_upsample_sum:  s   
r   c                  C   s   g dg dd} t | }tdddd|d< d	}tjt|d
 |dddjdd}W d    n1 s9w   Y  dgd dg }t	tddt
dg }tjj||gddgd}t g ddgd dg d|d}t|| d S )N)
      	   )2   <   r   )Zpricevolumez
01/01/2018r0   Wr   week_startingz:DataFrameGroupBy.resample operated on the grouping columnsr6   r   Z1DZlinear)r{   r      r   z
2018-01-07z
2018-01-21z
2018-01-14)names)g      $@gm۶m#@gn۶m۶#@g%I$I#@g۶m۶m#@g$I$I#@gI$I$#@g      #@gm۶m"@gn۶m۶"@g%I$I"@g۶m۶m"@g$I$I"@gI$I$"@g      "@g      &@g      I@)rc   r   )r   r	   r*   r9   DeprecationWarningZ	set_indexr(   r3   Zinterpolatelistr   ry   
MultiIndexfrom_arraysra   )drD   r;   r4   r   r   Zexpected_indr.   r   r   r   !test_groupby_resample_interpolateT  s6   r   ))r   operatorr   numpyr   rQ   Zpandasry   r   r   r   r   Zpandas._testingZ_testingr*   Zpandas.core.groupby.grouperr   Zpandas.core.indexes.datetimesr	   Zfixturer   r/   r5   r<   rI   markZparametrizer   r   rT   rd   rs   Zxfailru   r1   r   r   r   r   r   r   r   r   r   r   <module>   sx    




	

	
,(
