a
    Gb5                     @   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 g dg dg dd}| }t ddd|j dd	dd
dgig dd}t|| |jdgd}t dg dig dd}t|| d S )N)abcde)TTFFF
         (   2   )Zstring_data	bool_dataint_datar      r   r   r   r   r   countmeanstdmin25%50%75%maxindexboolincluder   )r      F   r   uniquetopfreq)r   describer   r   tmassert_frame_equalselfdfresultexpected r2   Glib/python3.9/site-packages/pandas/tests/frame/methods/test_describe.py!test_describe_bool_in_mixed_frame   s"    
z7TestDataFrameDescribe.test_describe_bool_in_mixed_framec                 C   sl   t dd d gitd}| }t dddtjtjgitg dd}t|| |jd d  }t|| d S )NA)dtyper   r&   )r6   r    )r   objectr*   npnanr+   r,   ilocr-   r2   r2   r3   test_describe_empty_object*   s    z0TestDataFrameDescribe.test_describe_empty_objectc              
   C   s   t g dg dd}| }t g dg ddg dd}t|| t g dg d	d
}| }t ddd|j dddddgig dd}t|| t g dg dd}| }t g dg ddg dd}t|| d S )N)FFTT)FTTT)Zbool_data_1Zbool_data_2)   r$   Fr$   )r<   r$   Tr%   r&   r   )FFTTF)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   r   r-   r2   r2   r3   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sJ tg dg ddd}t|}|
 }tg dg dd}t|| ttg d}t |g dd}|
 }t|d j|d j d S )Nvaluer   i'  d   c                 S   s   g | ]}| d |d  qS )z - i  r2   ).0ir2   r2   r3   
