U
    `»{j%  ã                   @   s†   d Z ddlZddlZddlZddlm  mZ ddl	Z
ddl	mZmZ ddlmZ ddlmZmZmZ G dd„ dƒZG dd„ dƒZdS )	zP
Tests for statistical reductions of 2nd moment or higher: var, skew, kurt, ...
é    N)Ú	DataFrameÚSeries)ÚDatetimeArrayÚPeriodArrayÚTimedeltaArrayc                	   @   s~   e Zd Zej deeje	g¡dd„ ƒZ
ej deejeg¡ej dddddd	g¡d
d„ ƒƒZej deejeg¡dd„ ƒZdS )ÚTestDatetimeLikeStatReductionsÚboxc                 C   sÀ   |}t jdd|d�}| dddddd	d
ddddg¡}|j}||ƒ}| ¡ t jd|d�ks\t‚|jdd�t jd|d�kszt‚t j|d< ||ƒ}| ¡ t jd|d�ks¦t‚|jdd�t jks¼t‚d S )Nú
2001-01-01é   )ÚperiodsÚtzé   é   é   é
   é	   é   é   é   r   é   é   z
2001-01-06)r   F©Zskipnaéþÿÿÿz2001-01-06 07:12:00)ÚpdÚ
date_rangeÚtakeÚ_dataÚmeanÚ	TimestampÚAssertionErrorÚNaT)ÚselfZtz_naive_fixturer   r   ÚdtiZdtarrÚobj© r$   úk/var/www/html/bwave/python/venv/lib/python3.8/site-packages/pandas/tests/reductions/test_stat_reductions.pyÚtest_dt64_mean   s     
z-TestDatetimeLikeStatReductions.test_dt64_meanÚfreqÚSÚHÚDÚWÚBc                 C   sà   t jddd�}| dddddd	d
ddddg¡}|j |¡}||ƒ}tjtdd�� | ¡  W 5 Q R X tjtdd�� |jdd� W 5 Q R X t j	|d< tjtdd�� | ¡  W 5 Q R X tjtdd�� |jdd� W 5 Q R X d S )Nr	   r
   ©r   r   r   r   r   r   r   r   r   r   r   r   Z	ambiguous©ÚmatchTr   r   )
r   r   r   r   Z	to_periodÚpytestÚraisesÚ	TypeErrorr   r    )r!   r   r'   r"   Zparrr#   r$   r$   r%   Útest_period_mean-   s     
z/TestDatetimeLikeStatReductions.test_period_meanc                 C   s¼   t jddddddddddd	gd
d�}|j}||ƒ}| ¡ }t |¡ ¡ }||ksTt‚t j|d< |jdd�t jkstt‚|jdd�}||dd …  ¡ ks˜t‚| d¡|d d  d¡ks¸t‚d S )Nr   r   r   iùÿÿÿr   r   éÿÿÿÿr   r   r*   )ÚunitFr   TÚusg      &@r   )	r   ZTimedeltaIndexr   r   ÚnpÚarrayr   r    Úround)r!   r   ZtdiZtdarrr#   ÚresultÚexpectedZresult2r$   r$   r%   Útest_td64_meanD   s    $
z-TestDatetimeLikeStatReductions.test_td64_meanN)Ú__name__Ú
__module__Ú__qualname__r0   ÚmarkZparametrizer   r   ÚIndexr   r&   r   r3   r   r<   r$   r$   r$   r%   r      s   
r   c                   @   sr   e Zd Zd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d„ Zejdd„ ƒZejdd„ ƒZdS )ÚTestSeriesStatReductionsFc              
   C   s  t  dd¡��î tt|ƒ}tj|dd…< |dkrptt jddd�ƒ}d	|› d
�}tjt	|d�� ||ƒ W 5 Q R X t  
||ƒ¡s‚t‚t  ||dd�¡s˜t‚| ¡ }	t ||	ƒ||	jƒ¡ t ||ƒ||	jƒ¡ |tj }
|rìt ||
ƒ¡sìt‚tdddd dgƒ}||ƒ dg}| tddƒ¡ t|dd�}t t||ƒƒt||jƒƒ¡ |�r|tt jddd�ƒ}||ƒ}||ƒ}||k�s|t‚|dk�r°tjt	d d�� |ttdƒƒƒ W 5 Q R X d}tjt|d�� ||dd� W 5 Q R X dt |¡jk�rø||dd� W 5 Q R X d S )NZuse_bottleneckFr   é   )ÚmaxÚminr   ÚmedianÚstdz1/1/2001r   r-   zdoes not support reduction 'ú'r.   r   r   r   r   r   l        l   è   Zint64©Zdtypez1/1/2000)ÚsumrE   rD   Úabcz&No axis named 1 for object type Series)ZaxisÚnumeric_onlyT)rL   )r   Zoption_contextÚgetattrr   r7   ÚNaNr   r0   r1   r2   Znotnar   ÚisnaZdropnaÚtmÚassert_almost_equalÚvaluesÚnanÚisnanÚextendÚrangeÚfloatZbdate_rangeÚlistÚ
ValueErrorÚinspectÚgetfullargspecÚargs)r!   ÚnameZ	alternateZstring_series_Úcheck_objectsÚcheck_allnaÚfZdsÚmsgZnonaZallnaÚsÚitemsÚresÚexpr$   r$   r%   Ú_check_stat_op^   sF    


z'TestSeriesStatReductions._check_stat_opc                 C   s&   t  ¡  d¡}| jdtj|dd� d S )NÚseriesrJ   F)r_   )rP   ÚmakeStringSeriesÚrenamerf   r7   rJ   ©r!   Ústring_seriesr$   r$   r%   Útest_sumœ   s    z!TestSeriesStatReductions.test_sumc                 C   s"   t  ¡  d¡}|  dtj|¡ d S )Nrg   r   )rP   rh   ri   rf   r7   r   rj   r$   r$   r%   Ú	test_mean    s    z"TestSeriesStatReductions.test_meanc                 C   sR   t  ¡  d¡}|  dtj|¡ ttjdtd�t	dƒd�}t  
t |¡| ¡ ¡ d S )Nrg   rF   r   rI   ©Úindex)rP   rh   ri   rf   r7   rF   r   ÚonesÚintrV   rQ   )r!   rk   Zint_tsr$   r$   r%   Útest_median¤   s    z$TestSeriesStatReductions.test_medianc                 C   s"   t  ¡  d¡}|  dtj|¡ d S )Nrg   Úprod)rP   rh   ri   rf   r7   rs   rj   r$   r$   r%   Ú	test_prod¬   s    z"TestSeriesStatReductions.test_prodc                 C   s&   t  ¡  d¡}| jdtj|dd� d S )Nrg   rE   T©r^   )rP   rh   ri   rf   r7   rE   rj   r$   r$   r%   Útest_min°   s    z!TestSeriesStatReductions.test_minc                 C   s&   t  ¡  d¡}| jdtj|dd� d S )Nrg   rD   Tru   )rP   rh   ri   rf   r7   rD   rj   r$   r$   r%   Útest_max´   s    z!TestSeriesStatReductions.test_maxc                 C   sÜ   t  ¡  d¡}t  ¡  d¡}dd„ }|  d||¡ dd„ }|  d||¡ |jdd	�}tj|jdd	�}t  ||¡ |j	dd	�}tj	|jdd	�}t  ||¡ |j
d
g }|j	dd	�}t |¡s¾t‚|jdd	�}t |¡sØt‚d S )Nrg   Útsc                 S   s   t j| dd�S ©Nr   ©Zddof)r7   rG   ©Úxr$   r$   r%   Ú<lambda>¼   ó    z7TestSeriesStatReductions.test_var_std.<locals>.<lambda>rG   c                 S   s   t j| dd�S ry   )r7   Úvarr{   r$   r$   r%   r}   ¿   r~   r   r   rz   r   r   )rP   rh   ri   ÚmakeTimeSeriesrf   rG   r7   rR   rQ   r   Úilocr   rO   r   ©r!   rk   Zdatetime_seriesÚaltr:   r;   rb   r$   r$   r%   Útest_var_std¸   s"    z%TestSeriesStatReductions.test_var_stdc                 C   s”   t  ¡  d¡}t  ¡  d¡}dd„ }|  d||¡ |jdd�}tj|jdd�t 	t
|jƒ¡ }t  ||¡ |jdg }|jd	d�}t |¡s�t‚d S )
Nrg   rx   c                 S   s   t j| dd�t  t| ƒ¡ S ry   )r7   rG   ÚsqrtÚlenr{   r$   r$   r%   r}   Ö   r~   z3TestSeriesStatReductions.test_sem.<locals>.<lambda>Úsemr   rz   r   r   )rP   rh   ri   r€   rf   r‡   r7   rG   rR   r…   r†   rQ   r�   r   rO   r   r‚   r$   r$   r%   Útest_semÒ   s    ÿz!TestSeriesStatReductions.test_semc                    sÆ   ddl m‰  t ¡  d¡}‡ fdd„}|  d||¡ d}td|d ƒD ]z}tt 	|¡ƒ}t
t 	||f¡ƒ}||k rœt | ¡ ¡s„t‚t | ¡ ¡ ¡ sÀt‚qFd| ¡ ks¬t‚| ¡ dk ¡ sFt‚qFd S )	Nr   ©Úskewrg   c                    s   ˆ | dd�S ©NF)Zbiasr$   r{   r‰   r$   r%   r}   ê   r~   z4TestSeriesStatReductions.test_skew.<locals>.<lambda>rŠ   r   r   )Úscipy.statsrŠ   rP   rh   ri   rf   rV   r   r7   rp   r   rT   r   Úall)r!   rk   rƒ   Úmin_NÚirb   Údfr$   r‰   r%   Ú	test_skewä   s    z"TestSeriesStatReductions.test_skewc              
      s^  ddl m‰  t ¡  d¡}‡ fdd„}|  d||¡ tjdgdd	d
gddggddddddgddddddgddddddggd�}tt	j
 d¡|d�}t t¡�" t | ¡ |jdd�d ¡ W 5 Q R X d}td|d ƒD ]‚}tt	 |¡ƒ}tt	 ||f¡ƒ}||k �r2t	 | ¡ ¡�st‚t	 | ¡ ¡ ¡ �sXt‚qÖd| ¡ k�sDt‚| ¡ dk ¡ sÖt‚qÖd S )Nr   ©Úkurtosisrg   c                    s   ˆ | dd�S r‹   r$   r{   r’   r$   r%   r}      r~   z4TestSeriesStatReductions.test_kurt.<locals>.<lambda>ÚkurtÚbarÚoneÚtwoÚthreer   r   )ZlevelsÚcodesr   rn   )Úlevelr   )rŒ   r“   rP   rh   ri   rf   r   Z
MultiIndexr   r7   ÚrandomZrandnZassert_produces_warningÚFutureWarningrQ   r”   rV   rp   r   rT   r   r�   )r!   rk   rƒ   ro   rb   rŽ   r�   r�   r$   r’   r%   Ú	test_kurtú   s(    ,þ&
z"TestSeriesStatReductions.test_kurtN)FF)r=   r>   r?   rf   rl   rm   rr   rt   rv   rw   r„   rˆ   ÚtdZskip_if_no_scipyr‘   r�   r$   r$   r$   r%   rB   Y   s      ÿ
>
rB   )Ú__doc__rZ   Únumpyr7   r0   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsrž   Zpandasr   r   r   Zpandas._testingZ_testingrP   Zpandas.core.arraysr   r   r   r   rB   r$   r$   r$   r%   Ú<module>   s   A