o
    5cV7                     @   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 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   )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 r3   ^/var/www/html/gps/gps/lib/python3.10/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'   )r8   r!   )r   objectr+   npnanr,   r-   ilocr.   r3   r3   r4   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)bool_data_1bool_data_2)   r%   Fr%   )r@   r%   Tr&   r'   r    )FFTTF)r      r%   r&   r@   )r   r   r   r   r%   r   rA   r&   r@   r   )r   r	   r
   r   )r   str_data)r@   r&   r   r%   )r   r+   r,   r-   r   r   r.   r3   r3   r4   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sCJ 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  r3   ).0ir3   r3   r4   
<listcomp>`   s    zCTestDataFrameDescribe.test_describe_categorical.<locals>.<listcomp>i  T)by	ascendingi)  F)rightlabelsvalue_grouprA   )r   r	   r	   r	   )r   r	   r
   )
categoriesordered)r@   r%   r	   r&   r'   r    )r   r	   r
   r
   )catsrP   rQ   )r   r:   randomrandintranger   sort_valuespdcutrD   r+   lencolumnsr   r,   assert_series_equalassert_numpy_array_equalvalues)	r/   r0   rL   
cat_labelsrP   r1   rQ   r2   df3r3   r3   r4   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 s-J t|jd s7J d S )N	empty_colr   r'   r9   r!   r8   )r%   r   )r&   r   )	r   r   r+   r:   r;   r,   r-   isnanr<   r.   r3   r3   r4   &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)rO   namer   r6   r   NXrA   )rY   rd   re   )rN   rO   rh   r   r   r   r   r   r   )rd   re   r   )r!   rY   )rV   CategoricalIndexr   r+   rd   r   re   r,   r-   assert_categorical_equalrY   r\   r/   rY   r0   r1   exp_columnsr2   r3   r3   r4   !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siJ |jj
|jj
kssJ d S )N)
2011-01-01
2011-02-01z
2011-03-01MSz
US/Easternrg   )r*   tzrh   r   ri   )r   rA   r%   rp   rq   r   r   r   r   r   r   r   rA   )r   rA   r   r    )rV   DatetimeIndexr   rY   r+   r<   r   r,   r-   r*   rs   rm   r3   r3   r4   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s|J d S )Nz1 daysDr   )r*   periodsz1 hoursH)t1t2z3 daysr   z2 daysz4 daysz5 daysz3 hoursrA   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)
rV   timedelta_ranger   	Timedeltar<   r   r+   r,   r-   repr)r/   ry   rz   r0   r2   r1   exp_reprr3   r3   r4   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     rA   rs   s1s2)r   r%   r   rA   r%   r&   r@   gvhXL?r&   r%   r   r   r   r   r   r   r   r   r    allT)r$   datetime_is_numeric)r   rT   r   r   r   tz_localizer:   r;   r+   r,   r-   )
r/   tz_naive_fixturers   r   startendr   r0   r2   r1   r3   r3   r4   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 )N2012r&   )rw   )rA   r%   r&   r   r	   T)r   z
2012-01-02z
2012-01-01z2012-01-01T12:00:00z2012-01-02T12:00:00z
2012-01-03)r&   r%   rA   g      ?r%   g      @r&   rA   r   r    )r   r   r+   r   r:   r;   r,   r-   r.   r3   r3   r4   *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 sjw   Y  t||
 d S )NCETr   r   rA   r   r   r   )r   r(   r)   r*   firstlastr    )r   r(   r)   r*   r   r   r   r   r   r   r   r   r   r   r   )axiskeysr   r#   )r   rT   r   r   r   r+   value_countsr!   r   rV   concatlocr,   assert_produces_warningFutureWarningr-   )r/   rs   r   r   r   r   r0   s1_s2_idxr2   r1   r3   r3   r4   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xrA   r      )percentiles      ?c                 s   s    | ]}d V  qdS )r   Nr3   )rF   _r3   r3   r4   	<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:   linspacer+   NaNr,   r-   )r/   r0   pctr1   r2   r3   r3   r4   %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%   rA   r'   r    )r   r+   r,   r-   )r/   r0   r2   r1   r3   r3   r4   8test_describe_does_not_raise_error_for_dictlike_elementss  s   zNTestDataFrameDescribe.test_describe_does_not_raise_error_for_dictlike_elementsexcluder   yzc                 C   s\   t dgdgdgd}d}tjt|d |jd|d W d	   d	S 1 s'w   Y  d	S )
zU
        When include is 'all', then setting exclude != None is not allowed.
        rA   r%   r&   )r   r   r   z*exclude must be None when include is 'all')matchr   )r$   r   N)r   pytestraises
ValueErrorr+   )r/   r   r0   msgr3   r3   r4   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)rA   rA   rA   )r%   r%   r%   )r&   r&   r&   )barr   r   float64)rY   r8   r   rA   )r   r   )r   r+   r<   rV   r   rY   r,   r-   )r/   r0   r1   serr2   r3   r3   r4   $test_describe_with_duplicate_columns  s   z:TestDataFrameDescribe.test_describe_with_duplicate_columnsc                 C   sn   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g dd	d
}t|| d S )NrA   r   r7   r   r   g           r   Float64ra   )r   rV   NAr+   r,   r-   )r/   any_numeric_ea_dtyper0   r1   r2   r3   r3   r4   test_ea_with_na  s   (z%TestDataFrameDescribe.test_ea_with_naN)__name__
__module____qualname__r5   r=   rC   r_   rc   ro   ru   r   r   r   r   r   r   r   markparametrizer   r   r   r3   r3   r3   r4   r      s$    & 0)	
	r   )numpyr:   r   pandasrV   r   r   r   r   r   pandas._testing_testingr,   r   r3   r3   r3   r4   <module>   s    