o
    �¨Êh�H  ã                   @   sþ   d dl Z d dlZd dlZd dlmZ d dlZd dlmZm	Z	m
Z
mZmZ d dlmZ d dlmZ G dd„ dƒZej dg d¢¡d	d
„ ƒZej dg d¢¡ej dddejg¡ej ddgddgg¡dd„ ƒƒƒZej d¡ej deeeeg¡dd„ ƒƒZdS )é    N)Úlib)Ú	DataFrameÚIndexÚSeriesÚ	TimestampÚ
date_range)Úget_groupby_method_argsc                   @   s¾   e Zd Zejdd„ ƒZej dddg¡dd„ ƒZej ddd	g¡d
d„ ƒZ	ej dddg¡dd„ ƒZ
ej dddg¡dd„ ƒZej dddg¡dd„ ƒZej dddg¡dd„ ƒZdd„ ZdS )ÚTestNumericOnlyc                 C   sh   t g d¢g d¢g d¢tdƒttdƒƒ d¡g d¢tddd	�tddd
d�tjdddd�dœ	g d¢d�}|S )N)é   r
   é   )r
   r   é   )g      @g      @ç      @ÚabcÚcategory)é   é   é	   Ú20130101r   )Úperiodsú
US/Eastern)r   Útzz1 sÚs)r   Úfreq)	ÚgroupÚintÚfloatÚstringÚcategory_stringÚcategory_intÚdatetimeÚ
datetimetzÚ	timedelta©Úcolumns)r   Úlistr   Úastyper   ÚpdÚtimedelta_range)ÚselfÚdf© r*   úX/var/www/html/env/lib/python3.10/site-packages/pandas/tests/groupby/test_numeric_only.pyr)      s   
÷ôzTestNumericOnly.dfÚmethodÚmeanÚmedianc                 C   sº   t g d¢ƒ}| d¡}tddgddgt d¡t d¡gd	d
gtdƒtdƒgtddd�tddd�gdœt ddgdd�g d¢d�}t||ƒdd�}t | 	|¡|¡ |j
}|  ||||¡ d S )N©r   r   r   r   g      @r   g      @r   z1.5sÚ3sg      ø?r   z2013-01-01 12:00:00z2013-01-03 00:00:00r   )r   )r   r   r!   r   r   r    r
   r   )Úname)Úindexr#   T©Únumeric_only)r   Úgroupbyr   r&   Ú	Timedeltar   ÚgetattrÚtmÚassert_frame_equalÚreindex_liker#   Ú_check)r(   r)   r,   Úexpected_columns_numericÚgbÚexpectedÚresultÚexpected_columnsr*   r*   r+   Útest_averages5   s*   
þ

þ÷ðzTestNumericOnly.test_averagesÚminÚmaxc                 C   ó$   t g d¢ƒ}|}|  ||||¡ d S )N)r   r   r   r   r   r    r!   ©r   r;   ©r(   r)   r,   r@   r<   r*   r*   r+   Útest_extremaY   s
   ÿzTestNumericOnly.test_extremaÚfirstÚlastc                 C   rD   )N)r   r   r   r   r   r   r    r!   rE   rF   r*   r*   r+   Útest_first_lastm   s
   ÿzTestNumericOnly.test_first_lastÚsumÚcumsumc                 C   s@   t g d¢ƒ}t g d¢ƒ}|dkrt g d¢ƒ}|  ||||¡ d S )Nr/   )r   r   r   r   r!   rL   )r   r   r   r!   rE   )r(   r)   r,   r<   r@   r*   r*   r+   Útest_sum_cumsum   s   ÿzTestNumericOnly.test_sum_cumsumÚprodÚcumprodc                 C   rD   )Nr/   rE   rF   r*   r*   r+   Útest_prod_cumprod‹   s   z!TestNumericOnly.test_prod_cumprodÚcumminÚcummaxc                 C   rD   )N)r   r   r   r   r    r!   rE   rF   r*   r*   r+   Útest_cummin_cummax’   s
   ÿz"TestNumericOnly.test_cummin_cummaxc           	      C   sº  |  d¡}| d¡rtnt}|dv rDd dd|› d�t d|› d	�¡d
g¡}tj||d�� t	||ƒƒ  W d   ƒ n1 s>w   Y  nE|dv r|d dt d|› d	�¡t d|› d�¡g¡}tj||d�� t	||ƒƒ  W d   ƒ n1 svw   Y  nt	||ƒƒ }t
 |j|¡ |dvrÌd ddd
