o
    ¹i%  ã                   @   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                   @   sx   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g d¢¡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}| g d¢¡}|j}||ƒ}| ¡ t jd|dks%J ‚|jddt jd|dks4J ‚t j|d	< ||ƒ}| ¡ t jd
|dksJJ ‚|jddt ju sUJ ‚d S )Nú
2001-01-01é   )ÚperiodsÚtz©é   é   é   é
   é	   é   é   é   r   é   é   z
2001-01-06)r   F©Úskipnaéþÿÿÿz2001-01-06 07:12:00)ÚpdÚ
date_rangeÚtakeÚ_dataÚmeanÚ	TimestampÚNaT)ÚselfÚtz_naive_fixturer   r   ÚdtiÚdtarrÚobj© r'   úg/var/www/edux/Edux_v2/venv/lib/python3.10/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}| g d¢¡}|j |¡}||ƒ}tjtdd | ¡  W d   ƒ n1 s.w   Y  tjtdd |jdd W d   ƒ n1 sKw   Y  t j	|d	< tjtdd | ¡  W d   ƒ n1 skw   Y  tjtdd |jdd W d   ƒ d S 1 s‰w   Y  d S )
Nr	   r
   ©r   r   Ú	ambiguous©ÚmatchTr   r   )
r   r   r   r   Ú	to_periodÚpytestÚraisesÚ	TypeErrorr   r!   )r"   r   r*   r$   Úparrr&   r'   r'   r(   Útest_period_mean-   s"   
ÿÿ

ÿ"ÿz/TestDatetimeLikeStatReductions.test_period_meanc                 C   sª   t jg d¢dd}|j}||ƒ}| ¡ }t |¡ ¡ }||ks!J ‚t j|d< |jddt ju s1J ‚|jdd}||dd …  ¡ ksCJ ‚| d	¡|d
 d  d	¡ksSJ ‚d S )N)r   r   r   iùÿÿÿr   r   éÿÿÿÿr   r   r   r   r-   )Úunitr   Fr   Tr   Úusg      &@r   )r   ÚTimedeltaIndexr   r   ÚnpÚarrayr!   Úround)r"   r   ÚtdiÚtdarrr&   ÚresultÚexpectedÚresult2r'   r'   r(   Útest_td64_meanD   s   
$z-TestDatetimeLikeStatReductions.test_td64_meanN)Ú__name__Ú
__module__Ú__qualname__r5   ÚmarkÚparametrizer   r   ÚIndexr   r)   r   r9   r   rF   r'   r'   r'   r(   r      s    
r   c                   @   st   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vrBtt jdddƒ}d	|› d
}tjt	|d ||ƒ W d   ƒ n1 s=w   Y  t  
||ƒ¡sKJ ‚t  ||dd¡sVJ ‚| ¡ }	t ||	ƒ||	jƒ¡ t ||ƒ||	jƒ¡ |tj }
|r€t ||
ƒ¡s€J ‚tg d¢ƒ}||ƒ dg}| tddƒ¡ t|dd}t t||ƒƒt||jƒƒ¡ |rÃtt jdddƒ}||ƒ}||ƒ}||ksÃJ ‚|dvrætjt	d d |ttdƒƒƒ W d   ƒ n1 sáw   Y  d}tjt|d ||dd W d   ƒ n	1 sw   Y  dt |¡jv r||dd W d   ƒ d S W d   ƒ d S 1 s)w   Y  d S )NÚuse_bottleneckFr   é   )ÚmaxÚminr   ÚmedianÚstdz1/1/2001r   r0   zdoes not support reduction 'ú'r2   r   )r   r   r   Nr   r   l        l   è   Úint64©Údtypez1/1/2000)ÚsumrQ   rP   Úabcz&No axis named 1 for object type Seriesr   )ÚaxisÚnumeric_onlyT)r[   )r   Úoption_contextÚgetattrr   r>   ÚNaNr   r5   r6   r7   ÚnotnaÚisnaÚdropnaÚtmÚassert_almost_equalÚvaluesÚnanÚisnanÚextendÚrangeÚfloatÚbdate_rangeÚlistÚ
ValueErrorÚinspectÚgetfullargspecÚargs)r"   ÚnameÚ	alternateÚstring_series_Úcheck_objectsÚcheck_allnaÚfÚdsÚmsgÚnonaÚallnaÚsÚitemsÚresÚexpr'   r'   r(   Ú_check_stat_op^   sR   

