o
    vh                     @   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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)using_string_dtype)	DataFrameIndexSeries	Timestamplinearsinglenearesttablec                 C   s
   d | S )N-)joinx r   f/var/www/html/hyperkenya/venv/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 |tj	j
|d	d
 |j|jksFJ  j ddd||d}t fdd jD  jdd}|dkrlt|| d S t|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   )r8   r9   loc)r:   dater<   r   r   r=   O   s    )r(   r   columnsr*   r+   assert_index_equalr?   applymarkerpytestmarkxfailr"   )	r,   datetime_framer   using_array_managerr   r5   r6   r/   r.   r   r<   r   test_quantile2   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   yr1   r   Tr2   r   rP   )r   r(   r8   isnan)r,   r   r5   r6   qr   r   r   
test_empty_   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=|tj	j
d
d t|| d S )N)ArT   BrU   )r   r   r   r   )col1col2r    Tr4   r5   r6   r4   r	   r
   Axis name incorrectly set.r@   )r   r(   medianrenamer)   r8   int64rH   rI   rJ   rK   r*   r+   )	r,   r   r   rM   r5   r6   r-   rsxpr   r   r   test_non_numeric_exclusionf   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rA|rA|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   rT   rU   r?   r    r   r3   r5   r6   r         @r   r>   r	   r
   rZ   r@         ?r   g      ?rg   g      @r   g      @r         ?T)check_index_type)r   r(   r   r)   r8   r]   rH   rI   rJ   rK   r*   r+   ilocassert_frame_equal	r,   r   r   rM   r5   r6   r-   r/   r.   r   r   r   	test_axiss   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=|tjj	dd t
|| d S )Nra   )abr   r    r   Tr2         @      @r   r>   r	   r
   rZ   r@   )r   r(   r   r)   r8   r]   rH   rI   rJ   rK   r*   r+   rm   r   r   r   test_axis_numeric_only_true   s   
z1TestDataFrameQuantile.test_axis_numeric_only_truec                 C   sx   |\}}t jdddd}t|}t|}|jd||d}	tdgdd	d
}
|dkr4|r4|tjjdd t	
|	|
 d S )N
2016-01-01r   
US/PacificperiodstzFrX   z2016-01-02 00:00:00r    datetime64[ns, US/Pacific])r"   r'   r
   rZ   r@   )pd
date_ranger   r   r(   rH   rI   rJ   rK   r*   r+   )r,   r   r   rM   r5   r6   dtiserr-   r/   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rB|rB|tjjdd t	
|| d}	tjt|	d |jdd	dd W d    d S 1 sew   Y  d S )Nra   r$   rq   rr   20130101r   rw   )foobarbaz)rT   rU   CDr    r   Tr2   rf   r!   r	   r
   rZ   r@   z>'<' not supported between instances of 'Timestamp' and 'float'matchFr3   r4   )r   rz   r{   r(   r   rH   rI   rJ   rK   r*   r+   raises	TypeError
r,   r   r   rM   r5   r6   r-   r/   r.   msgr   r   r   test_quantile_axis_mixed   s*   
"z.TestDataFrameQuantile.test_quantile_axis_mixedc           
      C   s  |\}}|dkr|r| 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rA|tj	}t
|| |jdd||d
}|dkrZ|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
   rZ   r@   ra   rb   rc   rd   r    r   re   r$   rq   rT   rU   r>   r	   r?   r   rf   rF   z*No axis named -1 for object type DataFramer   r1   z.No axis named column for object type DataFramecolumnr3   )rH   rI   rJ   rK   r   r(   r   r)   r8   r]   r*   r+   r   
ValueErrorr   r   r   r   test_quantile_axis_parameter   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 )&Nra   rb   rc   rd   r    r   r	   r3   r5   r>   r   )r3   r6   r]   r?   r"   r'   r#   r$   rq   r   float64rh   lowerr#   r$   rq   rO   r1   higherr   rP   r   r   r   r   r   r   r   r   r   ro   rp   crF   ri   midpoint)r5   r   r   r   r$   r$   r$   r?   rF   )
r   r(   r   r*   r+   r8   r9   arrayrl   rQ   )r,   r-   r/   r.   exprR   r   r   r   test_quantile_interpolation   sP    "z1TestDataFrameQuantile.test_quantile_interpolationc                 C   s6   |}|j ddddd}|d t|d dksJ d S )Nr1   r   Tr   )r3   r4   r5   rT   r7   )r(   r8   r9   )r,   rL   r-   rR   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 )Nr1   rT   r7   r   r   r   )r(   r8   r9   r*   r+   )r,   	int_framer-   rR   q1r   r   r   test_quantile_interpolation_int0  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rJ|rJ|tjjdd t	
|| d S )Nr   r   r   r   r   ri   r    r5   r6   r   r   r   r	   r
   rZ   r@   r   r(   r)   r8   r]   rH   rI   rJ   rK   r*   rl   rm   r   r   r   test_quantile_multi=  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rJ|rJ|tjjdd t	
