o
    Û­jÙ(  ã                	   @   sª  d dl Zd dlZd dlmZ d dlmZmZm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZ G dd„ dƒZG dd	„ d	eƒZG d
d„ deƒZej dddg¡dd„ ƒZdd„ Zej dg d¢¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Z ej d#ej!gej!gej!ggej!gej!ggfej!gej!gej! ggej!gej"ggfej!gej! gej!ggej!gej"ggfej!gej! gej! ggej!gej! ggfg¡d$d%„ ƒZ#dS )&é    N)Úgroupby)Úgroup_cumprodÚgroup_cumsumÚ
group_meanÚ	group_sumÚ	group_var)Úensure_platform_int)Úisnac                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚGroupVarTestMixinc                 C   sÌ   t j d¡}t jt  d¡  | j¡}t jddd�}d| d¡ | j¡ }t  t  	d¡d¡ d	¡}t  
|¡jd
dd�jddd�d d d …t jf }|d }|  ||||¡ t  ||| j¡s^J ‚t ||¡ d S )Né   ©é   é   r   Úint64©Údtypeé
   )é   r   )é   Úintp)r   r   ÚF©Úorderr   )ÚaxisÚddofr   )ÚnpÚrandomÚdefault_rngÚnanÚonesÚastyper   ÚzerosÚtileÚarangeÚsqueezeÚreshapeÚstdÚnewaxisÚalgoÚallcloseÚrtolÚtmÚassert_numpy_array_equal©ÚselfÚprngÚoutÚcountsÚvaluesÚlabelsÚexpected_outÚexpected_counts© r6   úa/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pandas/tests/groupby/test_libgroupby.pyÚtest_group_var_generic_1d   s    þz+GroupVarTestMixin.test_group_var_generic_1dc                 C   s¬   t j d¡}t jt  d¡  | j¡}t jddd�}d| d¡ | j¡ }t jdd	d�}t  |j	dd
�d gg¡}|d }|  
||||¡ t  ||| j¡sNJ ‚t ||¡ d S )Nr   ©r   r   r   r   r   r   r   r   r   )r   )r   r   r   r   r   r    r   r!   Úarrayr&   r(   r)   r*   r+   r,   r-   r6   r6   r7   Ú%test_group_var_generic_1d_flat_labels%   s   z7GroupVarTestMixin.test_group_var_generic_1d_flat_labelsc                 C   sº   t j d¡}t jt  d¡  | j¡}t jddd�}d| d¡ | j¡ }t  t  	d¡d¡ d	¡}t j
| ddd¡d
dd�d }|d }|  ||||¡ t  ||| j¡sUJ ‚t ||¡ d S )Nr   ©r   r   r   r   r   r   ©r   r   ©r   r   r   r   ©r   r   )r   r   r   r   r   r    r   r!   r"   r#   r&   r%   r(   r)   r*   r+   r,   r-   r6   r6   r7   Ú$test_group_var_generic_2d_all_finite5   s   z6GroupVarTestMixin.test_group_var_generic_2d_all_finitec                 C   sô   t j d¡}t jt  d¡  | j¡}t jddd�}d| d¡ | j¡ }t j|d d …df< t  t  	d¡d	¡ d
¡}t  
|d d …df jdddd�jddd�d t jt  d¡ g¡j | j¡}|d }|  ||||¡ tj||dd� t ||¡ d S )Nr   r<   r   r   r   r   r=   r   r>   r   r   r   r   r?   g�íµ ÷Æ >©r*   )r   r   r   r   r   r    r   r!   r"   r#   Úvstackr%   r&   ÚTr(   r+   Úassert_almost_equalr,   r-   r6   r6   r7   Ú"test_group_var_generic_2d_some_nanD   s"   (þÿ
ûz4GroupVarTestMixin.test_group_var_generic_2d_some_nanc                 C   sŒ   t jt jgg| jd�}t jdgdd�}dt jd| jd� }t jddd�}|  ||||¡ |d dks4J ‚|d dks<J ‚t |d d	¡ d S )
Nr   r   r   gUUUÕª¦ê?)r   r   r   r   ©r   r   g        )	r   r:   r   r   r   r!   r(   r+   rD   )r.   r0   r1   r2   r3   r6   r6   r7   Útest_group_var_constantY   s   z)GroupVarTestMixin.test_group_var_constantN)Ú__name__Ú
__module__Ú__qualname__r8   r;   r@   rE   rG   r6   r6   r6   r7   r
      s    r
   c                   @   s*   e Zd ZdZeeƒZejZ	dZ
