o
    dˎ                     @   s   d dl Zd dlZd dlmZmZ d dlZd dlmZm	Z	m
Z
mZ d dlmZ ejddgddggdd	 d
dd ZG dd dZG dd dZdS )    N)np_percentile_argnamenp_version_under1p21)	DataFrameIndexSeries	Timestamplinearsinglenearesttablec                 C   s
   d | S )N-)joinx r   m/var/www/html/visualizacion-main/env/lib/python3.10/site-packages/pandas/tests/frame/methods/test_quantile.py<lambda>      
 r   paramsidsc                 C   s   | j S )z.(interpolation, method) arguments for quantile)param)requestr   r   r   interp_method   s   r   c                
   @   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ejd/g d0d1d2 Zejd3d4dd	d4gd	dggd5d6 Zd7d8 Zd9d: Zd;d< Zd=d> Z d?d@ Z!dAdB Z"dCdD Z#dEdF Z$dGdH Z%dIdJ Z&dKdL Z'dMS )NTestDataFrameQuantilezdf,expected            )r   r         ?      @      ?name)g        N      ?       @Sparse[float]dtyper$   c                 C   s"   |  }|d}t|| d S )Nr&   )quantileastypetmassert_series_equal)selfdfexpectedresultr   r   r   test_quantile_sparse   s   
z*TestDataFrameQuantile.test_quantile_sparsec           	         s  |\}}|  j ddd||d}t fdd jD  jdd}|dkr+t|| nt|j|j |jt	j
j|d	d
 |j|jksGJ  j ddd||d}t fdd jD  jdd}|dkrmt|| d S t|j|j |jt	j
j|d	d
 |j|jksJ d S )N皙?r   Taxisnumeric_onlyinterpolationmethodc                    s   g | ]
}t  | d qS )
   )np
percentile).0colr.   r   r   
<listcomp>>   s    z7TestDataFrameQuantile.test_quantile.<locals>.<listcomp>indexr#   r   z%Name set incorrectly for arraymanagerreason?r   c                    s   g | ]}t  j| d qS )Z   )r9   r:   loc)r;   dater=   r   r   r>   R   s    )r)   r   columnsr+   r,   assert_index_equalr@   node
add_markerpytestmarkxfailr#   )	r-   datetime_framer   using_array_managerr   r6   r7   r0   r/   r   r=   r   test_quantile5   sH   

z#TestDataFrameQuantile.test_quantilec                 C   sJ   |\}}t g g djddd||d}t|d r!t|d s#J d S )Nr   yr2   r   Tr3   r   rR   )r   r)   r9   isnan)r-   r   r6   r7   qr   r   r   
test_emptyb   s
   
$z TestDataFrameQuantile.test_emptyc           	      C   s   |\}}t g dg dd}|jdd||d}|jddd}|dkr-|d tj}|d	kr>|r>|jt	j
jd
d t|| d S )N)ArV   BrW   )r   r   r   r   )col1col2r!   Tr5   r6   r7   r5   r
   r   Axis name incorrectly set.rA   )r   r)   medianrenamer*   r9   int64rI   rJ   rK   rL   rM   r+   r,   )	r-   r   r   rO   r6   r7   r.   rsxpr   r   r   test_non_numeric_exclusioni   s   z0TestDataFrameQuantile.test_non_numeric_exclusionc           	      C   s&  |\}}t g dg ddg dd}|jdd||d}tg dg ddd	}|d
