o
    ҷhR                     @   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mZ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dd Zdd Zdd Zejdg ddd Zdd Zejddd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(d0d1 Z)d2d3 Z*ejd4d5gd5d6ggd7d8 Z+ejd9d:d;gd<d= Z,d>d? Z-ejd4d5gd5d6ggd@dA Z.dBdC Z/dDdE Z0dFdG Z1dHdI Z2dJdK Z3ejdLdMdNgdOdP Z4dS )Q    )dedentN)is_platform_windows)	DataFrameIndexSeriesTimedeltaIndex	Timestamp)
date_rangec                   C   s<   t dgd dgd  dgd  tddtd	d
dddS )N                  (   AB1/1/2000sfreqperiodsindex)r   nparanger	    r   r   _/var/www/html/venv/lib/python3.10/site-packages/pandas/tests/resample/test_resampler_grouper.py
test_frame   s   (r   c              	   C   s   ddl m} td}| | tjd dd. |d t| jdd W d    n1 s/w   Y  W d    d S W d    d S 1 sGw   Y  d S )	Nr   )provisionalcompleterzZ    import pandas._testing as tm
    s = tm.makeTimeSeries()
    rs = s.resample("D")
    F)raise_on_extra_warningsignorezrs.r
   )	IPython.core.completerr    r   run_celltmassert_produces_warninglist	Completercompletions)ipr    coder   r   r   "test_tab_complete_ipython6_warning   s   

"r,   c                  C   s   g dg dg dg dg dg dg dg dg d	g d
g
} t | g dd}t|j|_dd }|d|}|ddd }t	
|| t tddddg dg ddd}dd }|d|}|dd }t	
|| d S )N)
2010-01-01r   r   )z
2010-01-02r   r   )z
2010-01-05r   r   )z
2010-01-10r      )z
2010-01-13r   r   )r-   r      )z
2010-01-03r   r   )z
2010-01-04r   r
   )z
2010-01-11r   r.   )z
2010-01-14r   r   )dateidscorecolumnsc                 S   s   |  dd S )Nr0   D)	set_indexresampleasfreqxr   r   r   f_0B      z'test_deferred_with_groupby.<locals>.f_0r1   r0   r5   
2016-01-01   W)startr   r   )r
   r
   r   r   )r/      r.   r   r0   groupvalc                 S      |  d S )N1D)r7   ffillr9   r   r   r   f_1Q      z'test_deferred_with_groupby.<locals>.f_1rC   rF   )r   pdto_datetimer0   groupbyapplyr6   r7   r8   r%   assert_frame_equalr	   rG   )datadfr;   expectedresultrH   r   r   r   test_deferred_with_groupby/   s:   rS   c                 C   sr   |  d}|jdd }|dj }t|| |jd }t|| |d j}t|| d S )Nr   c                 S   rE   N2s)r7   meanr9   r   r   r   <lambda>\       ztest_getitem.<locals>.<lambda>rU   )rL   r   rM   r7   rV   r%   assert_series_equal)r   grQ   rR   r   r   r   test_getitemY   s   
r[   c                  C   s   ddddddg} t | tdddd}|d	d
}|d  }tddgtjjdt	dfdt	dfgd	d gddd}t
|| |d  }t
|| d S )Nr
   r   )r1   buyerr   r   r=   r   r   r1   rF   r\   z
2016-01-02namesr   name)r   r	   rL   r7   countr   rJ   
MultiIndexfrom_tuplesr   r%   rY   )rO   rP   rrR   rQ   r   r   r   test_getitem_multipleh   s   rf   c                  C   sf   t tdtddddd} | ddd	d
  }| djd	ddd
  }t|| d S )Naabbbz1-1-2016r/   r]   r
   )r1   r0   rO   r0   r1   2DrO   on)	r   r'   r	   r6   rL   r7   sumr%   rY   )rP   exprR   r   r   r   )test_groupby_resample_on_api_with_getitem}   s   rm   c                  C   sx  d} d\}}d}t ||dd}ttjdt||d}||| }tj| d}|	|
d}||| }|	|
d}	tjtd	d
 t|j|	j W d    n1 sZw   Y  td}
