o
    թZh%                     @   sd   d Z ddlZddlZddlZddlZddlmZmZm	Z	 ddl
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
date_rangec                   @   s~   e Zd Zejdeejej	gdd Z
ejdeejej	gejdg ddd Zejdeejej	gdd	 Zd
S )TestDatetimeLikeStatReductionsboxc                 C   s   |}t dd|d}|g d}|j}||}| tjd|dks$J |jddtjd|dks3J tj|d	< ||}| tjd
|dksIJ |jddtju sTJ d S )N
2001-01-01   )periodstz         
   	            r         z
2001-01-06)r
   FZskipnaz2001-01-06 07:12:00)r   take_datameanpd	TimestampNaT)selfZtz_naive_fixturer   r
   dtiZdtarrobj r!   c/var/www/html/lang_env/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 ddd}|g d}|dkrtnd }d}tj||d |j|}W d    n1 s/w   Y  ||}tjt	dd |
  W d    n1 sNw   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 sw   Y  tjt	dd |j
d	d
 W d    d S 1 sw   Y  d S )Nr   r   r	   r   r)   zPeriodDtype\[B\] is deprecatedmatchZ	ambiguousTr   r   )r   r   FutureWarningtmZassert_produces_warningr   Z	to_periodpytestraises	TypeErrorr   r   r   )r   r   r$   r   warnmsgZparrr    r!   r!   r"   test_period_mean'   s*   


"z/TestDatetimeLikeStatReductions.test_period_meanc           	      C   s   t g dd}t|d}|j}||dd}| }t | }||ks*J tj|d< |jddtju s:J |jdd}||d	d   ksLJ |d
|d d d
ks\J d S )N)r   r   r   ir   r   r   r   r   r   zm8[D]nsF)copyr   r   Tr   usg      &@r   )	nparrayr   ZTimedeltaIndexZas_unitr   r   r   round)	r   r   Zm8valuesZtdiZtdarrr    resultexpectedZresult2r!   r!   r"   test_td64_meanA   s   
$z-TestDatetimeLikeStatReductions.test_td64_meanN)__name__
__module____qualname__r/   markZparametrizer   r   Indexr:   r#   r4   r>   r!   r!   r!   r"   r      s    
r   c                   @   sp   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dd Zdd Zdd ZdS )TestSeriesStatReductionsFc              	   C   s\  t dd tt|}tj|dd< |dvrAttddd}d	| d
}tjt	|d || W d    n1 s<w   Y  t 
||sJJ t ||ddsUJ | }	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 |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 sw   Y  dt|jv r||dd W d    d S W d    d S 1 s'w   Y  d S )NZuse_bottleneckFr      )maxminr   medianstdz1/1/2001r   r*   zdoes not support reduction ''r+   r   )r   r   r   Nr   r   l        l      Zint64dtypez1/1/2000)sumrG   rF   abcz&No axis named 1 for object type Seriesr   )Zaxisnumeric_onlyT)rO   )r   Zoption_contextgetattrr   r9   nanr   r/   r0   r1   ZnotnaisnaZdropnar.   assert_almost_equalvaluesisnanextendrangefloatZbdate_rangelist
ValueErrorinspectgetfullargspecargs)r   name	alternateZstring_series_check_objectscheck_allnafZdsr3   ZnonaZallnar%   itemsresexpr!   r!   r"   _check_stat_op\   sR   