kr1|tj}|dkrB|rB|jtj	j
dd t|| |jddgd||d}t ddgddgddgdddgd}|d
kr|jdd d f  d8  < |jdd d f  d7  < |tj}tj||dd d S )Nr   r   r   r   r   r   rV   rW   r@   r!   r   r4   r6   r7   r         @r    r?   r
   r   r\   rA         ?r   g      ?ri   g      @r    g      @r         ?T)check_index_type)r   r)   r   r*   r9   r_   rI   rJ   rK   rL   rM   r+   r,   ilocassert_frame_equal	r-   r   r   rO   r6   r7   r.   r0   r/   r   r   r   	test_axisx   s,   zTestDataFrameQuantile.test_axisc           	      C   s   |\}}t g dg dg}|jddd||d}tddgd	dgdd
}|dkr-|tj}|dkr>|r>|jtj	j
dd t|| d S )Nrc   )abr   r!   r   Tr3         @      @r   r?   r
   r   r\   rA   )r   r)   r   r*   r9   r_   rI   rJ   rK   rL   rM   r+   r,   ro   r   r   r   test_axis_numeric_only_true   s   
z1TestDataFrameQuantile.test_axis_numeric_only_truec                 C   sz   |\}}t jdddd}t|}t|}|jd||d}	tdgdd	d
}
|dkr5|r5|jtjj	dd t
|	|
 d S )N
2016-01-01r   
US/PacificperiodstzFrZ   z2016-01-02 00:00:00r!   datetime64[ns, US/Pacific])r#   r(   r   r\   rA   )pd
date_ranger   r   r)   rI   rJ   rK   rL   rM   r+   r,   )r-   r   r   rO   r6   r7   dtiserr.   r0   r/   r   r   r   test_quantile_date_range   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
||d}tg ddd}|dkr2|d8 }|dkrC|rC|jtjj	dd t
|| d}	tjt|	d |jdd	dd W d    d S 1 sfw   Y  d S )Nrc   r%   rs   rt   20130101r   ry   )foobarbaz)rV   rW   CDr!   r   Tr3   rh   r"   r
   r   r\   rA   z>'<' not supported between instances of 'Timestamp' and 'float'matchFr4   r5   )r   r|   r}   r)   r   rI   rJ   rK   rL   rM   r+   r,   raises	TypeError
r-   r   r   rO   r6   r7   r.   r0   r/   msgr   r   r   test_quantile_axis_mixed   s.   
"z.TestDataFrameQuantile.test_quantile_axis_mixedc           
      C   s  |\}}|dkr|r|j tjjdd tg dg ddg dd}|jdd	||d
}tddgddgdd}|dkrB|t	j
}t|| |jdd||d
}|dkr[|t	j
}t|| |jdd||d
}tg dg ddd}|dkr|t	j
}t|| |jdd||d
}t|| d}	tjt|	d |jdd||d
 W d    n1 sw   Y  d}	tjt|	d |jddd W d    d S 1 sw   Y  d S )Nr   r\   rA   rc   rd   re   rf   r!   r   rg   r%   rs   rV   rW   r?   r
   r@   r   rh   rG   z*No axis named -1 for object type DataFramer   r2   z.No axis named column for object type DataFramecolumnr4   )rI   rJ   rK   rL   rM   r   r)   r   r*   r9   r_   r+   r,   r   
ValueErrorr   r   r   r   test_quantile_axis_parameter   sD   "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 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 )&Nrc   rd   re   rf   r!   r   r
   r4   r6   r?   r4   r   r_   r@   r#   r(   r$   r%   rs   r   float64rj   lowerr$   r%   rs   rQ   r2   higherr   rR   r   r   r   r   r   r   r   r   r   rq   rr   crG   rk   midpoint)r6   r   r   r   r%   r%   r%   r@   rG   )r   r)   r   r+   r,   r9   r:   arrayr   rn   rS   )r-   r.   r0   r/   exprT   r   r   r   test_quantile_interpolation   sX    "z1TestDataFrameQuantile.test_quantile_interpolationc                 C   s6   |}|j ddddd}|d t|d dksJ d S )Nr2   r   Tr   )r4   r5   r6   rV   r8   )r)   r9   r:   )r-   rN   r.   rT   r   r   r   $test_quantile_interpolation_datetime7  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 )Nr2   rV   r8   r   r   r   )r)   r9   r:   r+   r,   )r-   	int_framer.   rT   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}|jddg||d}t g d	g d