dd„ ZdS )ÚTestGroupVarFloat64Tgñhãˆµøä>c                 C   s”   t j d¡}t jt jgg| jd�}t jdgdd�}| d¡d  | j¡}d|_t jddd�}|  	||||¡ |d dks>J ‚t
j|d	 d
dd� d S )Nr   r   r   r   é@B l    J)£)rL   r   r   rF   gUUUUUUµ?gü©ñÒMb@?rA   )r   r   r   r:   r   r   r    Úshaper!   r(   r+   rD   )r.   r/   r0   r1   r2   r3   r6   r6   r7   Útest_group_var_large_inputso   s   z/TestGroupVarFloat64.test_group_var_large_inputsN)rH   rI   rJ   Ú__test__Ústaticmethodr   r(   r   Úfloat64r   r*   rN   r6   r6   r6   r7   rK   h   s    rK   c                   @   s"   e Zd ZdZeeƒZejZ	dZ
dS )ÚTestGroupVarFloat32Tg{®Gáz„?N)rH   rI   rJ   rO   rP   r   r(   r   Úfloat32r   r*   r6   r6   r6   r7   rR   ~   s
    rR   r   rS   rQ   c           	   	   C   s6  t jt j d¡ d¡| d�}t  g d¢¡}t  d| ¡}t jt|ƒt jd�}tt  	t  
d¡t  t jd|f ¡¡ƒ}tj}||||d d …d f |ƒ dd	„ }t  ||d d
… ƒ||d
d… ƒ||dd … ƒg¡}t ||¡ t |t jg d¢t jd�¡ t j|d d
…< ||||d d …d f |ƒ t j|d< t ||¡ d S )Nr   é   r   )é   é   rT   )r   é   r   r   c                 S   s6   t | ƒ ¡ rt tjd¡S | d |  ¡ |  ¡ | d gS )NrW   r   éÿÿÿÿ)r	   Úallr   Úrepeatr   ÚmaxÚmin)Úgroupr6   r6   r7   Ú_ohlc’   s   ztest_group_ohlc.<locals>._ohlcrU   rV   )rU   rU   é   )r   r:   r   r   Ústandard_normalr!   Úlenr   r   rZ   r#   ÚdiffÚr_Ú
libgroupbyÚ
group_ohlcr+   rD   r,   r   )	r   ÚobjÚbinsr0   r1   r3   Úfuncr^   Úexpectedr6   r6   r7   Útest_group_ohlc†   s   &4
rj   c                 C   sx   d}t jdgdgdgdgg|d�}t  |¡}t jg d¢t jd�}d}| |||||ƒ tj||ƒ|dd…d	f dd
� dS )a  
    Check a group transform that executes a cumulative function.

    Parameters
    ----------
    pd_op : callable
        The pandas cumulative function.
    np_op : callable
        The analogous one in NumPy.
    dtype : type
        The specified dtype of the data.
    Fr   r   r   rW   r   )r   r   r   r   Nr   )Úcheck_dtype)r   r:   Ú
zeros_liker   r+   r,   )Úpd_opÚnp_opr   Úis_datetimelikeÚdataÚanswerr3   Úngroupsr6   r6   r7   Ú(_check_cython_group_transform_cumulative¢   s   
$rs   Únp_dtype)r   Úuint64rS   rQ   c                 C   s(   t  | ¡j}tt j}}t|||ƒ d S ©N)r   r   Útyper   Úcumsumrs   )rt   r   rm   rn   r6   r6   r7   Ú"test_cython_group_transform_cumsum»   s   ry   c                  C   s"   t j} tt j}}t||| ƒ d S rv   )r   rQ   r   Úcumprodrs   )r   rm   rn   r6   r6   r7   Ú#test_cython_group_transform_cumprodÃ   s   r{   c               
   C   sž  d} t jg d¢t jd�}d}t jdgdgdgt jgdggdd�}t  |¡}| t j¡ t||||| ƒ t jddd	t jd