<listcomp>`       zCTestDataFrameDescribe.test_describe_categorical.<locals>.<listcomp>i  T)ZbyZ	ascendingi)  F)rightlabelsZvalue_groupr=   )r   r	   r	   r	   )r   r	   r
   )
categoriesordered)r<   r$   r	   r%   r&   r   )r   r	   r
   r
   )catsrI   rJ   )r   r8   ZrandomZrandintranger   Zsort_valuespdZcutr?   r*   lencolumnsr   r+   Zassert_series_equalZassert_numpy_array_equalvalues)	r.   r/   rF   Z
cat_labelsrI   r0   rJ   r1   Zdf3r2   r2   r3   test_describe_categorical^   s*    

z/TestDataFrameDescribe.test_describe_categoricalc                 C   sr   t dtg i}| }t dddtjtjgig ddd}t|| t|jd sZJ t|jd snJ d S )NZ	empty_colr   r&   r7   )r    r6   )r$   r   )r%   r   )	r   r   r*   r8   r9   r+   r,   Zisnanr:   r-   r2   r2   r3   &test_describe_empty_categorical_column}   s    z<TestDataFrameDescribe.test_describe_empty_categorical_columnc              
   C   s   t jg dddd}tg dg dg dd|d}| }t jdd	gg dddd
}tdd|j dddddgdd|j dddddgdg d|d}t|| t	|j
j|j
j d S )N)int1int2objTXXX)rH   namer   r5   r   NXr=   )rN   rR   rS   )rG   rH   rV   r   r   r   r   r   r   )rR   rS   r   )r    rN   )rL   ZCategoricalIndexr   r*   rR   r   rS   r+   r,   Zassert_categorical_equalrN   rO   r.   rN   r/   r0   Zexp_columnsr1   r2   r2   r3   !test_describe_categorical_columns   s0    	z7TestDataFrameDescribe.test_describe_categorical_columnsc              
   C   s   t jg ddddd}tg dg dg d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g dd}||_t|| |jj	dksJ |jj
|jj
ksJ d S )N)
2011-01-01
2011-02-01z
2011-03-01ZMSz
US/EasternrU   )r)   tzrV   r   rW   )r   r=   r$   r[   r\   r   r   r   r   r   r   r   r=   )r   r=   r   r   )rL   ZDatetimeIndexr   rN   r*   r:   r   r+   r,   r)   r]   rY   r2   r2   r3   test_describe_datetime_columns   s6    $$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g dd}| }t|| d}t	||ksJ 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   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)
rL   Ztimedelta_ranger   Z	Timedeltar:   r   r*   r+   r,   repr)r.   rb   rc   r/   r1   r0   Zexp_reprr2   r2   r3   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g ddtddd||||d |d |d ||tjgdg d	d
}|jddd}	t	
|	| d S )Nr     r=   r]   s1s2)r   r$   r   r=   r$   r%   r<   gvhXL?r%   r$   r   r   r   r   r   r   r   r   r   allT)r#   datetime_is_numeric)r   rK   r   r   r   tz_localizer8   r9   r*   r+   r,   )
r.   Ztz_naive_fixturer]   ri   startendrj   r/   r1   r0   r2   r2   r3   test_describe_tz_values   s,    z-TestDataFrameDescribe.test_describe_tz_valuesc              	   C   sz   t tdddg dd}|jdd}t dtdtd	td
tdtdtdtjgg ddg dd}t|| d S )NZ2012r%   )r`   )r=   r$   r%   )r   r	   T)rm   z
2012-01-02z
2012-01-01z2012-01-01T12:00:00z2012-01-02T12:00:00z
2012-01-03)r%   r$   r=   g      ?r$   g      @r%   r=   rk   r   )r   r   r*   r   r8   r9   r+   r,   r-   r2   r2   r3   *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g dd	}g d
}	t	j
||gdddgdj|	 }
tt |jdd}W d    n1 s0    Y  t||
 d S )NZCETr   rf   r=   rg   rh   r   )r   r'   r(   r)   firstlastr   )r   r'   r(   r)   rs   rt   r   r   r   r   r   r   r   ri   rj   )axiskeysrl   r"   )r   rK   r   r   r   r*   Zvalue_countsr    rn   rL   concatZlocr+   Zassert_produces_warningFutureWarningr,   )r.   r]   ri   ro   rp   rj   r/   Zs1_Zs2_idxr1   r0   r2   r2   r3   test_describe_tz_values2-  s,    *z.TestDataFrameDescribe.test_describe_tz_values2c                 C   sh   t ddgi}tddd}|j|d}t dddtjdgdd |D dig d	d
}t|| d S )Nxr=   r      )Zpercentiles      ?c                 s   s   | ]
}d V  qdS )r}   Nr2   )rA   _r2   r2   r3   	<genexpr>]  rD   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   r8   Zlinspacer*   ZNaNr+   r,   )r.   r/   Zpctr0   r1   r2   r2   r3   %test_describe_percentiles_integer_idxV  s    "z;TestDataFrameDescribe.test_describe_percentiles_integer_idxc                 C   sT   t dddiidddiig}t dddddidgig dd}| }t|| d S )	Ntestr   12r$   r=   r&   r   )r   r*   r+   r,   )r.   r/   r1   r0   r2   r2   r3   8test_describe_does_not_raise_error_for_dictlike_elementss  s    zNTestDataFrameDescribe.test_describe_does_not_raise_error_for_dictlike_elementsexcluder{   yzc                 C   sZ   t dgdgdgd}d}tjt|d |jd|d W d	   n1 sL0    Y  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')matchrl   )r#   r   N)r   pytestZraises
ValueErrorr*   )r.   r   r/   msgr2   r2   r3   2test_describe_when_include_all_exclude_not_allowed|  s    zHTestDataFrameDescribe.test_describe_when_include_all_exclude_not_allowedc                 C   sj   t g dg dg dgg ddd}| }|jd d df  }tj|||g|jdd	}t|| d S )
N)r=   r=   r=   )r$   r$   r$   )r%   r%   r%   )Zbarr   r   Zfloat64)rN   r6   r   r=   )rv   ru   )r   r*   r:   rL   rw   rN   r+   r,   )r.   r/   r0   Zserr1   r2   r2   r3   $test_describe_with_duplicate_columns  s    z:TestDataFrameDescribe.test_describe_with_duplicate_columnsN)__name__
__module____qualname__r4   r;   r>   rP   rQ   rZ   r^   re   rq   rr   rz   r   r   r   ZmarkZparametrizer   r   r2   r2   r2   r3   r      s    & 0)	
	r   )Znumpyr8   r   ZpandasrL   r   r   r   r   r   Zpandas._testingZ_testingr+   r   r2   r2   r2   r3   <module>   s
   