U
    f/e%                     @   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}|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st|jddt jkstd S )N
2001-01-01   )periodstz         
   	            r         z
2001-01-06)r   FZskipnaz2001-01-06 07:12:00)pd
date_rangetake_datameanZ	TimestampAssertionErrorNaT)selfZtz_naive_fixturer   r   dtiZdtarrobj r#   P/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/reductions/test_stat_reductions.pytest_dt64_mean   s     
z-TestDatetimeLikeStatReductions.test_dt64_meanc                 C   s   t jddd}|dddddd	d
ddddg}|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 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   HZ	ambiguousmatchTr   r   )
r   r   r   r   Z	to_periodpytestraises	TypeErrorr   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st|d|d d dkstd S )Nr   r   r   ir   r   r   r   D)unitFr   Tusg      &@r   )	r   ZTimedeltaIndexr   r   nparrayr   r   round)r    r   ZtdiZtdarrr"   resultexpectedZresult2r#   r#   r$   test_td64_meanE   s    $
z-TestDatetimeLikeStatReductions.test_td64_meanN)__name__
__module____qualname__r*   markZparametrizer   r   ZIndexr   r%   r   r-   r   r7   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 
||stt ||ddst| }	t||	||	j t||||	j |tj }
|rt||
st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rt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tjt|d ||dd W 5 Q R X W 5 Q R X d S )NZuse_bottleneckFr      )maxminr   medianstdz1/1/2001r   r&   z.'DatetimeArray' does not implement reduction ''r(   r   r   r   r   r   l        l      Zint64Zdtypez1/1/2000)sumr?   r>   abcz&No axis named 1 for object type Series)Zaxisnumeric_onlyT)rF   )r   Zoption_contextgetattrr   r2   NaNr   r*   r+   r,   Znotnar   isnaZdropnatmassert_almost_equalvaluesnanisnanextendrangefloatZbdate_rangelist
ValueErrorinspectgetfullargspecargsNotImplementedError)r    nameZ	alternateZstring_series_check_objectscheck_allnafZdsmsgZnonaZallnasitemsresexpr#   r#   r$   _check_stat_op_   sH    


z'TestSeriesStatReductions._check_stat_opc                 C   s&   t  d}| jdtj|dd d S )NseriesrD   F)rZ   )rJ   makeStringSeriesrenamera   r2   rD   r    string_seriesr#   r#   r$   test_sum   s    z!TestSeriesStatReductions.test_sumc                 C   s"   t  d}| dtj| d S )Nrb   r   )rJ   rc   rd   ra   r2   r   re   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 )Nrb   r@   r   rC   index)rJ   rc   rd   ra   r2   r@   r   onesintrP   rK   )r    rf   Zint_tsr#   r#   r$   test_median   s    z$TestSeriesStatReductions.test_medianc                 C   s"   t  d}| dtj| d S )Nrb   prod)rJ   rc   rd   ra   r2   rn   re   r#   r#   r$   	test_prod   s    z"TestSeriesStatReductions.test_prodc                 C   s&   t  d}| jdtj|dd d S )Nrb   r?   TrY   )rJ   rc   rd   ra   r2   r?   re   r#   r#   r$   test_min   s    z!TestSeriesStatReductions.test_minc                 C   s&   t  d}| jdtj|dd d S )Nrb   r>   Trp   )rJ   rc   rd   ra   r2   r>   re   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|st|jdd	}t|std S )Nrb   tsc                 S   s   t j| ddS Nr   Zddof)r2   rA   xr#   r#   r$   <lambda>       z7TestSeriesStatReductions.test_var_std.<locals>.<lambda>rA   c                 S   s   t j| ddS rt   )r2   varrv   r#   r#   r$   rx      ry   rz   r   ru   r   r   )rJ   rc   rd   makeTimeSeriesra   rA   r2   rL   rK   rz   ilocr   rI   r   r    rf   Zdatetime_seriesaltr5   r6   r]   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|std S )
Nrb   rs   c                 S   s   t j| ddt t|  S rt   )r2   rA   sqrtlenrv   r#   r#   r$   rx      ry   z3TestSeriesStatReductions.test_sem.<locals>.<lambda>semr   ru   r   r   )rJ   rc   rd   r{   ra   r   r2   rA   rL   r   r   rK   r|   r   rI   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 rt| stt|  stqFd| kst| dk sFtqFd S )	Nr   skewrb   c                    s    | ddS NF)Zbiasr#   rv   r   r#   r$   rx      ry   z4TestSeriesStatReductions.test_skew.<locals>.<lambda>r   r   r   )scipy.statsr   rJ   rc   rd   ra   rP   r   r2   rk   r   rN   r   all)r    rf   r~   min_Nir]   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qd| ksDt| dk stqd S )Nr   kurtosisrb   c                    s    | ddS r   r#   rv   r   r#   r$   rx     ry   z4TestSeriesStatReductions.test_kurt.<locals>.<lambda>kurtbarZoneZtwoZthreer   r   )levelscodesr   ri   )levelr   )r   r   rJ   rc   rd   ra   r   Z
MultiIndexr   r2   randomZrandnZassert_produces_warningFutureWarningrK   r   rP   rk   r   rN   r   r   )r    rf   r~   rj   r]   r   r   r   r#   r   r$   	test_kurt   s(    ,&
z"TestSeriesStatReductions.test_kurtN)FF)r8   r9   r:   ra   rg   rh   rm   ro   rq   rr   r   r   tdZskip_if_no_scipyr   r   r#   r#   r#   r$   r<   Z   s      
?
r<   )__doc__rT   Znumpyr2   r*   Zpandas.util._test_decoratorsutilZ_test_decoratorsr   Zpandasr   r   r   Zpandas._testingZ_testingrJ   Zpandas.core.arraysr   r   r   r   r<   r#   r#   r#   r$   <module>   s   B