o
    g)`                     @   s\   d dl Zd dlZd dlZd dlmZmZmZmZ d dl	m
Z G dd dZG dd dZdS )    N)	DataFrameIndexSeries	Timestampc                
   @   s   e Zd Zejdeeej	
ddgeej	
ddgdeddgd	d
geeg dddedgd	d
gg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'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1S )2TestDataFrameQuantilezdf,expected            )r   r         ?      @      ?name)g        N      ?       @zSparse[float]dtyper   c                 C   s   |  }t|| d S N)quantiletmassert_series_equal)selfdfexpectedresult r   f/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pandas/tests/frame/methods/test_quantile.pytest_quantile_sparse   s   z*TestDataFrameQuantile.test_quantile_sparsec           	      C   s  ddl m} |}|jddd}|d ||d dksJ t|j|j |jddd}|d	 ||jd	 d
ks9J t|j|j tg g djddd}t	
|d r[t	
|d s]J tg dg dd}|d}tjtdd | d}W d    n1 sw   Y  t|| tg dg ddg dd}|jddd}tg dg ddd}t|| |jddgdd}tddgddgdd gdddgd}tj||d!d" tg dg d#g}|jddd}td$d%gddgdd}t|| d S )&Nr   )
percentile皙?axisA
   ?r   z
2000-01-17Z   xyr(   r)   )r#   r#   Br*   )r   r   r	   r
   )col1col2r   zSelect only validmatchr   r   r	   r   r	   r
   r#   r*   indexr         @r   r3   r         ?r   g      ?r5   g      @r   g      @T)check_index_type)abr
         @      @)numpyr   r   r   assert_index_equalr3   columnslocr   npisnanassert_produces_warningFutureWarningmedianrenamer   r   assert_frame_equal)	r   datetime_framer   r   qrsxpr   r   r   r   r   test_quantile(   s:    
z#TestDataFrameQuantile.test_quantilec                 C   sL   t jdddd}t|}t|}|jdd}tdgdd	d
}t|| d S )N
2016-01-01r	   
US/PacificperiodstzFnumeric_onlyz2016-01-02 00:00:00r   zdatetime64[ns, US/Pacific])r   r   )pd
date_ranger   r   r   r   r   )r   dtiserr   r   r   r   r   r   test_quantile_date_rangeS   s   z.TestDataFrameQuantile.test_quantile_date_rangec                 C   s   t g dg dtjdddg dd}|jdd	d
}tg ddd}t|| d}tjt	|d |jdd	dd W d    d S 1 sFw   Y  d S )Nr/   r   r;   r<   20130101r	   rP   )foobarbaz)r#   r*   CDr   r   r!   r4   r   z>'<' not supported between instances of 'Timestamp' and 'float'r-   Fr"   rS   )
r   rT   rU   r   r   r   r   pytestraises	TypeErrorr   r   r   r   msgr   r   r   test_quantile_axis_mixeda   s   "z.TestDataFrameQuantile.test_quantile_axis_mixedc                 C   s8  t g dg ddg dd}|jddd}tdd	gd
dgdd}t|| |jddd}t|| |jddd}tg dg ddd}t|| |jddd}t|| d}tjt|d |jddd W d    n1 stw   Y  d}tjt|d |jddd W d    d S 1 sw   Y  d S )Nr/   r0   r1   r2   r   r   r!   r   r;   r#   r*   r6   r3   r   r4   r?   z*No axis named -1 for object type DataFramer-   r    z.No axis named column for object type DataFramecolumn)r   r   r   r   r   rb   rc   
ValueErrorre   r   r   r   test_quantile_axis_parameteru   s&   "z2TestDataFrameQuantile.test_quantile_axis_parameterc                 C   s  t g dg ddg dd}|jdddd}tg dg ddd	}t|| tjtg dg dgdd
dd}t|g dddd}t|| t g dg ddg dd}|jdddd}tg dg ddd	}t|| tjtg dg dgdd
dd}t|g dddd}t|| |jddgddd}t ddgddgddgdddgd}t|| t g g d}|jdd
dd}t	|d rt	|d sJ t g dg dg dgg dd}|jddgd d!}t g d"g d#gddgg dd$}t|| d S )%Nr/   r0   r1   r2   r   r   nearestr"   interpolationr6   r   int64r3   r   r   )r   r   r;   rY   float64r7   lowerr   r   r;   r'   r    higherr(   r)   r   r   r   r   r   r   r	   r	   r	   r9   r:   cr?         ?midpoint)rn   r   r   r   r   r   r   r3   r?   )
r   r   r   r   r   rA   r   arrayrG   rB   )r   r   r   r   exprI   r   r   r   test_quantile_interpolation   sJ    "z1TestDataFrameQuantile.test_quantile_interpolationc                 C   s4   |}|j dddd}|d t|d dksJ d S )Nr    r   linearrm   r#   r$   )r   rA   r   )r   rH   r   rI   r   r   r   $test_quantile_interpolation_datetime   s    z:TestDataFrameQuantile.test_quantile_interpolation_datetimec                 C   sf   |}| d}|d t|d dksJ |j dddd}|d t|d dks+J t|| d S )Nr    r#   r$   r   r   rm   )r   rA   r   r   r   )r   	int_framer   rI   q1r   r   r   test_quantile_interpolation_int   s   
z5TestDataFrameQuantile.test_quantile_interpolation_intc                 C   s   t g dg dg dgg dd}|ddg}t g dg d	gddgg dd
}t|| |jddgdd}t g dg d	gddgg dd
}t g g djddgdd}t tjtjgtjtjgdddgd}t|| d S )Nrt   ru   rv   rw   ry   rz   r   r|   r}   r~   r   r!   )r   r   r   r'   r    r%   r   r2   )r   r   r   rG   rA   nanr   r   r   r   r   r   r   test_quantile_multi   s"   "z)TestDataFrameQuantile.test_quantile_multic                 C   sD  t tddgddgd}|d}tdgdgd	}|jdd
d}ttddgddgdd}t|| |jdgd
d}t tddggdgddgd}t|| tddg|d< |ddg jddd
d}ttdtdgddgdd}t|| |ddg jdgdd
d}t tdtdggdgddgd}t|| d S )N20102011r      r9   r:   r   r5   r:   r2   FrR   z2010-07-02 12:00:00r9   r6   r~   2012rx   r   ra   z2011-07-02 12:00:00)	r   rT   to_datetimer   r   r   r   r   rG   r   r   r   r   test_quantile_datetime   s8   
z,TestDataFrameQuantile.test_quantile_datetimec              	   C   sZ   d}ddddgddgfD ]}t jt|d || W d    n1 s%w   Y  qd S )Nz2percentiles should all be in the interval \[0, 1\]rh   r   r   r-   )rb   rc   rj   r   )r   rH   rf   invalidr   r   r   test_quantile_invalid  s   z+TestDataFrameQuantile.test_quantile_invalidc                 C   sn  t tdtdtdgtdddtdddtdddgtdtdtdgd	}|jd
dd}ttdtdddtdgd
g d	d}t|| |jd
gdd}t tdtdddtdggd
gg d	d}t|| t tdtj	tdtdgtdtdtj	tdgtdddtj	tdddtdddgtdddtdddtj	tdddgtdtdtdtj	gtj	tdtdtdgdt
dd}|jd
dd}ttdtdtdddtdddtdtdgd
t
dd}t|| |jd
gdd}t tdtdtdddtdddtdtdggd
gt
dd}t|| d S )Nz
2011-01-01z
2011-01-02z
2011-01-03z
US/Eastern)rQ   z1 daysz2 daysz3 daysr#   r*   r_   r   FrR   )r   r3   r~   )r#   r9   r*   r:   r_   rx   AaBbCcry   )r   r   rT   	Timedeltar   r   r   r   rG   NaTlistr   r   resr   r   r   r   test_quantile_box%  s   



	






&*




z'TestDataFrameQuantile.test_quantile_boxc                 C   sp  t tddtddd}tj|jd< |d}tddgdd	gdd
}t|| |ddg}t ddgddgdddgd}t	|| |jddd}ttdddd}t|| |jddgdd}t tddgd ddgd}t	|| tj|d	< |d}tdtjgdd	gdd
}t|| |ddg}t ddgtjtjgdddgd}t	|| d S )Nr   g      @r   )rh   r   r   r;   r5   r9   r:   r6   r7   r<   g      
@r2   r!   r   r   r   )
r   rA   aranger   ilocr   r   r   r   rG   r   r   r   r   test_quantile_nan  s*   


"z'TestDataFrameQuantile.test_quantile_nanc                 C   s  t dtjtjtjgi}|jddd}ttjgdgdd}t|| |jdgdd}t dtjgidgd}t|| t tdtdtd	gtjtjtjgd
}|jddd}ttdtjgddgdd}t|| |jdgdd}t tdtjggdgddgd}t|| d S )Nr9   r   FrR   r6   r2   z
2012-01-01z
2012-01-02z
2012-01-03r   r:   r~   )	r   rT   r   r   r   r   r   rG   r   r   r   r   r   test_quantile_nat  s.   z'TestDataFrameQuantile.test_quantile_natc                 C   s   t ddgdd}|d}ttjtjgddgdd}t|| |dg}t tjtjggddgdgd}t|| t ddgdd}t ddgd	d}d S )
Nr9   r:   rq   r?   r   r   r6   )r?   r3   ro   datetime64[ns])r   r   r   rA   r   r   r   rG   r   r   r   r   test_quantile_empty_no_rows  s   
z1TestDataFrameQuantile.test_quantile_empty_no_rowsc                 C   s~   t tjddd}d|j_|d}tg g dtjd}d|j	_t
|| |dg}t g dgg d}d|j_t
|| d S )Nz1/1/18r   r[   zcaptain tightpantsr   rp   r~   )r   rT   rU   r?   r   r   r   rA   rq   r3   r   r   rG   r   r   r   r   test_quantile_empty_no_columns  s   
z4TestDataFrameQuantile.test_quantile_empty_no_columnsc                 C   s~   t tjddg dd}|d d |d< |d }|s%t|jjdks%J |jdd	 d
|jd< |j	d |d d ks=J d S )Nr
   r	   r   ry   r#   r   r`   FrR   c   r   )r   r   )
