o
    õ­d8#  ã                   @   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ej dg d¢¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd „ ZdS )!é    N)Úgroupby)Úgroup_cumprodÚ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ÚarangeÚsqueezeÚreshapeÚstdÚnewaxisÚalgoÚallcloseÚrtolÚtmÚassert_numpy_array_equal©ÚselfÚprngÚoutÚcountsÚvaluesÚlabelsÚexpected_outÚexpected_counts© r6   úi/var/www/html/visualizacion-main/env/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d¡ | j¡ }t jddd}t  	|j
dd	d
 gg¡}|d }|  ||||¡ t  ||| j¡sOJ ‚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-   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d¡ | j¡ }t  	t  
d¡d¡ d	¡}t j| ddd¡d
ddd }|d }|  ||||¡ t  ||| j¡sVJ ‚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_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
   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"   r#   Úvstackr%   r&   ÚTr(   r+   Úassert_almost_equalr,   r-   r6   r6   r7   Ú"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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+   rC   )r.   r0   r1   r2   r3   r6   r6   r7   Útest_group_var_constantX   s   z)GroupVarTestMixin.test_group_var_constantN)Ú__name__Ú
__module__Ú__qualname__r8   r;   r?   rD   rF   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)£)rK   r   r   rE   gUUUUUUµ?gü©ñÒMb@?r@   )r   r   r   r:   r   r   r!   r   Úshaper    r(   r+   rC   )r.   r/   r0   r1   r2   r3   r6   r6   r7   Útest_group_var_large_inputsn   s   z/TestGroupVarFloat64.test_group_var_large_inputsN)rG   rH   rI   Ú__test__Ústaticmethodr   r(   r   Úfloat64r   r*   rM   r6   r6   r6   r7   rJ   g   s    rJ   c                   @   s"   e Zd ZdZeeƒZejZ	dZ
dS )ÚTestGroupVarFloat32Tg{®Gáz„?N)rG   rH   rI   rN   rO   r   r(   r   Úfloat32r   r*   r6   r6   r6   r7   rQ   }   s
    rQ   r   rR   rP   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   )é   é   rS   )r   é   r   r   c                 S   s6   t | ƒ ¡ rt tjd¡S | d |  ¡ |  ¡ | d gS )NrV   r   éÿÿÿÿ)r   Úallr   Úrepeatr   ÚmaxÚmin)Úgroupr6   r6   r7   Ú_ohlc‘   s   ztest_group_ohlc.<locals>._ohlcrT   rU   )rT   rT   é   )r   r:   r   Úrandnr    Úlenr   r   rY   r#   ÚdiffÚr_Ú
libgroupbyÚ
group_ohlcr+   rC   r,   r   )	r   ÚobjÚbinsr0   r1   r3   Úfuncr]   Úexpectedr6   r6   r7   Útest_group_ohlc…   s   &4
ri   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   rV   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   
$rr   Únp_dtype)r   Úuint64rR   rP   c                 C   s(   t  | ¡j}tt j}}t|||ƒ d S ©N)r   r   Útyper   Úcumsumrr   )rs   r   rl   rm   r6   r6   r7   Ú"test_cython_group_transform_cumsumº   s   rx   c                  C   s"   t j} tt j}}t||| ƒ d S ru   )r   rP   r   Úcumprodrr   )r   rl   rm   r6   r6   r7   Ú#test_cython_group_transform_cumprodÂ   s   rz   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   rV   rP   rT   é   r   r   TÚnsr   úm8[ns]r   )r   r:   r   r   rk   Úfillr   r+   r,   r   Útimedelta64Úview)rn   r3   rq   ro   Úactualrh   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   rP   ©rL   r   r   r   r   r   r|   rV   ÚNaTr}   T©rn   r   )r   r    r:   r   r€   r   r`   r   r   r+   r,   ©r   r1   ro   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   rP   rƒ   r   r   r   Ú	min_count)ÚmatchTr   )rn   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   rP   rƒ   r   r   r   r„   r}   Fr…   r   r   )r   r    r:   r   r€   r   r`   r   r   r+   r,   ÚdivideÚaddr†   r6   r6   r7   Ú:test_cython_group_mean_not_datetimelike_but_has_NaT_values  s    þ
ýú2ÿr   )Únumpyr   rŠ   Úpandas._libsr   rc   Úpandas._libs.groupbyr   r   r   r   Úpandas.core.dtypes.commonr   Úpandasr   Úpandas._testingÚ_testingr+   r	   rJ   rQ   ÚmarkÚparametrizeri   rr   rx   rz   r‚   r‡   r   r   r6   r6   r6   r7   Ú<module>   s(    U

&
