o
    hJ                     @   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   s~   t g dg dg dtg dddt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      @      @)abcstrdtypeabccategory)      	   20130101r   )periods
US/Eastern)r   tzz1 ss)r   freq)
groupintfloatstringobjectcategory_stringcategory_intdatetime
datetimetz	timedeltacolumns)r   r   r#   listastyper   pdtimedelta_range)selfdf r1   ]/var/www/html/pos/venv/lib/python3.10/site-packages/pandas/tests/groupby/test_numeric_only.pyr0      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/   r0   r3   expected_columns_numericgbexpectedresultexpected_columnsr1   r1   r2   test_averages7   s*   


zTestNumericOnly.test_averagesminmaxc                 C   $   t g d}|}| |||| d S )N)r    r!   r"   r%   r&   r'   r(   r   rB   r/   r0   r3   rG   rC   r1   r1   r2   test_extrema[   s
   zTestNumericOnly.test_extremafirstlastc                 C   rK   )N)	r    r!   r"   r#   r$   r%   r&   r'   r(   rL   rM   r1   r1   r2   test_first_lasto   s
   zTestNumericOnly.test_first_lastsumcumsumc                 C   s@   t g d}t g d}|dkrt g d}| |||| d S )Nr6   )r    r!   r"   r%   r(   rS   )r    r!   r%   r(   rL   )r/   r0   r3   rC   rG   r1   r1   r2   test_sum_cumsum   s   zTestNumericOnly.test_sum_cumsumprodcumprodc                 C   rK   )Nr6   rL   rM   r1   r1   r2   test_prod_cumprod   s   z!TestNumericOnly.test_prod_cumprodcummincummaxc                 C   rK   )N)r    r!   r%   r&   r'   r(   rL   rM   r1   r1   r2   test_cummin_cummax   s
   z"TestNumericOnly.test_cummin_cummaxc           	      C   s  | d}|drttfnt}|dv rKddd| dtd| d	d
d| dg}tj||d t	||  W d    n1 sEw   Y  nJ|dv rddtd| d	td| dd| dg}tj||d t	||  W d    n1 sw   Y  nt	|| }t
|j| |dvrdddd
d| dtd| d	td| dd| dg}tj||d t	||dd W d    d S 1 sw   Y  d S t	||dd}t
|j| d S )Nr   cum)rI   rJ   rX   rY   rS   rV   |zCategorical is not orderedzCannot perform z with non-ordered Categoricalagg function failed [how->,dtype->object]*function is not implemented for this dtypez(dtype 'str' does not support operation ''match)rR   r4   r5   rU   z-category type does not support sum operationsz,dtype->string]rO   rP   zcategory type does not supportFr:   )r<   
startswithNotImplementedError	TypeErrorjoinreescapepytestraisesr>   r?   assert_index_equalr*   )	r/   r0   r3   rG   rC   rD   	exceptionmsgrF   r1   r1   r2   rB      s\   






"zTestNumericOnly._checkN)__name__
__module____qualname__rj   fixturer0   markparametrizerH   rN   rQ   rT   rW   rZ   rB   r1   r1   r1   r2   r	      s     

#




r	   r;   )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 rd}|dv rt jt|d& tjt|d ||	i |
 W d    n1 sw   Y  W d    n
1 sw   Y  d S d S t jt|d ||	i |
 W d    d S 1 sw   Y  d S ||vrd}t jt|d ||	i |
 W d    d S 1 sw   Y  d S |d u s|sL|dvrLd}|rt d}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 sEw   Y  d S tjt|d ||	i |
}W d    n	1 sfw   Y  |ru|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   r{   axisr
   r;   )rV   rS   difffillna
pct_changerankshift)rV   rS   r   r   r   r   rY   rX   rv   ru   r   zDataFrameGroupBy.z with axis=1 is deprecated1got an unexpected keyword argument 'numeric_only')rV   rS   ra   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 kernelzBoperation 'sub' not supported for dtype 'str' with dtype 'float64'pyarrow(r\   )r   )rj   skipapplymarkerrs   xfailr   nprandomdefault_rngstandard_normalr<   r>   r   rk   rf   r?   assert_produces_warningFutureWarningimportorskipr   ArrowNotImplementedErrorrg   dropTr,   r!   assert_equal)requestgroupby_funcr;   using_infer_stringrn   r0   groupsrD   r3   argskwargsno_argshas_axiswarn_msgmsgspaerrsrF   df_expectedrE   r1   r1   r2   test_axis1_numeric_only   sr   



$""

 $
r   zkernel, has_arg))allF)anyF)bfillF)corrT)rw   T)covT)rY   T)rX   T)rV   T)rS   T)r   F)ffillF)r   F)rO   T)ru   T)rv   T)rP   T)rJ   T)r4   T)r5   T)rI   T)nthF)nuniqueF)r   F)rU   T)quantileT)semT)rx   T)stdT)rR   T)varTTFkeysa1a2c                 C   sf  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sJ | drtnt}ddddddtd|  dg}| dkrd}n| dkrd}n| dkrd}tj||d ||i | W d    d S 1 sw   Y  d S |s|tjurtjtdd ||i | W d    d S 1 sw   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   a3r   r;   Tr   rc   )r   r   r   r   r   r   r   r   %DataFrameGroupBy.fillna is deprecatedra   r[   r\   znot allowed for this dtypez+cannot be performed against 'object' dtypeszmust be a string or a.* numberr   r_   r]   r^   r   4dtype 'object' does not support operation 'quantile'rv   z8'<' not supported between instances of 'type' and 'type'ru   z8'>' not supported between instances of 'type' and 'type'r   )r   r   )r   r#   r   r   
no_defaultr<   r>   r*   r   r?   r   rd   re   rf   rg   rh   ri   rj   rk   )kernelhas_argr;   r   r0   r   r   rD   r3   rF   warnrn   rm   r1   r1   r2   test_numeric_only3  sb   $*



""$r   z4ignore:Downcasting object dtype arrays:FutureWarningr   c              	   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 sw   Y  nS| tu r|d
krtnd }d}tj||d ||
 }W d    n1 sw   Y  tj||d |	|
 }W d    n1 sw   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   rw   )r   r   rY   rX   rV   rS   r   )rO   rP   r   r   r   r   rR   r   r   r   r4   r5   rI   rJ   rU   rx   r   r   z!is not supported for object dtyper   r   ra   z"SeriesGroupBy.fillna is deprecated)rO   rP   rJ   r4   r5   rI   rU   r   r   rx   r   rR   r   rY   rX   rV   rS   r   r;   Tr\   )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   r<   hasattrr>   r   r#   r   r?   r   rj   rk   rf   r,   assert_series_equalrg   bool)r   r   r   grouperserrD   r3   expected_serexpected_gbexpected_methodr   fails_on_numeric_object
obj_resultrn   r   r   rF   rE   has_numeric_onlyr1   r1   r2   "test_deprecate_numeric_only_series  sz   










$
$r   )rh   numpyr   rj   pandas._libsr   pandasr-   r   r   r   r   r   pandas._testing_testingr?   pandas.tests.groupbyr   r	   rs   rt   r   r   r   filterwarningsr   r    r!   r#   r   r1   r1   r1   r2   <module>   s,     G
X$
E