gddgg dd}|dkr:|tj}|dkrK|rK|jtjj	dd t
|| d S )Nr   r   r   r   r   rk   r!   r6   r7   r   r   r   r
   r   r\   rA   r   r)   r*   r9   r_   rI   rJ   rK   rL   rM   r+   rn   ro   r   r   r   test_quantile_multiL  s   "z)TestDataFrameQuantile.test_quantile_multic           	      C   s   |\}}t g dg dg dgg dd}|jddgd||d	}t g d
gd ddgg dd}|dkr:|tj}|dkrK|rK|jtjj	dd t
|| d S )Nr   r   r   r   r   rk   r!   r   rg   r   r   )r   r   r   r   r
   r   r\   rA   r   ro   r   r   r   test_quantile_multi_axis_1]  s   "z0TestDataFrameQuantile.test_quantile_multi_axis_1c                 C   s^   |\}}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 )NrQ   r2   rC   r   rg   rf   )r   r)   r9   nanr+   rn   )r-   r   r6   r7   r0   r/   r   r   r   test_quantile_multi_emptyn  s   z/TestDataFrameQuantile.test_quantile_multi_emptyc                 C   s  t tddgddgd}|jddd}td	gd
gdd}t|| |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 jddd}tg g t	j
dd}t|| |ddg jdgdd}t dgg d}t|| d S )N20102011r      rq   rr   r!   Tr[   ri   rr   r?   Fz2010-07-02 12:00:00rq   r   2012r   r   r   z2011-07-02 12:00:00r@   r(   r#   )r   r|   to_datetimer)   r   r+   r,   r   rn   r9   r   )r-   r.   r0   r/   r   r   r   test_quantile_datetimex  sF   z,TestDataFrameQuantile.test_quantile_datetimer(   )datetime64[ns]r{   timedelta64[ns]z	Period[D]c                 C   s|   |\}}t ddg|d}|jddd||d}tg g d|d}t|| |jdgdd||d}t dgg d	}t|| d S )
Nrq   rr   rG   r(   r!   r   Fr3   r   r   )r   r)   r   r+   r,   rn   )r-   r(   r   r6   r7   r.   resr/   r   r   r   test_quantile_dt64_empty  s    
z.TestDataFrameQuantile.test_quantile_dt64_emptyinvalidr   c                 C   sP   d}|\}}t jt|d |j|||d W d    d S 1 s!w   Y  d S )Nz2percentiles should all be in the interval \[0, 1\]r   r   )rK   r   r   r)   )r-   r   rN   r   r   r6   r7   r   r   r   test_quantile_invalid  s
   "z+TestDataFrameQuantile.test_quantile_invalidc           	      C   s  |\}}|dkr|r|j tjjdd 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|| d S )Nr   r\   rA   
2011-01-01
2011-01-02
2011-01-03
US/Easternrz   1 days2 days3 daysrV   rW   r   r!   FrZ   r#   r@   r   )rI   rJ   rK   rL   rM   r   r   r|   	Timedeltar)   r   r+   r,   rn   	r-   r   r   rO   r6   r7   r.   r   r   r   r   r   test_quantile_box  sZ   



	

z'TestDataFrameQuantile.test_quantile_boxc                 C   s  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 )Nr   r   r   r   r   r   r   r   )rV   rq   rW   rr   r   r   AaBbCcr   r!   Fr[   r   r   )r   r   r|   NaTr   listr)   r   r+   r,   rn   )r-   r.   r   r   r   r   r   test_quantile_box_nat  sz   





&*




z+TestDataFrameQuantile.test_quantile_box_natc           	      C   s  |\}}|dkr|r|j tjjdd ttddtddd}tj|j	d< |j
d||d	}td
|dkr:dnd
gddgdd}t|| |j
ddg||d	}td
dg|dkr_ddgn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}|dkrtj|j	d< t|| tj|d< |j
d||d	}td
tjgddgdd}t|| |j
ddg||d	}td
dgtjtjgdddgd}t|| d S )Nr   r\   rA   r   g      @r   )r   r   r!   r   rs   r   ri   rq   rr   r?   rj   rt   g      
@rf   rg   r$   r"   r   r
   )r   r   )rI   rJ   rK   rL   rM   r   r9   aranger   rm   r)   r   r+   r,   rn   r   r   r   r   test_quantile_nanT  sJ   
