U
    ¾mœd”8  ã                   @   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%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/   úa/home/sam/Atlas/atlas_env/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&   )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s†t‚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ÚpdÚ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   rO   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;   )rU   rV   rW   )rN   )rD   rE   rY   r   )rU   rV   r   r   r   r   r   r   r   r   )r   rN   )rK   ZCategoricalIndexr   r'   rU   r   rV   r(   r)   Zassert_categorical_equalrN   rP   ©r+   rN   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sòt
‚|jj|jjk�st
‚d S )Nz
2011-01-01z
2011-02-01z
2011-03-01ZMSz
US/EasternrX   )r&   ÚtzrY   r   r   r   r   r   r2   r   rZ   r;   )r   r;   r"   r   )r   r;   r   r   r   r   r   r   r   r   r   )rK   ZDatetimeIndexr   rN   r'   r8   r   r(   r)   r&   rO   r]   r[   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)   ÚreprrO   )r+   rb   rc   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�}	t	 
|	|¡ d S )Nr   éâ  r;   ©r]   ©Ús1Ús2r"   r   r#   r:   gßávhXLù?r   r   r   r   r   r   r   r   r   Úallr    )r   rJ   r   r   r   Ztz_localizer6   r7   r'   r(   r)   )
r+   Ztz_naive_fixturer]   ri   ÚstartÚendrj   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œƒ}| ¡ }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	   z
2012-01-02z
2012-01-01z2012-01-01T12:00:00z2012-01-02T12:00:00z
2012-01-03ç      ø?ç      @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œƒ}| ¡ }| ¡ }ddd	d
ddddg}	tj||gdddgd�j|	dd�}
|jdd�}t	 
||
¡ d S )NZCETr   rf   r;   rg   rh   r   r   r   r   r   r   r   r   ri   rj   )ÚaxisÚkeysF)Úcopyrk   r    )r   rJ   r   r   r   r'   rK   ÚconcatZreindexr(   r)   )r+   r]   ri   rl   rm   rj   r,   Zs1_Zs2_Úidxr.   r-   r/   r/   r0   Útest_describe_tz_values2-  s.    ø
 ÿ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>O  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_idxH  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_elementse  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')Úmatchrk   ©r!   r„   N)r   ÚpytestZraisesÚ
ValueErrorr'   )r+   r„   r,   Úmsgr/   r/   r0   Ú2test_describe_when_include_all_exclude_not_allowedn  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   Úfloat64)rN   r4   r   )rt   rs   )r   r'   r8   rK   rv   rN   r(   r)   )r+   r,   r-   Zserr.   r/   r/   r0   Ú$test_describe_with_duplicate_columnsx  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;   ro   r3   r{   r   g        é   r   r   r   r   r   r   r   r   ZFloat64rR   )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_nac              
   C   sÐ   t  d¡}ttdddgt | ¡ ¡d�tdddgt | ¡ ¡d�tdddgt | ¡ ¡d�dœƒ}|j	t | ¡ ¡t | ¡ ¡d�}tdddddd	dd
dgiddddddddgt | 
¡ ¡d�}t ||¡ d S )NZpyarrowr;   r"   r#   r3   )r   r	   r
   rˆ   r   rp   rq   r   r   r   r   r   r   r   r   rR   )r‰   Zimportorskipr   r   rK   Z
ArrowDtypeZint8Zint16Zint32r'   rŽ   r(   r)   )r+   Úpar,   r-   r.   r/   r/   r0   Útest_describe_exclude_pa_dtype�  s"    
ýÿ ÿýz4TestDataFrameDescribe.test_describe_exclude_pa_dtypeN)Ú__name__Ú
__module__Ú__qualname__r1   r9   r<   rQ   rT   r\   r^   re   rn   rr   rx   r   rƒ   r‰   ÚmarkZparametrizerŒ   r�   r‘   r“   r/   r/   r/   r0   r      s$   & 0	
	r   )Únumpyr6   r‰   ZpandasrK   r   r   r   r   r   Zpandas._testingZ_testingr(   r   r/   r/   r/   r0   Ú<module>   s
   