U
    sVcV7                     @   sR   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	 d dl
mZ G dd dZdS )    N)Categorical	DataFrameSeries	Timestamp
date_rangec                   @   s   e Z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dd Zdd Zdd Zdd Zejdddddgddggdd  Zd!d" Zd#d$ Zd%S )&TestDataFrameDescribec              
   C   s   t dddddgdddddgdd	d
ddgd}| }t ddd
|j dd	d
ddgiddddddddgd}t|| |jdgd}t dddddgidddd gd}t|| d S )!NabcdeTF
         (   2   )Zstring_data	bool_dataint_datar      countmeanstdmin25%50%75%maxindexboolincluder         uniquetopfreq)r   describer   r   tmassert_frame_equalselfdfresultexpected r/   L/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/frame/methods/test_describe.py!test_describe_bool_in_mixed_frame   s$    
 
z7TestDataFrameDescribe.test_describe_bool_in_mixed_framec                 C   sp   t dd d gitd}| }t dddtjtjgitddddgd}t|| |jd d  }t|| d S )	NAdtyper   r   r$   r%   r&   )r4   r   )r   objectr'   npnanr(   r)   ilocr*   r/   r/   r0   test_describe_empty_object*   s    
z0TestDataFrameDescribe.test_describe_empty_objectc              
   C   s(  t ddddgddddgd}| }t ddddgddddgdddd	d
gd}t|| t dddddgdddddgd}| }t ddd|j dddddgiddddddddgd}t|| t ddddgddddgd}| }t ddddgddddgdddd	d
gd}t|| d S )NFT)Zbool_data_1Zbool_data_2   r"   r#   r   r$   r%   r&   r   r      )r   r   r   r   r   r   r   r   r   r   r   r   r	   r
   )r   Zstr_data)r   r'   r(   r)   r   r   r*   r/   r/   r0   test_describe_bool_frame8   s>    



z.TestDataFrameDescribe.test_describe_bool_framec           	      C   s(  t dtjdddi}dd tdddD }t||}|jdgdd	}tj|j	tdd
dd|d|d< |}|
 }t|jdksttddddgdddgdd}t|}|
 }tddddgddddgd}t|| ttddddg}t |ddddgd}|
 }t|d j|d j d S )Nvaluer   i'  d   c                 S   s   g | ]}| d |d  qS )z - i  r/   ).0ir/   r/   r0   
