a
    Gb                     @   s^   d dl Zd dlZd dlmZ d dlZd dlmZmZ d dl	m
Z d dlmZ G dd dZdS )    N)
is_integer)IndexSeries)	Timestampc                   @   sP  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	
dedededgedddedddedddgedededgedededejgedddedddedddejgedededejggdd Zdd Zdd Zej	
dg ddfg ddfgdd  Zd!d" Zej	
d#eed$gd%d& Zd'S )(TestSeriesQuantilec              	   C   s8  | d}|t| dks"J | d}|t| dksDJ t|td d}|t| dksnJ |j }| d}|tdksJ |	 }| d}|t
d	ksJ ttd
g }|t
dksJ d}ddddgddgfD ]>}tjt|d | | W d    q1 s(0    Y  qd S )N皙?
   ?Z   dtype皙?2000-01-10 19:12:00      ?z24:00:00NaTr   z2percentiles should all be in the interval \[0, 1\]         ?)match)quantilenp
percentiledropnar   objectindex	to_seriesr   ZdiffpdZto_timedeltaZtimedelta64sum	TimedeltapytestZraises
ValueError)selfdatetime_seriesqdtsZtdsresultmsgZinvalid r'   Hlib/python3.9/site-packages/pandas/tests/series/methods/test_quantile.pytest_quantile   s$    




z TestSeriesQuantile.test_quantilec                 C   s   ddg}| |}tt| dt| dg||jd}t|| |j	 }d|_| d}tt
dt
dgd	d	gdd}t|| | g }tg |jtg td
dd}t|| d S )Nr   r	   r   r
   r   nameZxxx)r   r   r   r   r   float64)r+   r   r   )r   r   r   r   r   r+   tmassert_series_equalr   r   r   r   float)r!   r"   Zqsr%   expectedr$   r'   r'   r(   test_quantile_multi/   s0    



z&TestSeriesQuantile.test_quantile_multic                 C   sX   |j ddd}|t| dks&J | d}|t| dksHJ ||ksTJ d S )Nr   ZlinearZinterpolationr   )r   r   r   r   )r!   r"   r#   Zq1r'   r'   r(   test_quantile_interpolationM   s
    
z.TestSeriesQuantile.test_quantile_interpolationc                 C   s   t g djddd}|ttg ddks4J t|s@J t g djddd}|ttg ddkstJ t|sJ d S )N)         r   lowerr2   2   Zhigher)r   r   r   r   Zarrayr   )r!   r#   r'   r'   r(   !test_quantile_interpolation_dtypeY   s    z4TestSeriesQuantile.test_quantile_interpolation_dtypec                 C   s   t ddddtjg}|d}d}||ks.J t g td}|t tjtjgg}|D ]p}|d}t|snJ |dg}t|t tjgdgd |d	d
g}t|t tjtjgd	d
gd qRd S )Nr4   r   r5   r6   r   g      @r   r   r   g333333?)r   r   nanr   r   isnanr-   r.   )r!   sr%   r0   s1Zcasesresr'   r'   r(   test_quantile_nane   s    

z$TestSeriesQuantile.test_quantile_nancasez
2011-01-01z
2011-01-02z
2011-01-03z
US/Eastern)Ztzz1 daysz2 daysz3 daysc                 C   sX   t |dd}|d}||d ks&J |dg}t |d gdgdd}t|| d S )NZXXX)r+   r   r4   r*   )r   r   r-   r.   )r!   rA   r=   r?   expr'   r'   r(   test_quantile_box{   s    $
z$TestSeriesQuantile.test_quantile_boxc                 C   s<   t tg dddsJ t tg ddds8J d S )NzM8[ns]r   r   zm8[ns])r   Zisnar   r   )r!   r'   r'   r(   !test_datetime_timedelta_quantiles   s    z4TestSeriesQuantile.test_datetime_timedelta_quantilesc                 C   sZ   t tjtjgd}|tju s$J t tjtjgdg}t|t tjgdgd d S )Nr   r:   )r   r   r   r   r-   r.   )r!   r?   r'   r'   r(   test_quantile_nat   s    z$TestSeriesQuantile.test_quantile_natzvalues, dtype)r   r   r   r4   r   r5   zSparse[int])g        Ng      ?g       @zSparse[float]c                 C   s>   t ||d}|dg}t t|dg}t|| d S )Nr   r   )r   r   r   Zasarrayr-   r.   )r!   valuesr   Zserr%   r0   r'   r'   r(   test_quantile_sparse   s    z'TestSeriesQuantile.test_quantile_sparsec                 C   s   t g dd}|d}t|s$J |dg}t tjgdgd}t|| t g dd}|d}t|srJ |dg}t tjgdgd}t|| t g dd}|d}|tju sJ |dg}t tjgdgd}t|| d S )Nr,   r   r   r:   Zint64zdatetime64[ns])	r   r   r   r<   r;   r-   r.   r   r   )r!   r=   r?   rB   r'   r'   r(   test_quantile_empty   s$    


z&TestSeriesQuantile.test_quantile_emptyr   ZInt64c                 C   sP   t g d|dtddd}t tdddtdddd}t|| d S )	N)r4   r   r5   r   r   r4   r   r5   r   r:   )r   r   r   Zaranger-   r.   )r!   r   r%   r0   r'   r'   r(   test_quantile_dtypes   s      z'TestSeriesQuantile.test_quantile_dtypesN)__name__
__module____qualname__r)   r1   r3   r9   r@   r   ZmarkZparametrizer   r   r   r   rC   rD   rE   rG   rH   intr/   rI   r'   r'   r'   r(   r      sX   





#
	
 r   )Znumpyr   r   Zpandas.core.dtypes.commonr   Zpandasr   r   r   Zpandas._testingZ_testingr-   Zpandas.core.indexes.datetimesr   r   r'   r'   r'   r(   <module>   s   