a
    PfH                     @   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)      	   Z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   pdZtimedelta_range)selfdf r(   _/var/www/ai-form-bot/venv/lib/python3.9/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.5sZ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%   Z	Timedeltar   getattrtmZassert_frame_equalZ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   s$   t g d}|}| |||| d S )N)r   r   r   r   r   r   r    r   r5   r&   r'   r*   r:   r6   r(   r(   r)   test_extremaY   s
    zTestNumericOnly.test_extremafirstlastc                 C   s$   t g d}|}| |||| d S )N)r   r   r   r   r   r   r   r    r>   r?   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    rE   )r   r   r   r    r>   )r&   r'   r*   r6   r:   r(   r(   r)   test_sum_cumsum   s    zTestNumericOnly.test_sum_cumsumprodcumprodc                 C   s$   t g d}|}| |||| d S )Nr-   r>   r?   r(   r(   r)   test_prod_cumprod   s    z!TestNumericOnly.test_prod_cumprodcummincummaxc                 C   s$   t g d}|}| |||| d S )N)r   r   r   r   r   r    r>   r?   r(   r(   r)   test_cummin_cummax   s
    z"TestNumericOnly.test_cummin_cummaxc           	      C   s  | d}|drtnt}|dv rddd| dtd| d	d
g}tj||d t	||  W d    n1 s|0    Y  n|dv rddtd| d	td| dg}tj||d t	||  W d    n1 s0    Y  nt	|| }t
|j| |dvrdddd
d| dtd| d	td| dg}tj||d  t	||dd W d    n1 s0    Y  nt	||dd}t
|j| d S )Nr   cum)r<   r=   rJ   rK   rE   rH   |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)rD   r+   r,   rG   z-category type does not support sum operationsz,dtype->string]rA   rB   zcategory type does not supportFr0   )r2   
startswithNotImplementedError	TypeErrorjoinreescapepytestraisesr3   r4   Zassert_index_equalr"   )	r&   r'   r*   r:   r6   r7   	exceptionmsgr9   r(   r(   r)   r5      sJ    

	,,


2zTestNumericOnly._checkN)__name__
__module____qualname__r[   Zfixturer'   markparametrizer;   r@   rC   rF   rI   rL   r5   r(   r(   r(   r)   r	      s   

#




r	   r1   )TFNc              	   C   s  |dv rt d |dv r2d}| t jj|d ttjd	dg dd	}d
|d< g d}|
|}t||}t||}	ddi}
|d ur||
d< d}d}d| d}|d ur~||v r~d}|dv r<t jt|dN tjt|d ||	i |
 W d    n1 s0    Y  W d    n1 s00    Y  n>t jt|d ||	i |
 W d    n1 sp0    Y  n||vrd}t jt|d ||	i |
 W d    n1 s0    Y  nJ|d u s|s|dvrd}|rdd l}t|jjf}nt}t j|dd| ddN tjt|d ||	i |
 W d    n1 s^0    Y  W d    n1 s~0    Y  ntjt|d ||	i |
}W d    n1 s0    Y  |r|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   rj   Zaxisr
   r1   )rH   rE   difffillna
pct_changerankshift)rH   rE   rq   rs   rt   ru   rK   rJ   re   rd   rr   zDataFrameGroupBy.z with axis=1 is deprecated1got an unexpected keyword argument 'numeric_only')rH   rE   rR   z)got an unexpected keyword argument 'axis')rr   ru   )z"not supported between instances ofz2can't multiply sequence by non-int of type 'float'unsupported operand typezhas no kernelr   (rN   )ru   )r[   skipZapplymarkerrb   Zxfailr   nprandomZdefault_rngZstandard_normalr2   r3   r   r\   rW   r4   assert_produces_warningFutureWarningZpyarrowr   ZArrowNotImplementedErrorrX   ZdropTr$   r   Zassert_equal)requestgroupby_funcr1   Zusing_infer_stringr^   r'   groupsr7   r*   argskwargsZno_argsZhas_axiswarn_msgZmsgspaZerrsr9   Zdf_expectedr8   r(   r(   r)   test_axis1_numeric_only   s^    




