U
    sVc                  	   @   s  d dl Z d dlZd dlZd dlZd dlmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZm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$ej%&ddddgdd Z'ej%&ddddge(e)d gd!d" Z*ej%&d#dddgedddgdd$fe(e)d ed dd%gdd$fgd&d' Z+ej%&d(d)d*idfi d+fd)d,id+fd)did-fgd.d/ Z,ej%&d0d1d2d3gej%&d4dd%gej%&ddd5gd6d7 Z-ej%j&d8eed9e
d:geed;e
d<ggd=d> d?d@dA Z.ej%&dBd e/d ddCgdDdE Z0ej%&dFedGd dHedId<dJgged9d dHedKdLdMgggdNdO Z1ej%&dBdPdQgej%&dReej2fej3ej4fe(ej5fgdSdT Z6ej%&dUd%dVdWgdXdY Z7dS )Z    N)CategoricalDatetimeIndexIntervalIntervalIndexNaTSeriesTimedeltaIndex	Timestampcut
date_rangeisnaqcuttimedelta_range)CategoricalDtype)DayNanoc                  C   s   t jd} t| ddd\}}t | ddddd	g}|jjj}t j||d d
 ddsZt	|jj
j}t j||dd  ddst	t| |dd}t|| d S )N     TZretbinsr         ?      ?      ?      ?g{Gz?)Zatol   )Zinclude_lowest)nprandomrandnr   Zquantile
categoriesleftvaluesZallcloseAssertionErrorrightr
   tmassert_categorical_equal)arrlabels_Zex_binsresult	ex_levels r*   B/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/reshape/test_qcut.py	test_qcut   s    

r,   c                  C   s4   t jd} t| ddd}tt |dks0td S )Nr   
   Fr&   )r   r   r   r   lenuniquer!   )r%   factorr*   r*   r+   test_qcut_bounds1   s    r2   c                  C   s:   t jd} t| dddddg}t| d}t|| d S )Nd   r   r   r   r   r   r   )r   r   r   r   r#   r$   )r%   r1   expectedr*   r*   r+   test_qcut_specify_quantiles8   s    
r5   c                   C   s<   t jtdd$ tddddddddddg
d W 5 Q R X d S )Nzedges.*uniquematchr      )pytestraises
ValueErrorr   r*   r*   r*   r+   test_qcut_all_bins_same@   s    r<   c                  C   sN   t d} t| d}ttddtddtddtddg}t|j| d S )Nr-   r   MbPg      @g      @g      @	   )r   aranger   r   r   r#   assert_index_equalr   )r    iir)   r*   r*   r+   test_qcut_include_lowestE   s    

rB   c                  C   s@   t jd} t j| d d< t| d}t|d d  s<td S )Nr3      r   )r   r   r   nanr   r   allr!   )r%   r(   r*   r*   r+   test_qcut_nasT   s    
rF   c                  C   s>   t ddgd} tddtddg}t|dd}t| | d S )Nr      r=   r   TZordered)r   r   r   r#   r$   )r(   	intervalsr4   r*   r*   r+   test_qcut_index\   s    rJ   c                 C   s   | t jddd}t|}t|d}g }g }t|D ]8}|j}|j}||ksVt	|
t| |
t| q:tt|d d |dd  t|d d |dd  D ]4\\}	}
\}}|	|
k st	||k st	||
kst	qd S )NZreshapedatazcut_data.csvrC   r   r   )ospathjoinr   Zloadtxtr   r0   r   r"   r!   appendfloatzip)datapathZcut_filer%   r(   ZstartsZendsZlevsespZsnepenr*   r*   r+   test_qcut_binning_issuesd   s$    

 rX   c                  C   s   t ddddddddd	g	} t| dd