"z'TestDataFrameQuantile.test_quantile_nanc           	      C   sT  |\}}|dkr|r|j tjjdd 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 )Nr   r\   rA   rq   r!   FrZ   r?   rf   z
2012-01-01z
2012-01-02z
2012-01-03r   rr   r   )rI   rJ   rK   rL   rM   r   r|   r   r)   r   r+   r,   rn   r   r   r   r   r   test_quantile_nat  sH   

z'TestDataFrameQuantile.test_quantile_natc                 C   s   |\}}t ddgdd}|jd||d}ttjtjgddgdd}t|| |jdg||d}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 )Nrq   rr   r   r   r!   r   r?   )rG   r@   r   rg   r   )r   r)   r   r9   r   r+   r,   rn   r-   r   r6   r7   r.   r   r   r   r   r   "test_quantile_empty_no_rows_floats  s   z8TestDataFrameQuantile.test_quantile_empty_no_rows_floatsc                 C   sR   |\}}t ddgdd}|jd||d}ttjtjgddgdd}t|| d S )Nrq   rr   r_   r   r!   r   r?   )r   r)   r   r9   r   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 )
Nrq   rr   r   r   r!   FrZ   r   z
US/Central)r   r)   r   r|   r   r+   r,   dttz_localizer*   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_|jdd||d}tg g dtjd}d|j	_t
|| |jdgd||d}t g dgg d	}d|j_t
|| d S )
Nz1/1/18r   r   zcaptain tightpantsr!   TrZ   r   r   )r   r|   r}   rG   r#   r)   r   r9   r   r@   r+   r,   rn   )r-   r   r6   r7   r.   r0   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	 |rPd
|jd< |jd |d d ksEJ |jd d
ksNJ d S d
|j	d< |jd |d d ksbJ |jd d
kskJ d S )Nr   r   r   r   rV   r   r   FrZ   c   r   )r   r   )
r   r9   randomrandnlen_mgrblocksr)   rm   values)r-   rO   r   using_copy_on_writer6   r7   r.   r   r   r   r   test_quantile_item_cache  s   

z.TestDataFrameQuantile.test_quantile_item_cachec                 C   sJ   t jtdd ttdjddd W d    d S 1 sw   Y  d S )NzInvalid method: foor   r   r!   r   )r7   rK   r   r   r   ranger)   r-   r   r   r   test_invalid_method  s   "z)TestDataFrameQuantile.test_invalid_methodc                 C   sL   t jtdd ttdjdddd W d    d S 1 sw   Y  d S )NzInvalid interpolation: foor   r   r!   r   r   )r7   r6   r   r   r   r   r    test_table_invalid_interpolation  s   "z6TestDataFrameQuantile.test_table_invalid_interpolationN)(__name__
__module____qualname__rK   rL   parametrizer   r   r|   arraysSparseArrayr1   rP   rU   rb   rp   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      sb    

-*9
1
	
9L1/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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*d+g g d#d+g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TestQuantileExtensionDtyper8   z#raises when trying to add IntervalsrA   )marksrv   	   r   )ry   freqrw   rx   z1 Dayr   Int64r'   Float64c                 C   s
   t | jS )N)strr(   r   r   r   r   r   0  r   z#TestQuantileExtensionDtype.<lambda>r   c                 C   s   |j }d|_|S NrV   )r   r#   )r-   r   idxr   r   r   r@   $  s   z TestQuantileExtensionDtype.indexc                 C   s*   ||  }|tu rd|_|S dg|_|S r   )copyr   r#   rG   )r-   r@   frame_or_seriesobjr   r   r   r   8  s   zTestQuantileExtensionDtype.objc                 C   s*   t |tr||}|S |j|dd}|S )NFr[   )
isinstancer   r)   )r-   r   qsr0   r   r   r   compute_quantileC  s
   

