a
    oÝEbµe  ã                   @   sh   d dl Zd dlZd dlm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)Únp_percentile_argname)Ú	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d1d2„ Zd3d4„ Zd5S )6Ú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   úh/home/ja/django-apps/lartica_env/lib/python3.9/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s8J ‚t |j|j¡ |jddd�}|d	 ||jd	 d
ƒksrJ ‚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 �s0    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-17éZ   ©ÚxÚyr)   r*   )r$   r$   ÚBr+   )r   r	   r
   r   )Zcol1Zcol2r   zSelect only valid©Úmatch©r   r	   r
   ©r	   r
   r   ©r$   r+   ©Úindex©r   ç      @r   ©r2   r   ç      è?r   g      ü?r4   g      @r   g      @T)Zcheck_index_type)ÚaÚbr   ç      @ç      @)Únumpyr    r   r   Zassert_index_equalr2   ÚcolumnsÚlocr   ÚnpÚisnanZassert_produces_warningÚFutureWarningZmedianÚrenamer   r   Úassert_frame_equal)	r   Údatetime_framer    r   ÚqÚrsZxpr   r   r   r   r   Útest_quantile*   s8     
.ÿ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   ZdtiÚserr   r   r   r   r   r   Útest_quantile_date_rangeU   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   ƒ n1 sŠ0    Y  d S )Nr.   ©r   r9   r:   Z20130101r
   ©rJ   )ZfooÚbarZbaz)r$   r+   ÚCÚDr   r   r"   r3   r   z>'<' not supported between instances of 'Timestamp' and 'float'r,   F©r#   rM   )
r   rN   rO   r   r   r   r   ÚpytestÚraisesÚ	TypeError©r   r   r   r   Úmsgr   r   r   Útest_quantile_axis_mixedc   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 sè0    Y  d}tjt|d�� |jddd� W d   ƒ n1 �s*0    Y  d S )Nr.   r/   r0   r1   r   r   r"   r   r9   r$   r+   r5   r2   r   r3   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   rX   rY   Ú
ValueErrorr[   r   r   r   Útest_quantile_axis_parameterw   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fd
ditdi¤Ž}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fd
ditdi¤Ž}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 ¡�r¾t 
|d ¡�sÂJ ‚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.   r/   r0   r1   r   r   Znearest©r#   Úinterpolationr5   r#   r   Úint64©r2   r   r   )r   r   r9   rR   Úfloat64r6   Úlowerr   r   r9   r(   r!   Zhigherr)   r*   ©r   r   r   ©r	   r	   r	   ©r
   r
   r
   ©r7   r8   Úc©r<   ç      Ð?Zmidpoint)rc   ©r   r   r   ©r   r   r   ©r2   r<   )r   r   r   r   r   r>   r    Úarrayr   rB   r?   )r   r   r   r   ÚexprD   r   r   r   Útest_quantile_interpolation“   sX    þýüþýüÿ$"ýz1TestDataFrameQuantile.test_quantile_interpolationc                 C   s4   |}|j dddd�}|d t |d d¡ks0J ‚d S )Nr!   r   Úlinearrb   r$   r%   )r   r>   r    )r   rC   r   rD   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sVJ ‚t ||¡ d S )Nr!   r$   r%   r   ru   rb   )r   r>   r    r   r   )r   Z	int_framer   rD   Ú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 )Nrh   ri   rj   rk   rm   rn   r   ro   rp   rq   r   r"   )r   r   r	   r(   r!   r&   r   r1   )r   r   r   rB   r>   Únan©r   r   r   r   r   r   r   Útest_quantile_multiá   s"    "ýÿÿz)TestDataFrameQuantile.test_quantile_multic                 C   s   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dg  d¡}tg g t	j