ddg}ttddtddtdd	g}t |dddddddddg	tdd}t	|| d S )Nr   r   rG   r8   r               gZd;O?gZd;O?r=   gZd;O@gZd;O@TrH   )
r   r   r   arrayr   ZtakeastypeCDTr#   assert_series_equal)serresZ
exp_levelsexpr*   r*   r+   test_qcut_return_intervals}   s    ,rd   r&   Zfoor   Tc              	   C   s8   t d}d}tjt|d t|d| d W 5 Q R X d S )NrY   zJBin labels must either be False, None or passed in as a list-like argumentr6   r   r.   ranger9   r:   r;   r   r&   r    msgr*   r*   r+   test_qcut_incorrect_labels   s    ri   abcr8   c              	   C   s8   t d}d}tjt|d t|d| d W 5 Q R X d S )Nr-   z9Bin labels must be one fewer than the number of bin edgesr6   r   r.   re   rg   r*   r*   r+   test_qcut_wrong_length_labels   s    rm   zlabels, expectedrH   rG   c                 C   s&   t d}t|d| d}t|| d S )Nr8   r.   )rf   r   r#   r$   )r&   r4   r    r(   r*   r*   r+   test_qcut_list_like_labels   s    	rn   z
kwargs,msg
duplicatesdropzBin edges must be uniqueraisez(invalid value for 'duplicates' parameterc              	   C   s|   dddddddg}|d k	rDt jt|d t|df|  W 5 Q R X n4t|df| }ttddtddg}t|j| d S )Nr   r   rG   r8   r6   r=   )	r9   r:   r;   r   r   r   r#   r@   r   )kwargsrh   r    r(   r4   r*   r*   r+   test_qcut_duplicates_bin   s    rs   zdata,start,end)      "@gsh|!@rt   )        r=   ru   )      "gn "rv   lengthFc           	      C   sv   t | g| }t|d|d}|d krRtt||g| dd}t |tdd}nt dg| tjd}t	|| d S )	Nr   r.   r"   )closedTrH   r   dtype)
r   r   r   r   r^   r_   r   Zintpr#   r`   )	rK   startendrw   r&   ra   r(   rI   r4   r*   r*   r+   test_single_quantile   s    r}   ra   Z20180101Z20180103z0 daysz2 daysc                 C   s
   t | jS )N)strrz   )xr*   r*   r+   <lambda>       r   )idsc                 C   sf   t | d t  | d t  ftj| d t  | d fg}tt|dd}t| d}t	
|| d S )Nr   rG   TrH   )r   from_tuplesr   r   r   rD   r   r   r   r#   r`   )ra   rI   r4   r(   r*   r*   r+   test_qcut_nat   s    
4
r   binsr   c              
   C   s   d}t tdd|d}t|| }t tttd|dtd|dttd|dtd|dttd|dtd	|dgtd
d}t	|| d S )Nz
US/EasternZ20130101r8   )periodstzz2012-12-31 23:59:59.999999999)r   z2013-01-01 16:00:00z2013-01-02 08:00:00z2013-01-03 00:00:00TrH   )
r   r   r   r   r   r	   r^   r_   r#   r`   )r   r   ra   r(   r4   r*   r*   r+   test_datetime_tz_qcut   s.    






r   zarg,expected_binsZ1day)r   z1 daysz3 daysz
2018-01-01z
2018-01-02z
2018-01-03c                 C   s*   t | }t|ddd\}}t|| d S )NrG   Tr   )r   r   r#   r@   )argZexpected_binsra   r(   Zresult_binsr*   r*   r+   test_date_like_qcut_bins   s    r   rZ   r[   zbox, comparec                 C   sV   |dddddgd }|dddddgd }t || dd}t || dd}||| d S )Nr   r   r-   FTrp   )ro   )r   )r   ZboxcompareZdata_expectedZdata_resultr4   r(   r*   r*   r+   test_qcut_bool_coercion_to_int  s
    r   qrY   r-   c                 C   sN   t jtd|d}t j|d d d< t|| }t|t| }t	|| d S )Nr3   ry   rG   )
pdr]   r   r?   ZNAr   r^   rP   r#   r$   )r   Zany_numeric_ea_dtyper%   r(   r4   r*   r*   r+   test_qcut_nullable_integer&  s
    
r   )8rL   Znumpyr   r9   Zpandasr   r   r   r   r   r   r   r   r	   r
   r   r   r   r   Zpandas._testingZ_testingr#   Zpandas.api.typesr   r_   Zpandas.tseries.offsetsr   r   r,   r2   r5   r<   rB   rF   rJ   rX   rd   markZparametrizeri   listrf   rm   rn   rs   r}   r   Zlinspacer   r   r`   r]   r$   Zassert_equalr   r   r*   r*   r*   r+   <module>   s   <





	
 





	