z+TestQuantileExtensionDtype.compute_quantilec                 C   s   t jt|t jd}t j| |j| }g d}| ||}tr6|j	dkr6d}t
jj|td}|j| |j	}	|j	dkr@d}	t|d |d	 |d
 g|	|dd}
t||
}
t||
 d S )Nr'   r!   r   r   r   Cfailed on Numpy 1.20.3; TypeError: data type 'Int64' not understoodrB   r   r   r   r   r   r   rV   r(   r@   r#   )r9   r   r   intpr   shufflerm   r   r   r(   rK   rL   rM   r   rI   rJ   r   typer+   assert_equalr-   r   r   r@   indexerr   r0   r   rL   	exp_dtyper/   r   r   r   test_quantile_eaJ  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   rV   r  )	_na_valuerm   r9   r   r   r  r   r  r   r   r(   r  r+   r  )r-   r   r@   r
  r   r0   r/   r   r   r   test_quantile_ea_with_nae  s   
z3TestQuantileExtensionDtype.test_quantile_ea_with_nac                 C   s   |j |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  )r   r   r   T)
allow_fill
fill_valuerV   r?   )r  rm   r9   alldtypesr(   r   r   r  r   r  r   taker   r  r+   r  )r-   r   r   r@   r
  r   r0   r/   r   r   r   test_quantile_ea_all_nax  s   
z2TestQuantileExtensionDtype.test_quantile_ea_all_nac                 C   s   t jt|t jd}t j| |j| }d}| ||}tr4|j	dkr4d}t
jj|td}|j| |j	}	|j	dkr>d}	td|d	 i|	dd
}
t|trZ|
d }
||
ksXJ d S t||
 d S )Nr'   r!   r   r  r  r   r   rV   r   )r(   r#   )r9   r   r   r  r   r  rm   r   r   r(   rK   rL   rM   r   rI   rJ   r   r   r+   r,   r	  r   r   r   test_quantile_ea_scalar  s"   


z2TestQuantileExtensionDtype.test_quantile_ea_scalarz*dtype, expected_data, expected_index, axisr   r   r_   rq   rr   r   c                 C   sB   t ddg|d}|jd|d}t|dt|dd}t|| d S )Nrq   rr   r   r!   r   r   r#   r@   r(   r   r)   r   r   r+   r,   )r-   r(   expected_dataexpected_indexr4   r.   r0   r/   r   r   r   test_empty_numeric  s   z-TestQuantileExtensionDtype.test_empty_numericz:dtype, expected_data, expected_index, axis, expected_dtyper   c           	      C   sD   t ddg|d}|jd|dd}t|dt||d}t|| d S )Nrq   rr   r   r!   Fr   r  r  )	r-   r(   r  r  r4   expected_dtyper.   r0   r/   r   r   r   test_empty_datelike  s   z.TestQuantileExtensionDtype.test_empty_datelikez#expected_data, expected_index, axisr   c                 C   sf   t tddgddgtddgd}|ddg jd	|d
d}t|d	t|tjd}t	|| d S )Nr   r   r   r   r   r   rq   r   r!   Tr   r  )
r   r|   r   r)   r   r   r9   r   r+   r,   )r-   r  r  r4   r.   r0   r/   r   r   r   test_datelike_numeric_only  s   	z5TestQuantileExtensionDtype.test_datelike_numeric_onlyN)r   r   r   rK   fixturer   r|   IntervalIndexfrom_breaksr   rL   rM   period_ranger}   timedelta_ranger   r9   r   r@   r   r   r  r  r  r  r   r   r  r   r  r  r   r   r   r   r      sZ    





		
r   )numpyr9   rK   pandas.compat.numpyr   r   pandasr|   r   r   r   r   pandas._testing_testingr+   r  r   r   r   r   r   r   r   <module>   s$    
      