r   rA   randomrandnlen_mgrblocksr   valuesr   )r   using_array_managerr   rW   r   r   r   test_quantile_item_cache  s   
z.TestDataFrameQuantile.test_quantile_item_cacheN)__name__
__module____qualname__rb   markparametrizer   r   rT   arraysSparseArrayr   rL   rX   rg   rk   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s@    

+6,{!#r   c                   @   s  e Zd Zejejeje	dej
jdddejddddejddd	d
ejedddejedddgdd ddd Zejdd Zdd Zdd Zdd Zej
ddd Zdd Zej
d d!g g d"gd#g g d"gd!ejejgd$d%gd&gd#ejejgd$d%gd&ggd'd( Zej
d)ejd*g g d"d*ej
jd+ddd*ejejgd$d%gd&d*ggd,d- Zej
d.ejejge	d/d"gg g d&ggd0d1 Zd2S )3TestQuantileExtensionDtyper$   z#raises when trying to add Intervals)reason)marksrM   	   r`   )rP   freqrN   rO   Int64r   Float64c                 C   s
   t | jS r   )strr   )r(   r   r   r   <lambda>,  s   
 z#TestQuantileExtensionDtype.<lambda>)paramsidsc                 C   s   |j }d|_|S Nr#   )paramr   )r   requestidxr   r   r   r3   !  s   z TestQuantileExtensionDtype.indexc                 C   s*   ||  }|tu rd|_|S dg|_|S r   )copyr   r   r?   )r   r3   frame_or_seriesobjr   r   r   r   4  s   zTestQuantileExtensionDtype.objc                 C   s*   t |tr||}|S |j|dd}|S )NFrR   )
isinstancer   r   )r   r   qsr   r   r   r   compute_quantile?  s
   

