a
    oÝEb%#  ã                   @   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
 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dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )é    N)Úgroupby)Úgroup_cumprod_float64Úgroup_cumsumÚ
group_meanÚ	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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©Úorder)ÚaxisÚddofé   r   )ÚnpÚrandomÚRandomStateÚnanÚonesÚastyper   ÚzerosÚrandÚtileÚarangeZsqueezeÚreshapeÚstdZnewaxisÚalgoÚallcloseÚrtolÚtmÚassert_numpy_array_equal©ÚselfÚprngÚoutÚcountsÚvaluesÚlabelsZexpected_outZexpected_counts© r2   úd/home/ja/django-apps/lartica_env/lib/python3.9/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d¡ | j¡ }t jddd�}t  	|j
dd	�d
 gg¡}|d }|  ||||¡ t  ||| j¡sžJ ‚t ||¡ d S )Nr
   ©r   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+   r2   r2   r3   Ú%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d¡ | j¡ }t  	t  
d¡d¡ d	¡}t j| ddd¡d
dd�d }|d }|  ||||¡ t  ||| j¡s¬J ‚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+   r2   r2   r3   Ú$test_group_var_generic_2d_all_finite4   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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
   r8   r   r   r   r   r   r   r9   r   r   r   r   r:   g�íµ ÷Æ >©r(   )r   r   r   r   r   r   r   r    r!   r"   r#   Zvstackr$   r%   ÚTr&   r)   Úassert_almost_equalr*   r+   r2   r2   r3   Ú"test_group_var_generic_2d_some_nanC   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shJ ‚|d dksxJ ‚t |d d	¡ d S )
Nr   r   r   gUUUÕª¦ê?)r   r   r   r   ©r   r   g        )	r   r6   r   r   r   r    r&   r)   r>   )r,   r.   r/   r0   r1   r2   r2   r3   Útest_group_var_constantX   s    z)GroupVarTestMixin.test_group_var_constantN)Ú__name__Ú
__module__Ú__qualname__r4   r7   r;   r?   rA   r2   r2   r2   r3   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)£)rF   r   r   r@   gUUUUUUµ?gü©ñÒMb@?r<   )r   r   r   r6   r   r   r!   r   Úshaper    r&   r)   r>   )r,   r-   r.   r/   r0   r1   r2   r2   r3   Útest_group_var_large_inputsn   s    z/TestGroupVarFloat64.test_group_var_large_inputsN)rB   rC   rD   Ú__test__Ústaticmethodr   r&   r   Úfloat64r   r(   rH   r2   r2   r2   r3   rE   g   s
   rE   c                   @   s"   e Zd ZdZeeƒZejZ	dZ
dS )ÚTestGroupVarFloat32Tg{®Gáz„?N)rB   rC   rD   rI   rJ   r   r&   r   Úfloat32r   r(   r2   r2   r2   r3   rL   }   s   rL   r   rM   rK   c           	   	   C   s0  t jt j 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 )Né   r   )é   é   rN   )r   é   r   r   c                 S   s6   t | ƒ ¡ rt tjd¡S | d |  ¡ |  ¡ | d gS )NrQ   r   éÿÿÿÿ)r   Úallr   Úrepeatr   ÚmaxÚmin)Úgroupr2   r2   r3   Ú_ohlc‘   s    ztest_group_ohlc.<locals>._ohlcrO   rP   )rO   rO   é   )r   r6   r   Zrandnr    Úlenr   r   rT   r#   ÚdiffZr_Ú
libgroupbyZ
group_ohlcr)   r>   r*   r   )	r   ÚobjZbinsr.   r/   r1   ÚfuncrX   Úexpectedr2   r2   r3   Útest_group_ohlc…   s    &4
r`   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   rQ   r   )r   r   r   r   Nr   )Zcheck_dtype)r   r6   Ú
zeros_liker   r)   r*   )Úpd_opÚnp_opr   Úis_datetimelikeÚdataZanswerr1   Úngroupsr2   r2   r3   Ú(_check_cython_group_transform_cumulative¡   s    
rg   c                 C   s(   t  | ¡j}tt j }}t|||ƒ d S ©N)r   r   Útyper   Zcumsumrg   )Zany_real_numpy_dtyper   rb   rc   r2   r2   r3   Ú"test_cython_group_transform_cumsumº   s    rj   c                  C   s"   t j} tt j }}t||| ƒ d S rh   )r   rK   r   Z
cumproductrg   )r   rb   rc   r2   r2   r3   Ú#test_cython_group_transform_cumprodÁ   s    rk   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   rQ   rK   rO   é   r   r   TÚnsr   úm8[ns]r   )r   r6   r   r   ra   Úfillr   r)   r*   r   Útimedelta64Úview)rd   r1   rf   re   Úactualr_   r2   r2   r3   Ú!test_cython_group_transform_algosÈ   s6    $

(




ûÿ	rs   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 )Nr5   rK   ©rG   r   r   r   r   r   rm   rQ   ÚNaTrn   T©rd   r   )r   r    r6   rp   rq   r   rZ   r   r   r)   r*   ©rr   r/   re   r1   r2   r2   r3   Ú#test_cython_group_mean_datetimelikeî   s     þ
ýüûÿrx   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   ƒ n1 s~0    Y  d S )Nr5   rK   rt   r   r   r   Ú	min_count)ÚmatchTr   )rd   ry   )r   r    r   ÚpytestZraisesÚAssertionErrorr   rw   r2   r2   r3   Ú&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 )Nr5   rK   rt   r   r   r   ru   rn   Frv   r   r   )r   r    r6   rp   rq   r   rZ   r   r   r)   r*   ÚdivideÚaddrw   r2   r2   r3   Ú:test_cython_group_mean_not_datetimelike_but_has_NaT_values
  s$    þ
ýüûÿ2ÿr€   )Únumpyr   r{   Zpandas._libsr   r\   Zpandas._libs.groupbyr   r   r   r   Zpandas.core.dtypes.commonr   Zpandasr   Zpandas._testingZ_testingr)   r	   rE   rL   ÚmarkZparametrizer`   rg   rj   rk   rs   rx   r}   r€   r2   r2   r2   r3   Ú<module>   s$   U
&