gdd�}t |d d …df |¡ t  |¡}| t j¡ t	||||| ƒ t jddd	t jdgdd�}t |d d …df |¡ d} t jt  
dd¡gd dd�d d …d f }t j|dd�}t	|| d¡||| ƒ t  t  
dd¡t  
dd¡t  
dd¡t  
dd¡t  
dd¡g¡}t |d d …df  d¡|¡ d S )NF)r   r   r   r   r   r   r   r   r   rW   rQ   rU   é   r   r   TÚnsr   úm8[ns]r   )r   r:   r   r   rl   Úfillr   r+   r,   r   Útimedelta64Úview)ro   r3   rr   rp   Úactualri   r6   r6   r7   Ú!test_cython_group_transform_algosÊ   s6   $

(




ûÿ"	rƒ   c                  C   s®   t jddd�} t jdgdd�}t jt  dd¡t  d	d¡t  d
¡gdd�d d …d f  d¡ d¡}t jt|ƒt jd�}t| |||dd� t	 
| d d …df t jdgdd�¡ d S )Nr9   rQ   ©rM   r   r   r   r   r   r}   rW   ÚNaTr~   T©ro   r   )r   r!   r:   r€   r�   r    ra   r   r   r+   r,   ©r‚   r1   rp   r3   r6   r6   r7   Ú#test_cython_group_mean_datetimelikeð   s   þ
ýú(rˆ   c               	   C   sŽ   t jddd�} t jddd�}t jddd�d d …d f }t jdt jd�}tjtdd�� t| |||d	d
d� W d   ƒ d S 1 s@w   Y  d S )Nr9   rQ   r„   r   r   r   Ú	min_count)ÚmatchTr   )ro   r‰   )r   r!   r   ÚpytestÚraisesÚAssertionErrorr   r‡   r6   r6   r7   Ú&test_cython_group_mean_wrong_min_count  s   "ÿrŽ   c                  C   s¸   t jddd�} t jdgdd�}t jt  d¡t  d¡gdd�d d …d f  d¡ d¡}t jt|ƒt jd�}t| |||d	d
� t	 
| d d …df t jt  t  |d |d ¡d¡dd�¡ d S )Nr9   rQ   r„   r   r   r   r…   r~   Fr†   r   r   )r   r!   r:   r€   r�   r    ra   r   r   r+   r,   ÚdivideÚaddr‡   r6   r6   r7   Ú:test_cython_group_mean_not_datetimelike_but_has_NaT_values  s    þ
ýú2ÿr‘   c                  C   s¾   t jt jt jgt jt jggdd�} t jddgdd�}t jt jdgddgddgddgdd	gd
t jggdd�}t jg d¢t jd�}t| |||dd� t jt jdgdt jggdd�}t | |¡ d S )NrQ   r   r   r   g      ð?g       @g      @g      @g      @r   )r   r   r   r   r   r   Fr†   r   )r   r:   r   Úinfr   r   r+   r,   )r‚   r1   rp   r3   ri   r6   r6   r7   Ú.test_cython_group_mean_Inf_at_begining_and_end   s   "*þþr“   zvalues, outc                 C   s€   t jt jgt jggdd�}t jddgdd�}t j| dd�}t jg d¢t jd�}t||||d dd� t j|dd�}t ||¡ d S )NrQ   r   r   r   )r   r   r   Fr†   )r   r:   r   r   r   r+   r,   )r2   r0   r‚   r1   rp   r3   ri   r6   r6   r7   Ú-test_cython_group_sum_Inf_at_begining_and_end4  s   þr”   )$Únumpyr   r‹   Úpandas._libsr   rd   Úpandas._libs.groupbyr   r   r   r   r   Úpandas.core.dtypes.commonr   Úpandasr	   Úpandas._testingÚ_testingr+   r
   rK   rR   ÚmarkÚparametrizerj   rs   ry   r{   rƒ   rˆ   rŽ   r‘   r“   r’   r   r”   r6   r6   r6   r7   Ú<module>   s<    U

&
$&&*üþ	