ÿ
ÿÿÈ6$Êz'TestSeriesStatReductions._check_stat_opc                 C   ó&   t  ¡  d¡}| jdtj|dd d S )NÚseriesrX   F)rt   )rb   ÚmakeStringSeriesÚrenamer~   r>   rX   ©r"   Ústring_seriesr'   r'   r(   Útest_sumœ   ó   z!TestSeriesStatReductions.test_sumc                 C   ó"   t  ¡  d¡}|  dtj|¡ d S )Nr€   r   )rb   r   r‚   r~   r>   r   rƒ   r'   r'   r(   Ú	test_mean    ó   z"TestSeriesStatReductions.test_meanc                 C   sR   t  ¡  d¡}|  dtj|¡ ttjdtdt	dƒd}t  
t |¡| ¡ ¡ d S )Nr€   rR   r   rV   ©Úindex)rb   r   r‚   r~   r>   rR   r   ÚonesÚintrh   rc   )r"   r„   Úint_tsr'   r'   r(   Útest_median¤   s   z$TestSeriesStatReductions.test_medianc                 C   r‡   )Nr€   Úprod)rb   r   r‚   r~   r>   r   rƒ   r'   r'   r(   Ú	test_prod¬   r‰   z"TestSeriesStatReductions.test_prodc                 C   r   )Nr€   rQ   T©rs   )rb   r   r‚   r~   r>   rQ   rƒ   r'   r'   r(   Útest_min°   r†   z!TestSeriesStatReductions.test_minc                 C   r   )Nr€   rP   Tr’   )rb   r   r‚   r~   r>   rP   rƒ   r'   r'   r(   Útest_max´   r†   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_J ‚|jdd	}t |¡slJ ‚d S )Nr€   Útsc                 S   ó   t j| ddS ©Nr   ©Úddof)r>   rS   ©Úxr'   r'   r(   Ú<lambda>¼   ó    z7TestSeriesStatReductions.test_var_std.<locals>.<lambda>rS   c                 S   r–   r—   )r>   Úvarrš   r'   r'   r(   rœ   ¿   r   rž   r   r˜   r   r   )rb   r   r‚   ÚmakeTimeSeriesr~   rS   r>   rd   rc   rž   Úilocr   r`   ©r"   r„   Údatetime_seriesÚaltrC   rD   rz   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 |¡sHJ ‚d S )
Nr€   r•   c                 S   s   t j| ddt  t| ƒ¡ S r—   )r>   rS   ÚsqrtÚlenrš   r'   r'   r(   rœ   Ö   s    z3TestSeriesStatReductions.test_sem.<locals>.<lambda>Úsemr   r˜   r   r   )rb   r   r‚   rŸ   r~   r§   r>   rS   rd   r¥   r¦   rc   r    r   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 ]=}tt 	|¡ƒ}t
t 	||f¡ƒ}||k rNt | ¡ ¡sBJ ‚t | ¡ ¡ ¡ sMJ ‚q#d| ¡ ksVJ ‚| ¡ dk ¡ s`J ‚q#d S )	Nr   ©Úskewr€   c                    ó   ˆ | ddS ©NF)Úbiasr'   rš   r©   r'   r(   rœ   ê   ó    z4TestSeriesStatReductions.test_skew.<locals>.<lambda>rª   r   r   )Úscipy.statsrª   rb   r   r‚   r~   rh   r   r>   rŒ   r   rf   Úall)r"   r„   r£   Úmin_NÚirz   Údfr'   r©   r(   Ú	test_skewä   s   øz"TestSeriesStatReductions.test_skewc                    sP  ddl m‰  t ¡  d¡}‡ fdd„}|  d||¡ tjdgg d¢dd	ggg d
¢g d¢g d¢gd}tt	j
 d¡|d}t t¡ t | ¡ |jddd ¡ W d   ƒ n1 sZw   Y  d}td	|d	 ƒD ]=}tt	 |¡ƒ}tt	 ||f¡ƒ}||k r“t	 | ¡ ¡s‡J ‚t	 | ¡ ¡ ¡ s’J ‚qhd| ¡ ks›J ‚| ¡ dk ¡ s¥J ‚qhd S )Nr   ©Úkurtosisr€   c                    r«   r¬   r'   rš   rµ   r'   r(   rœ      r®   z4TestSeriesStatReductions.test_kurt.<locals>.<lambda>ÚkurtÚbar)ÚoneÚtwoÚthreer   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )ÚlevelsÚcodesr   rŠ   )Úlevelr   )r¯   r¶   rb   r   r‚   r~   r   Ú
MultiIndexr   r>   ÚrandomÚrandnÚassert_produces_warningÚFutureWarningrc   r·   rh   rŒ   r   rf   r°   )r"   r„   r£   r‹   rz   r±   r²   r³   r'   rµ   r(   Ú	test_kurtú   s,   þÿøz"TestSeriesStatReductions.test_kurtN)FF)rG   rH   rI   r~   r…   rˆ   r   r‘   r“   r”   r¤   r¨   ÚtdÚskip_if_no_scipyr´   rÄ   r'   r'   r'   r(   rM   Y   s    
ÿ>
rM   )Ú__doc__rm   Únumpyr>   r5   Úpandas.util._test_decoratorsÚutilÚ_test_decoratorsrÅ   Úpandasr   r   r   Úpandas._testingÚ_testingrb   Úpandas.core.arraysr   r   r   r   rM   r'   r'   r'   r(   Ú<module>   s    A