|| d S )Nr   r   r   r   r   ri   r    r   re   r   r   )r   r   r   r   r	   r
   rZ   r@   r   rm   r   r   r   test_quantile_multi_axis_1L  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 )NrO   r1   rB   r   re   rd   )r   r(   r8   nanr*   rl   )r,   r   r5   r6   r/   r.   r   r   r   test_quantile_multi_empty[  s   z/TestDataFrameQuantile.test_quantile_multi_emptyc                 C   s  t ddg|}t|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	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| 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| d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      ro   rp   r    TrY   rg   rp   r>   Fz2010-07-02 12:00:00ro   rd   2012r   r   r   z2011-07-02 12:00:00M8[]r   r?   rF   r'   r?   r'   r"   r   )rz   to_datetimeas_unitr   r(   r   r*   r+   r   rl   r8   r   )r,   unitr|   r-   r/   r.   r   r   r   test_quantile_datetimee  sN   

z,TestDataFrameQuantile.test_quantile_datetimer'   )datetime64[ns]ry   z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 )
Nro   rp   rF   r'   r    r   Fr2   r   r   )r   r(   r   r*   r+   rl   )r,   r'   r   r5   r6   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   )rI   r   r   r(   )r,   r   rL   r   r   r5   r6   r   r   r   test_quantile_invalid  s
   "z+TestDataFrameQuantile.test_quantile_invalidc           	      C   s  |\}}|dkr|r| 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
   rZ   r@   
2011-01-01
2011-01-02
2011-01-03
US/Easternrx   1 days2 days3 daysrT   rU   r   r    FrX   r"   r?   r   )rH   rI   rJ   rK   r   r   rz   	Timedeltar(   r   r*   r+   rl   	r,   r   r   rM   r5   r6   r-   r   r   r   r   r   test_quantile_box  sV   



	

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   )rT   ro   rU   rp   r   r   AaBbCcr   r    FrY   r   r   )r   r   rz   NaTr   listr(   r   r*   r+   rl   )r,   r-   r   r   r   r   r   test_quantile_box_nat  sz   





&*




z+TestDataFrameQuantile.test_quantile_box_natc           	      C   s  |\}}|dkr|r| tjjdd ttddtddd}tj|jd< |j	d||d	}t
d
|dkr9d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
   rZ   r@   r   g      @r   )r   r   r    r   rq   r   rg   ro   rp   r>   rh   rr   g      
@rd   re   r#   r!   r   r	   )r   r   )rH   rI   rJ   rK   r   r8   aranger   rk   r(   r   r*   r+   rl   r   r   r   r   test_quantile_nanC  sF   
"z'TestDataFrameQuantile.test_quantile_nanc           
      C   s  |\}}|dkr|r| tjjdd tdtjtjtjgid| dd}|jdd	||d
}ttjgdgdd| dd}	t	
||	 |jdgd	||d
}tdtjgidgd| dd}	t	||	 ttdtdtdgtjtjtjgdd| dd}|jdd	||d
}ttdtjgddgdd| dd}	t	
||	 |jdgd	||d
}ttdtjggdgddgd| dd}	t	||	 d S )Nr
   rZ   r@   ro   r   r   r&   r    FrX   r   )r?   r'   z
2012-01-01z
2012-01-02z
2012-01-03r   rp   r   )rH   rI   rJ   rK   r   rz   r   r(   r   r*   r+   rl   r   )
r,   r   r   rM   r   r5   r6   r-   r   r   r   r   r   test_quantile_natr  sV   $
 



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 )Nro   rp   r   r   r    r   r>   )rF   r?   r   re   r   )r   r(   r   r8   r   r*   r+   rl   r,   r   r5   r6   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 )Nro   rp   r]   r   r    r   r>   )r   r(   r   r8   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
}|d
krfd}tjt|d |jtjdd}W d    n1 saw   Y  t|| |d jd	|d< |jdd||d}|	|d j}t|| d S )Nro   rp   r   r   r    FrX   r   z
US/Centralr	   z.The 'downcast' keyword in fillna is deprecatedr   )downcast)r   r(   r   rz   r   r*   r+   dttz_localizer)   objectassert_produces_warningFutureWarningfillnar8   r   r'   )r,   r   r5   r6   r-   r   r   r   r   r   r    test_quantile_empty_no_rows_dt64  s4   
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    TrX   r   r   )r   rz   r{   rF   r"   r(   r   r8   r   r?   r*   r+   rl   )r,   r   r5   r6   r-   r/   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 |rRd	|j	d
< |j	d |d d
 ksGJ |j	d d	ksPJ d S d	|j
d
< |j	d |d d
 ksdJ |j	d d	ksmJ d S )Nr   )r   r   r   r   rT   r   FrX   c   r   )r   r   )r   r8   randomdefault_rngstandard_normallen_mgrblocksr(   rk   values)r,   rM   r   using_copy_on_writer5   r6   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   )r6   rI   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   )r6   r5   r   r   r   r   r    test_table_invalid_interpolation  s   "z6TestDataFrameQuantile.test_table_invalid_interpolationN)(__name__