6$z'TestSeriesStatReductions._check_stat_opc                 C   ,   t tdtjdd}| jdtj|dd d S )N   seriesrL   r^   rM   F)ra   )r   rW   r9   float64rf   rM   r   string_seriesr!   r!   r"   test_sum      z!TestSeriesStatReductions.test_sumc                 C   (   t tdtjdd}| dtj| d S )Nrh   ri   rj   r   )r   rW   r9   rk   rf   r   rl   r!   r!   r"   	test_mean      z"TestSeriesStatReductions.test_meanc                 C   sX   t tdtjdd}| dtj| t tjdtdtdd}t	t||  d S )Nrh   ri   rj   rH   r   rK   )index)
r   rW   r9   rk   rf   rH   onesintr.   rS   )r   rm   Zint_tsr!   r!   r"   test_median   s   z$TestSeriesStatReductions.test_medianc                 C   rp   )Nrh   ri   rj   prod)r   rW   r9   rk   rf   rw   rl   r!   r!   r"   	test_prod   rr   z"TestSeriesStatReductions.test_prodc                 C   rg   )Nrh   ri   rj   rG   Tr`   )r   rW   r9   rk   rf   rG   rl   r!   r!   r"   test_min   ro   z!TestSeriesStatReductions.test_minc                 C   rg   )Nrh   ri   rj   rF   Try   )r   rW   r9   rk   rf   rF   rl   r!   r!   r"   test_max   ro   z!TestSeriesStatReductions.test_maxc                 C   s   t tdtjdd}t tjdtjdtdddd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|slJ |jdd}t|syJ d S )Nrh   ri   rj   r   rK   
2020-01-01r*   tsrs   r^   c                 S      t j| ddS Nr   Zddof)r9   rI   xr!   r!   r"   <lambda>       z7TestSeriesStatReductions.test_var_std.<locals>.<lambda>rI   c                 S   r   r   )r9   varr   r!   r!   r"   r      r   r   r   r   r   r   )r   rW   r9   rk   aranger   rf   rI   rT   r.   rS   r   ilocr   rR   r   rm   Zdatetime_seriesaltr<   r=   r%   r!   r!   r"   test_var_std   s*   
z%TestSeriesStatReductions.test_var_stdc                 C   s   t tdtjdd}t tjdtjdtddddd	}d
d }| d|| |jdd}tj|j	ddt
t|j	 }t|| |jdg }|jdd}t|sUJ d S )Nrh   ri   rj   r   rK   r|   r*   r}   r~   c                 S   s   t j| ddt t|  S r   )r9   rI   sqrtlenr   r!   r!   r"   r      s    z3TestSeriesStatReductions.test_sem.<locals>.<lambda>semr   r   r   r   )r   rW   r9   rk   r   r   rf   r   rI   rT   r   r   r.   rS   r   r   rR   r   r!   r!   r"   test_sem   s    
z!TestSeriesStatReductions.test_semc                    s   t d ttdtjdd} fdd}| d|| d}td	|d	 D ]G}tt|}tt||f}||k rPt	|
 sDJ t	|
  sOJ q%d
|
 ksXJ t|
 tjsbJ |
 d
k slJ q%d S )Nscipy.statsrh   ri   rj   c                        j | ddS NF)Zbias)skewr   Zsp_statsr!   r"   r      r   z4TestSeriesStatReductions.test_skew.<locals>.<lambda>r   r   r   r   )r/   importorskipr   rW   r9   rk   rf   rt   r   rU   r   all
isinstance)r   rm   r   min_Nir%   dfr!   r   r"   	test_skew   s   
z"TestSeriesStatReductions.test_skewc                    s<   t d ttdtjdd} fdd}| d|| d S )Nr   rh   ri   rj   c                    r   r   )Zkurtosisr   r   r!   r"   r     r   z4TestSeriesStatReductions.test_kurt.<locals>.<lambda>kurt)r/   r   r   rW   r9   rk   rf   )r   rm   r   r!   r   r"   	test_kurt   s   
z"TestSeriesStatReductions.test_kurtc                 C   s   d}t d|d D ]G}tt|}tt||f}||k r4t| s(J t|  s3J q	d| ks<J t| tj	sFJ | dk sPJ q	d S )Nr   r   r   )
rW   r   r9   rt   r   rU   r   r   r   rk   )r   r   r   r%   r   r!   r!   r"   test_kurt_corner  s   z)TestSeriesStatReductions.test_kurt_cornerN)FF)r?   r@   rA   rf   rn   rq   rv   rx   rz   r{   r   r   r   r   r   r!   r!   r!   r"   rD   W   s    
=rD   )__doc__r[   numpyr9   r/   Zpandasr   r   r   r   Zpandas._testingZ_testingr.   r   rD   r!   r!   r!   r"   <module>   s    E