d|› d�t d|› d	�¡t d|› d�¡g¡}tj||d�� t	||ƒdd� W d   ƒ d S 1 sÅw   Y  d S t	||ƒdd�}t
 |j|¡ d S )Nr   Úcum)rB   rC   rQ   rR   rL   rO   ú|zCategorical is not orderedzCannot perform z with non-ordered Categoricalúagg function failed [how->ú,dtype->object]ú*function is not implemented for this dtype©Úmatch)rK   r-   r.   rN   z-category type does not support sum operationsz,dtype->string]©rH   rI   zcategory type does not supportFr3   )r5   Ú
startswithÚNotImplementedErrorÚ	TypeErrorÚjoinÚreÚescapeÚpytestÚraisesr7   r8   Úassert_index_equalr#   )	r(   r)   r,   r@   r<   r=   Ú	exceptionÚmsgr?   r*   r*   r+   r;   ž   sT   

ûÿ	ÿ€ýÿÿ€
úÿ
"ÿzTestNumericOnly._checkN)Ú__name__Ú
__module__Ú__qualname__rb   Úfixturer)   ÚmarkÚparametrizerA   rG   rJ   rM   rP   rS   r;   r*   r*   r*   r+   r	      s     

#




r	   r4   )TFNc              	   C   s&  |dv r	t  d¡ |dv rd}|  t jj|d�¡ ttj d¡ 	d¡g d¢d	�}d
|d< g d¢}| 
|¡}t||ƒ}t||ƒ}	ddi}
|d urK||
d< d}d}d|› d�}|d ur½||v r½d}|dv rœt jt|d��& tjt|d�� ||	i |
¤Ž W d   ƒ n1 s„w   Y  W d   ƒ n
1 s“w   Y  d S d S t jt|d�� ||	i |
¤Ž W d   ƒ d S 1 s¶w   Y  d S ||vräd}t jt|d�� ||	i |
¤Ž W d   ƒ d S 1 sÝw   Y  d S |d u së|�sJ|dv�rJd}|rÿdd l}t|jjf}nt}t j|dd |¡› d�d��0 tjt|d�� ||	i |
¤Ž W d   ƒ n1 �s*w   Y  W d   ƒ d S W d   ƒ d S 1 �sCw   Y  d S tjt|d�� ||	i |
¤Ž}W d   ƒ n	1 �sdw   Y  |�rs|jdd	�jn|j}t||ƒ|	Ž j}|dk�r‹|�s‹| t¡}t ||¡ d S )N)ÚidxmaxÚidxminz5idxmax and idx_min tested in test_idxmin_idxmax_axis1)ÚcorrwithÚskewzDGH#47723 groupby.corrwith and skew do not correctly implement axis=1)Úreasonr   )é
   é   )ÚAÚBÚCÚDr"   ÚxÚE)
r
   r   r   r
   r   r   r
   r   r   rs   Úaxisr
   r4   )rO   rL   ÚdiffÚfillnaÚ
pct_changeÚrankÚshift)rO   rL   r{   r}   r~   r   rR   rQ   rn   rm   r|   zDataFrameGroupBy.z with axis=1 is deprecatedú1got an unexpected keyword argument 'numeric_only')rO   rL   rY   z)got an unexpected keyword argument 'axis')r|   r   )z"not supported between instances ofz2can't multiply sequence by non-int of type 'float'úunsupported operand typezhas no kernelr   ú(rU   ú)r   )rb   ÚskipÚapplymarkerrk   Úxfailr   ÚnpÚrandomÚdefault_rngÚstandard_normalr5   r7   r   rc   r^   r8   Úassert_produces_warningÚFutureWarningÚpyarrowr   ÚArrowNotImplementedErrorr_   ÚdropÚTr%   r   Úassert_equal)ÚrequestÚgroupby_funcr4   Úusing_infer_stringrf   r)   Úgroupsr=   r,   ÚargsÚkwargsÚno_argsÚhas_axisÚwarn_msgÚmsgsÚpaÚerrsr?   Údf_expectedr>   r*   r*   r+   Útest_axis1_numeric_onlyÒ   sr   
ÿ