z+TestQuantileExtensionDtype.compute_quantilec                 C   s~   t jt|t jd}t j| |j| }g d}| ||}t|d |d |d g|j	|dd}t
||}t|| d S )Nr   r   r   r   r
   r   rh   r#   r   r3   r   )rA   r   r   intpr   shuffler   r   r   r   typer   assert_equalr   r   r3   indexerr   r   r   r   r   r   test_quantile_eaF  s   
z+TestQuantileExtensionDtype.test_quantile_eac                 C   s   |j |jd< |j |jd< tjt|tjd}tj| |j| }g d}| ||}t	|d |d |d g|j
|dd	}t||}t|| d S )
Nr   rh   r   r   r
   r   r#   r   )	_na_valuer   rA   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   test_quantile_ea_with_naX  s   
z3TestQuantileExtensionDtype.test_quantile_ea_with_naz-ignore:Using .astype to convert:FutureWarningc                 C   s   |j |jd d < ||j|d d < t|j|jksJ tjt|tj	d}tj
| |j| }g d}| ||}|jg dd|j d}t||dd}t||}t|| d S )Nr   r   )rh   rh   rh   T)
allow_fill
fill_valuer#   r6   )r   r   astyper   rA   alldtypesr   r   r   r   r   r   taker   r   r   r   )r   r   r3   r   r   r   r   r   r   r   r   test_quantile_ea_all_nam  s   
z2TestQuantileExtensionDtype.test_quantile_ea_all_nac                 C   s   t jt|t jd}t j| |j| }d}| ||}td|d i|j	dd}t
|tr:|d }||ks8J d S t|| d S )Nr   r   r#   r
   )r   r   )rA   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   test_quantile_ea_scalar  s   