<listcomp>`   s     zCTestDataFrameDescribe.test_describe_categorical.<locals>.<listcomp>i  T)ZbyZ	ascendingi)  F)rightlabelsZvalue_groupr;   r   r	   r
   )
categoriesorderedr:   r"   r#   r   r$   r%   r&   r   )catsrF   rG   )r   r6   randomrandintranger   Zsort_valuespdZcutr=   r'   lencolumnsAssertionErrorr   r(   Zassert_series_equalZassert_numpy_array_equalvalues)	r+   r,   rC   Z
cat_labelsrF   r-   rG   r.   Zdf3r/   r/   r0   test_describe_categorical^   s4    
 
  

  z/TestDataFrameDescribe.test_describe_categoricalc                 C   sv   t dtg i}| }t dddtjtjgiddddgdd}t|| t|jd	 s^t	t|jd
 srt	d S )NZ	empty_colr   r   r$   r%   r&   r5   r   r4   )r"   r   )r#   r   )
r   r   r'   r6   r7   r(   r)   isnanr8   rN   r*   r/   r/   r0   &test_describe_empty_categorical_column}   s    
z<TestDataFrameDescribe.test_describe_empty_categorical_columnc              
   C   s   t jdddgddd}tddd	d
dgddd	d
dgddd ddgd|d}| }t jddgdddgddd}tdd	|j ddd	d
dgdd	|j ddd	d
dgdddddddddg|d}t|| t	|j
j|j
j d S )Nint1int2objTXXX)rE   namer   r   r   r   r   r2   r   Xr;   )rT   rU   rV   )rM   )rD   rE   rX   r   )rT   rU   r   r   r   r   r   r   r   r   )r   rM   )rK   ZCategoricalIndexr   r'   rT   r   rU   r(   r)   Zassert_categorical_equalrM   rO   r+   rM   r,   r-   Zexp_columnsr.   r/   r/   r0   !test_describe_categorical_columns   s0    	z7TestDataFrameDescribe.test_describe_categorical_columnsc              
   C   s  t jdddgdddd}tdd	d
ddgdd	d
ddgddd ddgd}||_| }t jddgdddd}tdd
|jd d df  dd	d
ddgdd
|jd d df  dd	d
ddgdddddddddgd}||_t|| |jj	dkst
|jj|jjkst
d S )Nz
2011-01-01z
2011-02-01z
2011-03-01ZMSz
US/EasternrW   )r&   tzrX   r   r   r   r   r   r2   r   rY   r;   )r   r;   r"   r   )r   r;   r   r   r   r   r   r   r   r   r   )rK   ZDatetimeIndexr   rM   r'   r8   r   r(   r)   r&   rN   r\   rZ   r/   r/   r0   test_describe_datetime_columns   s<       $$z4TestDataFrameDescribe.test_describe_datetime_columnsc                 C   s
  t jdddd}t jdddd}t||d}tdt d|jd d d	f  t dt d
t dt dt dgdt d|jd d df  t dt dt dt dt dgdddddddddgd}| }t|| d}t	||kst
d S )Nz1 daysDr   )r&   periodsz1 hoursH)t1t2z3 daysr   z2 daysz4 daysz5 daysz3 hoursr;   z2 hoursz4 hoursz5 hoursr   r   r   r   r   r   r   r   r   a                                t1                         t2
count                          5                          5
mean             3 days 00:00:00            0 days 03:00:00
std    1 days 13:56:50.394919273  0 days 01:34:52.099788303
min              1 days 00:00:00            0 days 01:00:00
25%              2 days 00:00:00            0 days 02:00:00
50%              3 days 00:00:00            0 days 03:00:00
75%              4 days 00:00:00            0 days 04:00:00
max              5 days 00:00:00            0 days 05:00:00)rK   Ztimedelta_ranger   Z	Timedeltar8   r   r'   r(   r)   reprrN   )r+   ra   rb   r,   r.   r-   Zexp_reprr/   r/   r0   test_describe_timedelta_values   s<    z4TestDataFrameDescribe.test_describe_timedelta_valuesc           
      C   s   |}t td}tddd}tddd}t t|||d}t||d}tddddddd	d
gdtddd||||d |d |d ||tjgdddddddddgd}|jddd}	t	
|	| d S )Nr     r;   r\   s1s2r"   r   r#   r:   gvhXL?r   r   r   r   r   r   r   r   r   allT)r!   datetime_is_numeric)r   rJ   r   r   r   tz_localizer6   r7   r'   r(   r)   )
r+   Ztz_naive_fixturer\   rh   startendri   r,   r.   r-   r/   r/   r0   test_describe_tz_values   s,    z-TestDataFrameDescribe.test_describe_tz_valuesc              
   C   s   t tddddddgd}|jdd}t dtd	td
tdtd	tdtdtjgddddddddgdddddddddgd}t|| d S )NZ2012r#   )r_   r;   r"   r   r	   T)rk   z
2012-01-02z
2012-01-01z2012-01-01T12:00:00z2012-01-02T12:00:00z
2012-01-03g      ?g      @r   r   r   r   r   r   r   r   r   )r   r   r'   r   r6   r7   r(   r)   r*   r/   r/   r0   *test_datetime_is_numeric_includes_datetime  s"    
z@TestDataFrameDescribe.test_datetime_is_numeric_includes_datetimec                 C   s   d}t td}tddd}tddd}t t|||d}t||d}| }t dd| jd d||||gdd	d
dddgd}dd	d
ddddddddddg}	t	j
||gdddgdj|	 }
tt |jdd}W 5 Q R X t||
 d S )NZCETr   re   r;   rf   rg   r   r   r$   r%   r&   firstlastr   r   r   r   r   r   r   r   rh   ri   )axiskeysrj   r    )r   rJ   r   r   r   r'   Zvalue_countsr   rl   rK   concatlocr(   Zassert_produces_warningFutureWarningr)   )r+   r\   rh   rm   rn   ri   r,   Zs1_Zs2_idxr.   r-   r/   r/   r0   test_describe_tz_values2-  sF    z.TestDataFrameDescribe.test_describe_tz_values2c                 C   s   t ddgi}tddd}|j|d}t dddtjdfdd |D did	d
ddddddddddddddgd}t|| d S )Nxr;   r      )Zpercentiles      ?c                 s   s   | ]
}d V  qdS )r}   Nr/   )r?   _r/   r/   r0   	<genexpr>]  s     zNTestDataFrameDescribe.test_describe_percentiles_integer_idx.<locals>.<genexpr>r   r   r   r   z0%z10%z20%z30%z40%r   z60%z70%z80%z90%z100%r   r   )r}   )r   r6   Zlinspacer'   NaNr(   r)   )r+   r,   Zpctr-   r.   r/   r/   r0   %test_describe_percentiles_integer_idxV  s0     z;TestDataFrameDescribe.test_describe_percentiles_integer_idxc                 C   sX   t dddiidddiig}t dddddidgiddd	d
gd}| }t|| d S )Ntestr   12r"   r;   r   r$   r%   r&   r   )r   r'   r(   r)   )r+   r,   r.   r-   r/   r/   r0   8test_describe_does_not_raise_error_for_dictlike_elementss  s     
zNTestDataFrameDescribe.test_describe_does_not_raise_error_for_dictlike_elementsexcluder{   yzc              	   C   sF   t dgdgdgd}d}tjt|d |jd|d W 5 Q R X d	S )
zU
        When include is 'all', then setting exclude != None is not allowed.
        r;   r"   r#   )r{   r   r   z*exclude must be None when include is 'all')matchrj   )r!   r   N)r   pytestZraises
ValueErrorr'   )r+   r   r,   msgr/   r/   r0   2test_describe_when_include_all_exclude_not_allowed|  s    zHTestDataFrameDescribe.test_describe_when_include_all_exclude_not_allowedc                 C   sr   t dddgdddgdddggdddgdd}| }|jd d df  }tj|||g|jdd	}t|| d S )
Nr;   r"   r#   barr   Zfloat64)rM   r4   r   )ru   rt   )r   r'   r8   rK   rv   rM   r(   r)   )r+   r,   r-   Zserr.   r/   r/   r0   $test_describe_with_duplicate_columns  s    z:TestDataFrameDescribe.test_describe_with_duplicate_columnsc              
   C   sz   t dtjtjgtjd|d}| }t ddtjgdgd  dgtjgd  ddd	d
dddddgdd}t|| d S )Nr;   rp   r3   r}   r   g           r   r   r   r   r   r   r   r   ZFloat64rQ   )r   rK   ZNAr'   r(   r)   )r+   Zany_numeric_ea_dtyper,   r-   r.   r/   r/   r0   test_ea_with_na  s    (z%TestDataFrameDescribe.test_ea_with_naN)__name__
__module____qualname__r1   r9   r<   rP   rS   r[   r]   rd   ro   rq   rz   r   r   r   markZparametrizer   r   r   r/   r/   r/   r0   r      s"   & 0)	
	r   )Znumpyr6   r   ZpandasrK   r   r   r   r   r   Zpandas._testingZ_testingr(   r   r/   r/   r/   r0   <module>   s
   