P2
2	P.
r   zkernel, has_arg))allF)anyF)bfillF)corrT)rf   T)covT)rK   T)rJ   T)rH   T)rE   T)rq   F)ffillF)rr   F)rA   T)rd   T)re   T)rB   T)r=   T)r+   T)r,   T)r<   T)nthF)nuniqueF)rs   F)rG   T)quantileT)semT)rg   T)stdT)rD   T)varTTFkeysa1a2c                 C   sb  t ddgddgddgdtg d}t| |}|tju r<i nd|i}||}t|| }|r|du r||i |}	d|	jvsJ n| d	v s| d
v r|tju r| dkrtnd }
d}t	j
|
|d ||i |}	W d    n1 s0    Y  d|	jv s^J nX|r|dusJ | dr*tnt}ddddddtd|  dg}| dkrbd}n| dkrpd}tj||d ||i | W d    n1 s0    Y  n|s|tjurtjtdd ||i | W d    n1 s0    Y  n\| dv sJ |tju s J tjtdd ||i | W d    n1 sT0    Y  d S )Nr
   r         )r   r   a3br1   Tr   rT   )r   r   r   r   rr   r   r   rr   %DataFrameGroupBy.fillna is deprecatedrR   rM   rN   znot allowed for this dtype+cannot be performed against 'object' dtypeszmust be a string or a.* numberrw   rQ   rO   rP   re   z8'<' not supported between instances of 'type' and 'type'rd   z8'>' not supported between instances of 'type' and 'type'rv   )rq   rs   )r   objectr   r   
no_defaultr2   r3   r"   r~   r4   r}   rU   rV   rW   rX   rY   rZ   r[   r\   )Zkernelhas_argr1   r   r'   r   r   r7   r*   r9   warnr^   r]   r(   r(   r)   test_numeric_only*  s\    *$


	,

00r   z4ignore:Downcasting object dtype arrays:FutureWarningdtypec              	   C   s  g d}t g d| d}||}|dkr<t||r8J d S t||}t g d}||}t||}	t||}
d}d}||v r| tu r|dkrd}nd	}|d
krtnd }d}tj||dF t	j
t|d ||
  W d    n1 s0    Y  W d    n1 s0    Y  n| tu r|d
kr2tnd }d}tj||d ||
 }W d    n1 sh0    Y  tj||d |	|
 }W d    n1 s0    Y  ||v r|t}t|| d}||vrd}t	j
t|d ||
ddi W d    n1 s0    Y  n| tu rtdg d}t	j
t|d ||
ddi W d    n1 sh0    Y  n| tkr|dkrd}tjt|d, ||
ddi}||
ddi}W d    n1 s0    Y  t|| n(||
ddi}||
ddi}t|| d S )N)r   r   r
   )r
   r   r   )r   rf   )r   r   rK   rJ   rH   rE   r   )rA   rB   r   r   r   ru   rD   rq   rs   r   r+   r,   r<   r=   rG   rg   r   r   z!is not supported for object dtyperr   r   rR   z"SeriesGroupBy.fillna is deprecated)rA   rB   r=   r+   r,   r<   rG   r   r   rg   r   rD   r   rK   rJ   rH   rE   rv   r1   TrN   )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   r2   hasattrr3   r   r   r~   r4   r}   r[   r\   rW   r$   Zassert_series_equalrX   bool)r   r   r   ZgrouperZserr7   r*   Zexpected_serZexpected_gbZexpected_methodr   Zfails_on_numeric_objectZ
obj_resultr^   r   r   r9   r8   Zhas_numeric_onlyr(   r(   r)   "test_deprecate_numeric_only_series  sh    





H
((


0
0.r   )rY   numpyr{   r[   Zpandas._libsr   Zpandasr%   r   r   r   r   r   Zpandas._testingZ_testingr4   Zpandas.tests.groupbyr   r	   rb   rc   r   r   r   filterwarningsr   r   r   r   r   r(   r(   r(   r)   <module>   s*    ?
W$C
