U
    *if5                     @   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#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/   [/home/mars/bis/venv/lib/python3.8/site-packages/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&   )r3   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orderedr9   r"   r#   r   r$   r%   r&   r   )catsrE   rF   )r   r5   randomrandintranger   Zsort_valuespdcutr<   r'   lencolumnsAssertionErrorr   r(   Zassert_series_equalZassert_numpy_array_equalvalues)	r+   r,   rB   Z
cat_labelsrE   r-   rF   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&   r4   )r   r3   )r"   r   )r#   r   )
r   r   r'   r5   r6   r(   r)   isnanr7   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)rD   namer   r   r   r   r   r2   r   Xr:   )rS   rT   rU   )rM   )rC   rD   rW   r   )rS   rT   r   r   r   r   r   r   r   r   )r   rM   )rJ   ZCategoricalIndexr   r'   rS   r   rT   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/EasternrV   )r&   tzrW   r   r   r   r   r   r2   r   rX   r:   )r   r:   r"   r   )r   r:   r   r   r   r   r   r   r   r   r   )rJ   ZDatetimeIndexr   rM   r'   r7   r   r(   r)   r&   rN   r[   rY   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)rJ   Ztimedelta_ranger   Z	Timedeltar7   r   r'   r(   r)   reprrN   )r+   r`   ra   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#   r9   gvhXL?r   r   r   r   r   r   r   r   r   allT)r!   datetime_is_numeric)r   rI   r   r   r   tz_localizer5   r6   r'   r(   r)   )
r+   Ztz_naive_fixturer[   rg   startendrh   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)rj   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   r5   r6   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   rd   r:   re   rf   r   r   r$   r%   r&   firstlastr   r   r   r   r   r   r   r   rg   rh   )axiskeysri   r    )r   rI   r   r   r   r'   Zvalue_countsr   rk   rJ   concatlocr(   Zassert_produces_warningFutureWarningr)   )r+   r[   rg   rl   rm   rh   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   r5   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excludery   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#   )ry   r   r   z*exclude must be None when include is 'all')matchri   )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   r3   r   )rs   rr   )r   r'   r7   rJ   rt   rM   r(   r)   )r+   r,   r-   Zserr.   r/   r/   r0   $test_describe_with_duplicate_columns  s    z:TestDataFrameDescribe.test_describe_with_duplicate_columnsN)__name__
__module____qualname__r1   r8   r;   rP   rR   rZ   r\   rc   rn   ro   rx   r   r   r   markZparametrizer   r   r/   r/   r/   r0   r      s    & 0)	
	r   )numpyr5   r   ZpandasrJ   r   r   r   r   r   Zpandas._testingZ_testingr(   r   r/   r/   r/   r0   <module>   s
   