tj| |
d}|	|
d}||| }|	|
d}t|| tdtdd  }tj| |d}|	|
d}||| }|	|
d}t|| t|| d S )N1399min)z1/1/2000 00:00:00z1/31/2000 00:00z1/15/2000 00:00:001231minr   r   r   rb   zIndex are differentmatchr   )r   origini0u  )r	   r   r   randomdefault_rngstandard_normallenrJ   GrouperrL   aggpytestraisesAssertionErrorr%   assert_index_equalr   r   rY   	Timedelta)r   r@   endmiddlerngtsts2simple_groupercount_ts	count_ts2rs   adjusted_grouperadjusted_count_tsadjusted_count_ts2origin_futureadjusted_grouper2adjusted2_count_tsadjusted2_count_ts2r   r   r   test_groupby_with_origin   s4   r   c                  C   sX   t dddd} ttd| dd }tg dtjg dd	d
dd}t|| d S )Nr   r   Tr   r   r   20s)r   r   r
   r
   r
   r   r   )z2000-01-01 00:00:00z2000-01-01 00:00:20z2000-01-01 00:00:40z2000-01-01 00:01:00z2000-01-01 00:01:20z2000-01-01 00:01:40z2000-01-01 00:02:00zdatetime64[ns]20S)dtyper   )	r	   r   ranger7   nearestrJ   DatetimeIndexr%   rY   )r   rR   rQ   r   r   r   test_nearest   s   	r   f)firstlastmediansemrk   rV   minmaxsizerb   r   bfillrG   r8   ohlcc                    sB   | d}|d}t|  }| fdd}t|| d S )Nr   rU   c                    s   t | d  S rT   getattrr7   r9   r   r   r   rW      s    ztest_methods.<locals>.<lambda>)rL   r7   r   rM   r%   assert_equalr   r   rZ   re   rR   rQ   r   r   r   test_methods   s
   

r   c                 C   s>   |  d}|d}|j }|jdd }t|| d S )Nr   rU   c                 S   rE   rT   )r7   nuniquer9   r   r   r   rW      rX   z&test_methods_nunique.<locals>.<lambda>)rL   r7   r   r   rM   r%   rY   )r   rZ   re   rR   rQ   r   r   r   test_methods_nunique   s
   


r   stdvarc                    sF   | d}|d}t| dd}| fdd}t|| d S )Nr   rU   r
   ddofc                    s   t | d ddS )NrU   r
   r   r   r9   r   r   r   rW      s    z&test_methods_std_var.<locals>.<lambda>)rL   r7   r   rM   r%   rN   r   r   r   r   test_methods_std_var   s
   

r   c                 C   sl   |  d}|d}|d }dd }||}t|| dd }||}|d}t|| d S )Nr   rU   c                 S   rE   rT   )r7   rk   r9   r   r   r   r;      rI   ztest_apply.<locals>.f_0c                 S   s   |  ddd S )NrU   c                 S   s   |   S Nrk   )yr   r   r   rW     s    z)test_apply.<locals>.f_1.<locals>.<lambda>)r7   rM   r9   r   r   r   rH     r<   ztest_apply.<locals>.f_1int64)rL   r7   rk   rM   r%   rN   astype)r   rZ   re   rQ   r;   rR   rH   r   r   r   
test_apply   s   




r   c                  C   s   t dddd} tdtjdt| i| d}dd	 }|tjd
d	|}|
d
	|}t|| |d jtjd
ddd	|}|d 
d
	|}t|| d S )Nz1-1-2015z12-31-15r5   rp   col1r   rO   r   c                 S   s   t ddgddgd}|S )Nr
   r   abr   )r   )r:   r   r   r   r   r     s   z(test_apply_with_mutated_index.<locals>.fMF)
group_keys)r	   r   r   rt   ru   rw   rL   rJ   rx   rM   r7   r%   rN   rY   )r   rP   r   rQ   rR   r   r   r   test_apply_with_mutated_index  s    r   c                     s   t jddg} tdddd}ttdgd dd	|| d
}dd |jD  |	d
 fdd}td	ddgg tddd	dt jddgd
}t|| d S )N)r   r    one)r   r   itwoz
2017-01-0115Minr   )r@   r   r   r      r   r   r4   c                 S   s&   i | ]}||d  dkrt jnt jqS )r   r   )r   rk   rV   ).0colr   r   r   
<dictcomp>)  s   & z1test_apply_columns_multilevel.<locals>.<dictcomp>Hc                    s    | j  | S r   ra   r9   agg_dictr   r   rW   *  rX   z/test_apply_columns_multilevel.<locals>.<lambda>g        1H)rJ   rc   rd   r	   r   r   arrayreshaper4   r7   rM   r%   rN   )colsindrP   rR   rQ   r   r   r   test_apply_columns_multilevel$  s   "r   c                  C   s|   dd } t ddddd}tg d|d	}tg d
|d	}|dj| |dd}t ddddd}tdg|d	}t|| d S )Nc                 S   s>   |   } || jd }|jd | }| ||k jd S )Nr   )sort_valuesreindexr   fillnacumsumiloc)seriesweightsqr   cutoffr   r   r   weighted_quantile6  s   z5test_apply_non_naive_index.<locals>.weighted_quantilez2017-6-23 18:00r   15TUTC)r   r   tz)      ?r
   r
   r
   r
   r   r   r   r   )g      d@[   A   +      
   r
   r   r5   g      ?)r   r   z2017-06-23 00:00:00+00:00)r   r   r   )r	   r   r7   rM   r%   rY   )r   timesrO   r   rR   r   rQ   r   r   r   test_apply_non_naive_index5  s   r   c                  C   s   t dddd} t| g dg ddd}|d	jd