z2TestQuantileExtensionDtype.test_quantile_ea_scalarz*dtype, expected_data, expected_index, axisrq   r   ro   r9   r:   r   c                 C   sB   t ddg|d}|jd|d}t|dt|dd}t|| d S )Nr9   r:   r   r   r!   rq   r   r3   r   r   r   r   r   r   r   )r   r   expected_dataexpected_indexr"   r   r   r   r   r   r   test_empty_numeric  s   z-TestQuantileExtensionDtype.test_empty_numericz:dtype, expected_data, expected_index, axis, expected_dtyper   z	#GH 41544c           	      C   sD   t ddg|d}|jd|dd}t|dt||d}t|| d S )Nr9   r:   r   r   Fra   r   r   )	r   r   r   r   r"   expected_dtyper   r   r   r   r   r   test_empty_datelike  s   z.TestQuantileExtensionDtype.test_empty_datelikez#expected_data, expected_index, axisr   c                 C   sd   t tddgddgtddgd}|ddg jd	|d
}t|d	t|tjd}t	|| d S )Nr   r   r   r   r   rw   r9   rx   r   r!   r   )
r   rT   r   r   r   r   rA   rq   r   r   )r   r   r   r"   r   r   r   r   r   r   test_datelike_numeric_only  s   	z5TestQuantileExtensionDtype.test_datelike_numeric_onlyN)r   r   r   rb   fixturer   rT   IntervalIndexfrom_breaksranger   xfailperiod_rangerU   r   rA   r   r3   r   r   r   r   filterwarningsr   r   r   r   r   r   r   r   r   r   r   r   r     sh    








		
r   )r=   rA   rb   pandasrT   r   r   r   r   pandas._testing_testingr   r   r   r   r   r   r   <module>   s        