ÿ€$ÿ"ÿ"ÿ	 ÿÿ$ÿÿ
rŸ   zkernel, has_arg))ÚallF)ÚanyF)ÚbfillF)ÚcorrT)ro   T)ÚcovT)rR   T)rQ   T)rO   T)rL   T)r{   F)ÚffillF)r|   F)rH   T)rm   T)rn   T)rI   T)rC   T)r-   T)r.   T)rB   T)ÚnthF)ÚnuniqueF)r}   F)rN   T)ÚquantileT)ÚsemT)rp   T)ÚstdT)rK   T)ÚvarTTFÚkeysÚa1Úa2c                 C   sR  t ddgddgddgdtg dœƒ}t| |ƒ}|tju ri nd|i}| |¡}t|| ƒ}|rB|du rB||i |¤Ž}	d|	jvs@J ‚d S | d	v sO| d
v r€|tju r€| dkrUtnd }
d}t	j
|
|d�� ||i |¤Ž}	W d   ƒ n1 srw   Y  d|	jv s~J ‚d S |rÑ|dusˆJ ‚|  d¡r�tnt}d dddddt d| › d�¡g¡}| dkrªd}n| dkr°d}tj||d�� ||i |¤Ž W d   ƒ d S 1 sÊw   Y  d S |sù|tjurùtjtdd�� ||i |¤Ž W d   ƒ d S 1 sòw   Y  d S | dv sÿJ ‚|tju �sJ ‚tjtdd�� ||i |¤Ž W d   ƒ d S 1 �s"w   Y  d S )Nr
   r   é   é   )r­   r®   Úa3Úbr4   Tr²   r[   )r¡   r    r¢   r¥   r|   r¦   r§   r|   ú%DataFrameGroupBy.fillna is deprecatedrY   rT   rU   znot allowed for this dtypeú+cannot be performed against 'object' dtypeszmust be a string or a.* numberr�   rX   rV   rW   rn   z8'<' not supported between instances of 'type' and 'type'rm   z8'>' not supported between instances of 'type' and 'type'r€   )r{   r}   )r   Úobjectr   r   Ú
no_defaultr5   r7   r#   rŒ   r8   r‹   r\   r]   r^   r_   r`   ra   rb   rc   )ÚkernelÚhas_argr4   r¬   r)   r–   r—   r=   r,   r?   Úwarnrf   re   r*   r*   r+   Útest_numeric_only*  s^   $*



ÿùÿ"ÿÿ"ý$ÿrº   z4ignore:Downcasting object dtype arrays:FutureWarningÚdtypec              	   C   s  g d¢}t g d¢| d�}| |¡}|dkrt||ƒrJ ‚d S t||ƒ}t g d¢ƒ}| |¡}t||ƒ}	t||ƒ}
d}d}||v rŠ| tu rŠ|dkrKd}nd	}|d
krStnd }d}tj||d��# t	j
t|d�� ||
Ž  W d   ƒ n1 suw   Y  W d   ƒ n1 s„w   Y  nS| tu rÝ|d
kr”tnd }d}tj||d�� ||
Ž }W d   ƒ n1 s®w   Y  tj||d�� |	|
Ž }W d   ƒ n1 sÉw   Y  ||v r×| t¡}t ||¡ d}||v�rd}t	j
t|d�� ||
ddiŽ W d   ƒ d S 1 �sw   Y  d S | tu �r6d g d¢¡}t	j
t|d�� ||
ddiŽ W d   ƒ d S 1 �s/w   Y  d S | tk�rp|dk�rpd}tjt|d�� ||
ddiŽ}||
ddiŽ}W d   ƒ n	1 �scw   Y  t ||¡ d S ||
ddiŽ}||
ddiŽ}t ||¡ d S )N)r   r   r
   )r
   r   r   )r»   ro   )r£   r¤   rR   rQ   rO   rL   r¨   )rH   rI   r¦   r¢   r¥   r   rK   r{   r}   r«   r-   r.   rB   rC   rN   rp   r¨   r´   z!is not supported for object dtyper|   r³   rY   z"SeriesGroupBy.fillna is deprecated)rH   rI   rC   r-   r.   rB   rN   r¨   r©   rp   rª   rK   r«   rR   rQ   rO   rL   r€   r4   TrU   )z@SeriesGroupBy.sem called with numeric_only=True and dtype objectz=Series.skew does not allow numeric_only=True with non-numericz7cum(sum|prod|min|max) is not supported for object dtypezCCannot use numeric_only=True with SeriesGroupBy\..* and non-numericz-Allowing bool dtype in SeriesGroupBy.quantileF)r   r5   Úhasattrr7   r   rµ   rŒ   r8   r‹   rb   rc   r^   r%   Úassert_series_equalr_   Úbool)r»   r“   r’   ÚgrouperÚserr=   r,   Úexpected_serÚexpected_gbÚexpected_methodr–   Úfails_on_numeric_objectÚ
obj_resultrf   r¹   rš   r?   r>   Úhas_numeric_onlyr*   r*   r+   Ú"test_deprecate_numeric_only_series“  sz   






ÿ€ÿ€
ÿ
ÿ

$ÿ
ÿ$ÿýrÇ   )r`   Únumpyr‡   rb   Úpandas._libsr   Úpandasr&   r   r   r   r   r   Úpandas._testingÚ_testingr8   Úpandas.tests.groupbyr   r	   rk   rl   rŸ   r¶   rº   Úfilterwarningsr¾   r   r   rµ   rÇ   r*   r*   r*   r+   Ú<module>   s,     ?
Wþ$
C