__module____qualname__rI   rJ   parametrizer   r   rz   arraysSparseArrayr0   rN   rS   r`   rn   rs   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
5
	
7L/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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
je d!d"d#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
je d!d"d#ej
d-d.g g d&d.gd.ejejgd(d)gd*d.ggd/d0 Zej
je d!d"d#ej
d1ejejge	d2d&gg g d*ggd3d4 Zd5S )6TestQuantileExtensionDtyper7   z#raises when trying to add Intervalsr@   )marksrt   	   r   )rw   freqru   rv   z1 Dayr   Int64r&   Float64c                 C   s
   t | jS )N)strr'   r   r   r   r   r   +  r   z#TestQuantileExtensionDtype.<lambda>r   c                 C   s   |j }d|_|S NrT   )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"   rF   )r,   r?   frame_or_seriesobjr   r   r   r  3  s   zTestQuantileExtensionDtype.objc                 C   s*   t |tr||}|S |j|dd}|S )NFrY   )
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d| |j| }g d}| ||}|j	}|j	dkr,d}t
|d |d |d g||d	d
}t||}t|| d S )Nr&   r   r    r   r   r   r   r   r   r   rT   r'   r?   r"   )r8   r   r   intpr   r   shufflerk   r  r'   r   typer*   assert_equal	r,   r   r  r?   indexerr  r/   	exp_dtyper.   r   r   r   test_quantile_eaE  s   

z+TestQuantileExtensionDtype.test_quantile_eac                 C   s   |j |jd< |j |jd< tjt|tjd}tjd| |j| }g d}| 	||}t
|d |d |d g|j|d	d
}t||}t|| d S )Nr   r   r&   r   r  r   r   rT   r	  )	_na_valuerk   r8   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_with_na[  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	
d| |j| }g d}| ||}|jg dd|j d}t||dd}t||}t|| d S )	Nr&   r   r  )r   r   r   T)
allow_fill
fill_valuerT   r>   )r  rk   r8   alldtypesr'   r   r   r
  r   r   r  r  taker   r  r*   r  )r,   r   r  r?   r  r  r/   r.   r   r   r   test_quantile_ea_all_nan  s   
z2TestQuantileExtensionDtype.test_quantile_ea_all_nac           	      C   s   t jt|t jd}t jd| |j| }d}| ||}|j	}|j	dkr*d}t
d|d i|dd}t|t
rF|d }||ksDJ d S t|| d S )	Nr&   r   r    r   r   rT   r   )r'   r"   )r8   r   r   r
  r   r   r  rk   r  r'   r   r  r*   r+   r  r   r   r   test_quantile_ea_scalar  s   


z2TestQuantileExtensionDtype.test_quantile_ea_scalarzTODO(infer_string)F)rA   strictz*dtype, expected_data, expected_index, axisr   r   r]   ro   rp   r   c                 C   sB   t ddg|d}|jd|d}t|dt|dd}t|| d S )Nro   rp   r   r    r   r   r"   r?   r'   r   r(   r   r   r*   r+   )r,   r'   expected_dataexpected_indexr3   r-   r/   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 )Nro   rp   r   r    Fr   r  r  )	r,   r'   r  r   r3   expected_dtyper-   r/   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   ro   r   r    Tr   r  )
r   rz   r   r(   r   r   r8   r   r*   r+   )r,   r  r   r3   r-   r/   r.   r   r   r   test_datelike_numeric_only  s   
z5TestQuantileExtensionDtype.test_datelike_numeric_onlyN) r   r   r   rI   fixturer   rz   IntervalIndexfrom_breaksr   rJ   rK   period_ranger{   timedelta_ranger   r8   r   r?   r  r  r  r  r  r  r   r   r   r!  r   r#  r$  r   r   r   r   r     s`    




		r   )numpyr8   rI   pandas._configr   pandasrz   r   r   r   r   pandas._testing_testingr*   r%  r   r   r   r   r   r   r   <module>   s$    
      	