dd }tjg dtjdt	tg dg}tj
j|d	d gd}tg dg dd|d}t|| d S )Nz
2000-01-01rh   r/   r   )r   r   r
   r
   r   )r
   r
   r
   r
   r
   )col0r   )r   rO   r   1Wleft)label)r   r   r
   r   r   )z
1999-12-26
2000-01-02r   r   r^   )r   r   r   r   )r
   r
   r   r
   r   )r	   r   rL   r7   rk   r   r   r   rJ   rK   rc   from_arraysr%   rN   )r   rP   rR   mimindexrQ   r   r   r    test_resample_groupby_with_labelH  s   r   c                 C   s   | }t g ddd}|dd }|jjdksJ t|jjd | |d	d }|jjdks8J t|jjd | d S )N)r
   r   r   r   r   rU   r   r   r   )
r   rL   r7   rV   r   nlevelsr%   r}   levelsrolling)r   rP   rQ   rR   r   r   r   test_consistency_with_window\  s   r   c                  C   sp   t tjddtdtddddd} |  }g d	|_|	d

 }| 	d

 }|j|_t|| d S )Nr   )r   r   aaa
2012-01-01r   r   r   r4   r   )r   r   c5s)r   r   rt   ru   rv   r'   r	   copyr4   r7   r   r%   rN   )rP   df2rQ   rR   r   r   r   test_median_duplicate_columnsi  s   
r   c                  C   s   t tdtdddtddddd} | dd	d
 }tg dtddddd}t|| | ddd
 }t|| d S )Nr   r   )r   r   r   20minr   r   r   c                 S   s
   | j  S r   )r   rk   rC   r   r   r   rW     s   
 z0test_apply_to_one_column_of_df.<locals>.<lambda>)r   r      	   r>   c                 S   s   | d   S )Nr   r   r   r   r   r   rW     s    )r   r   r	   r7   rM   r   r%   rY   rP   rR   rQ   r   r   r   test_apply_to_one_column_of_dfy  s   r  c                  C   sn   t g dg dg dd} t| d | d< | djddd}|d	g  }|d	d
i}t|| d S )N)cat_1r  cat_2r  r  r  r  r  )r/   r      r   r>      r   2   )z2019-2-1z
2018-02-03	2020-3-112019-2-2r  z	2018-12-4r  z
2020-12-12)catnumr0   r0   r	  Yri   r
  rk   )	r   rJ   rK   rL   r7   rk   ry   r%   rN   )rP   	resampledrQ   rR   r   r   r   test_resample_groupby_agg  s   
r  c                  C   s   t d} tdgdgdt| gddd}|dd	d
 }|ddg}tddggtjjd| fgddgdddgd}t	
|| d S )Nz2021-02-28 00:00:00betaE   )classvaluer0   r   r   r  r   r  rk   r   r
   r^   r   )r   r   r   rL   r7   ry   rJ   rc   rd   r%   rN   )r   rP   r  rR   rQ   r   r   r   "test_resample_groupby_agg_listlike  s    r  keysr   r   c                 C   s   t g ddgtg d}|| jtdd }t ddgdj| ddjtg d	d
}t| dkr8| d |j	_
t|| d S )Nr   r   r   00:00:01ruler3   FdropT)appendr
   r   )r   r   rL   r7   rJ   to_timedeltarV   r6   rw   r   ra   r%   rN   r  rP   rR   rQ   r   r   r   
test_empty  s   
r  consolidateTFc                 C   s   t dddd}td|tddd}td|tdd	}tj||gd
d}| r+| }|dgjddd }tj	j
dgd dgd  tg dd gddgd}tdgd dgd  g dd dgd tjgd  d|d}t|| d S )Nz
2020-01-01   r5   r   r   rD   )keyr0   r   
col_objectr   )r  r0   r   T)ignore_indexr  r?   r0   ri   r   )z
2020-01-05z
2020-01-12z
2020-01-19r   r^   )r   r/   r   )r  r   r   r   )r	   r   r   rJ   concat_consolidaterL   r7   r   rc   r   rK   r   nanr%   rN   )r  datesdf1r   rP   rR   idxrQ   r   r   r   .test_resample_groupby_agg_object_dtype_all_nan  s*   
r(  c               	   C   s   t tdddg dg ddd} | djd	d
ddg  }t dg ditdtdfdtdfdtdfdtdfgddd}t|| d S )Nr=   r   r@   r   r   r   r   r   r
   r
   r
   r
   )r
   r.   r/   r   r   r   r/   r
   rB   )rO   rC   rh   r0   ri   rD   )      @g      @g      @g      @r   
