o
    g%                     @   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                   @   sf   e Zd Zejdeeje	gdd Z
ejdeeje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}|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skipnaz2001-01-06 07:12:00)pd
date_rangetake_datamean	TimestampNaT)selftz_naive_fixturer   r   dtidtarrobj r'   j/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pandas/tests/reductions/test_stat_reductions.pytest_dt64_mean   s   
z-TestDatetimeLikeStatReductions.test_dt64_meanc                 C   s   t jddd}|g d}|jd}||}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 sw   Y  d S )Nr	   r
   r   r   H	ambiguousmatchTr   r   )
r   r   r   r   	to_periodpytestraises	TypeErrorr   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   ir   r   r   r   r   r   D)unitr   Fr   Tr   usg      &@r   )r   TimedeltaIndexr   r   nparrayr!   round)r"   r   tditdarrr&   resultexpectedresult2r'   r'   r(   test_td64_meanE   s   
$z-TestDatetimeLikeStatReductions.test_td64_meanN)__name__
__module____qualname__r0   markparametrizer   r   Indexr   r)   r   r4   r   rB   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 }
|rt||
sJ tg d}|| dg}|tdd t|dd}tt||t||j |rtt jddd}||}||}||ksJ |dvrtjt	d d |ttd W d    n1 sw   Y  d}tjt|d ||dd W d    n	1 sw   Y  dt|jv r5tjt|d ||dd W d    n1 s(w   Y  W d    d S W d    d S W d    d S 1 sIw   Y  d S )Nuse_bottleneckFr      )maxminr   medianstdz1/1/2001r   r*   z.'DatetimeArray' does not implement reduction ''r-   r   )r   r   r   Nr   r   l        l      int64dtypez1/1/2000)sumrM   rL   abcz&No axis named 1 for object type Seriesr   )axisnumeric_onlyT)rW   )r   option_contextgetattrr   r:   NaNr   r0   r1   r2   notnaisnadropnatmassert_almost_equalvaluesnanisnanextendrangefloatbdate_rangelist
ValueErrorinspectgetfullargspecargsNotImplementedError)r"   name	alternatestring_series_check_objectscheck_allnafdsmsgnonaallnasitemsresexpr'   r'   r(   _check_stat_op_   sZ   


 78$z'TestSeriesStatReductions._check_stat_opc                 C   &   t  d}| jdtj|dd d S )NseriesrT   F)rq   )r^   makeStringSeriesrenamer{   r:   rT   r"   string_seriesr'   r'   r(   test_sum      z!TestSeriesStatReductions.test_sumc                 C   "   t  d}| dtj| d S )Nr}   r   )r^   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}   rN   r   rR   index)r^   r~   r   r{   r:   rN   r   onesintrd   r_   )r"   r   int_tsr'   r'   r(   test_median   s   z$TestSeriesStatReductions.test_medianc                 C   r   )Nr}   prod)r^   r~   r   r{   r:   r   r   r'   r'   r(   	test_prod   r   z"TestSeriesStatReductions.test_prodc                 C   r|   )Nr}   rM   Trp   )r^   r~   r   r{   r:   rM   r   r'   r'   r(   test_min   r   z!TestSeriesStatReductions.test_minc                 C   r|   )Nr}   rL   Tr   )r^   r~   r   r{   r:   rL   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:   rO   xr'   r'   r(   <lambda>       z7TestSeriesStatReductions.test_var_std.<locals>.<lambda>rO   c                 S   r   r   )r:   varr   r'   r'   r(   r      r   r   r   r   r   r   )r^   r~   r   makeTimeSeriesr{   rO   r:   r`   r_   r   ilocr   r\   r"   r   datetime_seriesaltr?   r@   rw   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:   rO   sqrtlenr   r'   r'   r(   r      s    z3TestSeriesStatReductions.test_sem.<locals>.<lambda>semr   r   r   r   )r^   r~   r   r   r{   r   r:   rO   r`   r   r   r_   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   r^   r~   r   r{   rd   r   r:   r   r   rb   all)r"   r   r   min_Nirw   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 rt	| sJ t	|  sJ qhd| ksJ | dk sJ 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   r^   r~   r   r{   r   
MultiIndexr   r:   randomrandnassert_produces_warningFutureWarningr_   r   rd   r   r   rb   r   )r"   r   r   r   rw   r   r   r   r'   r   r(   	test_kurt   s,   z"TestSeriesStatReductions.test_kurtN)FF)rC   rD   rE   r{   r   r   r   r   r   r   r   r   tdskip_if_no_scipyr   r   r'   r'   r'   r(   rI   Z   s    
?
rI   )__doc__ri   numpyr:   r0   pandas.util._test_decoratorsutil_test_decoratorsr   pandasr   r   r   pandas._testing_testingr^   pandas.core.arraysr   r   r   r   rI   r'   r'   r'   r(   <module>   s    B