dd�}t ||¡ |ddg  dg¡}t dgd	�}t ||¡ d S )NÚ2010Ú2011r   é   ©r7   r8   r   r4   r8   r1   FrL   z2010-07-02 12:00:00r7   r5   rq   Ú2012rl   r   rW   z2011-07-02 12:00:00©r2   r   r   )r   rN   Úto_datetimer   r   r   r   r   rB   r>   rf   rz   r   r   r   Útest_quantile_datetimeø   sD    
ÿÿýýz,TestDataFrameQuantile.test_quantile_datetimec              	   C   sZ   d}ddddgddgfD ]<}t jt|d�� | |¡ W d   ƒ q1 sJ0    Y  qd S )Nz2percentiles should all be in the interval \[0, 1\]r^   r	   r   r,   )rX   rY   r`   r   )r   rC   r\   Ú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)rK   z1 daysz2 daysz3 days©r$   r+   rU   r   FrL   )r   r2   rq   )r$   r7   r+   r8   rU   rl   ZAaBbCcrm   )r   r   rN   Z	Timedeltar   r   r   r   rB   ÚNaTÚlist©r   r   Úresrs   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   )r^   r   r   r9   r4   r7   r8   r5   r6   r:   g      
@r1   r"   r   r   r	   )
r   r>   Úarangery   Úilocr   r   r   r   rB   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 )Nr7   r   FrL   r5   r1   z
2012-01-01z
2012-01-02z
2012-01-03r   r8   rq   )	r   rN   r‡   r   r   r   r   rB   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 ||¡ |jddd	�}tg g ddd
�}t ||¡ |jdgdd	�}t g dgd�}t ||¡ d S )Nr7   r8   rf   ©r<   r   r   r5   )r<   r2   r   r"   r�   )r   r   r   r>   ry   r   r   rB   r‰   r   r   r   Ú"test_quantile_empty_no_rows_floatsí  s    
z8TestDataFrameQuantile.test_quantile_empty_no_rows_floatsc                 C   sD   t ddgdd�}| d¡}ttjtjgddgdd�}t ||¡ d S )Nr7   r8   rd   r�   r   r5   )r   r   r   r>   ry   r   r   r‰   r   r   r   Ú test_quantile_empty_no_rows_ints  s    
z6TestDataFrameQuantile.test_quantile_empty_no_rows_intsc                 C   sÀ   t ddgdd�}|jddd�}ttjtjgddgddd�}t ||¡ |d j d	¡|d< |jddd�}| 	t
¡}t ||¡ |d j d	¡|d< |jddd�}| 	|d j¡}t ||¡ d S )
Nr7   r8   údatetime64[ns]r�   r   FrL   r�   z
US/Central)r   r   r   rN   r‡   r   r   ÚdtZtz_localizeÚastypeÚobjectr   r‰   r   r   r   Ú test_quantile_empty_no_rows_dt64
  s    ÿ
z6TestDataFrameQuantile.test_quantile_empty_no_rows_dt64c                 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~   rS   zcaptain tightpantsr   re   rq   )r   rN   rO   r<   r   r   r   r>   rf   r2   r   r   rB   rz   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 }|sJt|jjƒdksJJ ‚|jdd	� d
|jd< |j	d |d d kszJ ‚d S )Nr   r
   r†   rm   r$   r	   rV   FrL   éc   r   )r   r   )
r   r>   ÚrandomZrandnÚlenZ_mgrÚblocksr   Úvaluesr�   )r   Úusing_array_managerr   rP   r   r   r   Útest_quantile_item_cache.  s    
z.TestDataFrameQuantile.test_quantile_item_cacheN)Ú__name__Ú
__module__Ú__qualname__rX   ÚmarkÚparametrizer   r   rN   ZarraysZSparseArrayr   rF   rQ   r]   ra   rt   rv   rx   r{   rƒ   r…   r‹   rŽ   r�   r‘   r’   r—   r˜   rŸ   r   r   r   r   r      sB   þÿù
þöþ
+90{!#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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
 d0ejejge	d1ƒd$gg g d(gg¡d2d3„ ƒZd4S )5ÚTestQuantileExtensionDtyper%   z#raises when trying to add Intervals©Úreason)ZmarksrG   é	   rV   )rJ   ÚfreqrH   rI   z1 DayrS   ZInt64r   ZFloat64c                 C   s
   t | jƒS r   )Ústrr   )r)   r   r   r   Ú<lambda>L  ó    z#TestQuantileExtensionDtype.<lambda>)ÚparamsÚidsc                 C   s   |j }d|_|S ©Nr$   )Úparamr   )r   ÚrequestÚidxr   r   r   r2   @  s    z TestQuantileExtensionDtype.indexc                 C   s(   ||ƒ  ¡ }|tu rd|_ndg|_|S r¯   )Úcopyr   r   r<   )r   r2   Úframe_or_seriesÚobjr   r   r   rµ   T  s
    zTestQuantileExtensionDtype.objc                 C   s(   t |tƒr| |¡}n|j|dd�}|S )NFrL   )Ú
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   r^   r$   ©r   r2   r   )r>   rŒ   r›   Úintprš   Úshuffler�   r¸   r   r   Útyper   Úassert_equal©r   rµ   r2   Ú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   r^   r   r¹   r   r   éþÿÿÿr$   rº   )Ú	_na_valuer�   r>   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è   |r0|t u r0|jdkr0tjjdd�}|j |¡ |j|jd d …< | 	|j¡|d d …< t
 |j|jk¡sjJ ‚t
jt|ƒt
jd�}t
j |¡ |j| }g d¢}|  ||¡}	|jg d¢d|jd�}
t|
|d	d
�}
t|ƒ|
ƒ}
t |	|
¡ d S )Nzm8[ns]z9obj.astype fails bc obj is incorrectly dt64 at this pointr¦   r   r¹   )r^   r^   r^   T)Z
allow_fillZ
fill_valuer$   r5   )r   r   rX   r£   ÚxfailÚnodeZ
add_markerrÃ   r�   r•   r>   ÚallZdtypesrŒ   r›   r»   rš   r¼   r¸   Ztaker   r½   r   r¾   )r   rµ   r2   r´   rž   r±   r£   rÀ   r·   r   r   r   r   r   Útest_quantile_ea_all_na�  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ƒrr|d }||ks~J ‚nt ||¡ d S )Nr   r   r$   r   )r   r   )r>   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, axisrf   r   rd   r7   r8   r   c                 C   sB   t ddg|d�}|jd|d�}t|dt|ƒdd�}t ||¡ d S )Nr7   r8   r�   r   r"   rf   ©r   r2   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 )Nr7   r8   r�   r   FrW   rÊ   rË   )	r   r   rÌ   rÍ   r#   Z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€   rk   r7   rl   r   r"   rÊ   )
r   rN   r‚   r   r   r   r>   rf   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¢   rX   Zfixturer°   rN   ZIntervalIndexZfrom_breaksÚranger£   rÅ   Zperiod_rangerO   Ztimedelta_rangerr   r>   rŒ   r2   rµ   r¸   rÁ   rÄ   ÚfilterwarningsrÈ   rÉ   r¤   ry   rÎ   r‡   rÏ   rÐ   r   r   r   r   r¥   <  sh   þ÷ô




 

üþ	
	ú÷þ
þþr¥   )r;   r>   rX   Zpandas.compat.numpyr   ZpandasrN   r   r   r   r   Zpandas._testingZ_testingr   r   r¥   r   r   r   r   Ú<module>   s       0