2016-01-03r
   
2016-01-05
2016-01-07rC   r0   rO   ra   r   )	r   r	   rL   r7   rV   r   r   r%   rN   r   r   r   r   'test_groupby_resample_with_list_of_keys  s(   




r1  c                 C   s   t g g dd}t|d |d< |d}|| jtdd }t g ddj| dd}t|d |d< |jdddd	}t| d
krM| d |j	_
t|| d S )N)r   r   r0   r3   r0   r  r  Fr  T)r  r  r
   r   )r   rJ   rK   r6   rL   r7   r  rV   rw   r   ra   r%   rN   r  r   r   r   test_resample_no_index  s   
r2  c                  C   s   t ttg dddd} | g djtdd }tg d}t tjt	j
d	d
gt	jd|gg dg dgd dgdd}tj||t  d d S )N)2018-01-01 00:00:002018-01-01 12:00:002018-01-02 00:00:00r0   r   r   )r   r   r
   z06:00:00r  )r3  z2018-01-01 06:00:00r4  r5  r   r
   r   )r   r   r   r
   )r   r
   r   r   )r   codesr_   )check_index_type)r   r   rJ   rK   rL   r7   r  rV   rc   r   r   intpr%   rN   r   )rP   rR   r   rQ   r   r   r   test_resample_no_columns  s(    	r9  c               	   C   s   t dgd dgd  dgd  dgd  tddtddddd	} | d
d }tdtj	j
dtdfdtdfdtdfdtdfgd
d gdd	}t|| d S )Nr
   r   r   r   r   z31/12/2000 18:00r   r   r   r   r5   z
2000-12-31z
2001-01-01r^   )r   r   r   r	   rL   r7   r   r   rJ   rc   rd   r   r%   rY   r   r   r   r   )test_groupby_resample_size_all_index_same6  s"   2



r:  c               	   C   s   t g dg ddttdddddd	} | d
ddg  }t dg ditdtdfdtdfdtdfdtdfgddd	}t	|| d S )Nr*  r   r
   r>   r
   r/   r   r   rA   rC   rD   r=   r   r)  r0   r   r   rC   rh   rD   g       @g      @g      @r+  r   r,  r
   r-  r.  r/  r0  
r   r   r	   rL   r7   rV   r   r   r%   rN   r   r   r   r   0test_groupby_resample_on_index_with_list_of_keysL  s.   





r?  c               	   C   s   t g dg dg dg ddttdddd	d
d} | ddddg  }t g dg ddtdtdfdtdfdtdfdtdfgddd}t	|| d S )Nr*  r;  )r   r.   r
   r   r   r   r
   r   )r
   r>   r
   r>   r   r
   r   r/   )rC   	first_val
second_val	third_valr=   r   r)  r0   r   r   rC   rh   r@  rA  r=  )      @rC  g      @rC  )r@  rA  r   r,  r
   r-  r.  r/  r0  r>  r   r   r   r   >test_groupby_resample_on_index_with_list_of_keys_multi_columnsj  s4   




rD  c                  C   sx   t g dg ddttdddddd	} tjtd
d | dddg   W d    d S 1 s5w   Y  d S )Nr*  r;  r<  r=   r   r)  r0   r   r   zColumns not foundrq   rC   rh   val_not_in_dataframe)	r   r   r	   rz   r{   KeyErrorrL   r7   rV   )rP   r   r   r   ?test_groupby_resample_on_index_with_list_of_keys_missing_column  s   

"rG  kinddatetimeperiodc                 C   s   t tg dg dg dd}|d}|dd jd| d	 }td
dg}| dkr5|jdd}tj	j
ddg|gddgd}tg d|dd}t|| d S )N)z20181101 1100z20181101 1200z20181102 1300z20181102 1400)r   r   r   r   )r
   r   r   r>   )rI  rC   r  rI  rC   r  r5   )rH  z
2018-11-01z
2018-11-02rJ  rp   r   r   r^   )r
   r   r   r>   r`   )r   rJ   rK   r6   rL   r7   r   r   	to_periodrc   from_productr   r%   rY   )rH  rP   rR   dt_levelexpected_indexrQ   r   r   r   test_groupby_resample_kind  s&   
	
rO  )5textwrapr   numpyr   rz   pandas.compatr   pandasrJ   r   r   r   r   r   pandas._testing_testingr%   pandas.core.indexes.datetimesr	   fixturer   r,   rS   r[   rf   rm   r   r   markparametrizer   r   r   r   r   r   r   r   r   r   r  r  r  r  r(  r1  r2  r9  r:  r?  rD  rG  rO  r   r   r   r   <module>   sb    
*
)
		
$


!