o
    ҷh@                     @   s  d dl Zd dlZd dlZd dlmZmZ d dlmZ	 ej
dg dej
dg dg dfg dg d	fg dg d	fg d
g dfdejdejdgdejdejdgfejdejdejgejdejdejgfejddddejddddddd fejdddddejddddddd dfejgd ejgd fg	ej
dg ddd Zdd Zdd Zdd  Zd!d" Zej
d#d$d%gej
d&d gd d'ggej
dd(d)ggd*d+ Zd,d- Zd.d/ Zd0d1 Zej
d2dejdejged3ddgd4dgfdejddged3ddgd4d5gfd6d7d7ejged3d6d7gd d8gfd gd9gd gd:gfg g ejg d;d<ejg d;d<fgd=d> Zej
d?ejg d@dA dBd<ejg dCdA dDd<gej
dd(g dEgdFdG Zej
dd(g dEgej
dHdIdJgdKdL ZdMdN ZdOdP Zej
dQg dRdSdT Zej
ddUdVgdWdX Z ej
dYdZd[gd\d] Z!d^d_ Z"d`da Z#dbdc Z$ddde Z%dfdg Z&dS )h    N)	DataFrameIndexinterpolation)linearlowerhighernearestmidpointza_vals,b_vals)               )r   r   r   r   r
   )r
   r   r   r   r   r   r   r
   )      ?       @      @      @      @)r   r   r   r   r   r   r   r   r   r   z1/1/18Dr   )freqperiodssq)r         ?      ?      ?r
   c                 C   s  | dkr|dkrt |tr|g dkr|jtjjdd tt	|t	|g}t	|j
|| d}t	|j
|| d}tdgt| dgt|  |d	}t||gd
gtddgddd}	|jjdkrw|	jjd jdkrw|	|j}	|dj
|| d}
t|
|	 d S )Nr   r   r   zBUnclear numpy expectation for nearest result with equidistant data)reason)r   abkeyvalr#   r"   name)columnsindexMr   )
isinstancelistnode
add_markerpytestmarkxfailpdconcatSeriesquantiler   lenr   dtypekinddtypesvaluesastypegroupbytmassert_frame_equal)r   a_valsb_valsr   requestall_vals
a_expected
b_expecteddfexpectedresult rF   U/var/www/html/venv/lib/python3.10/site-packages/pandas/tests/groupby/test_quantile.pytest_quantile   s*   &rH   c                  C   s   t dg di} tjg dtjd}| |dg}tjddgdgg}t dddgi|d	}t	
|| t g d
g dd} tjddgddgg}tjg dtjd}| |ddg}t g dg dd|d	}t	
|| d S )NAr   r
   r   r   r   )r   r   r
   r
   r
   r5   r   r   r
         @r'   )r   r
   r   r   )r   r         rI   Br   )r   r   r
   r
   )r   r   g      @g      @)g      @g      @g      @g      @r   nparrayint64r:   r3   r0   
MultiIndexfrom_productr;   r<   )rC   r"   rE   r'   rD   rF   rF   rG   test_quantile_arrayI   s   rX   c                  C   s   t jdjdddt jd} t| tdd}|dd	d
g}tg dg ddt	j
jg dd	d
ggdd gdd}t|| d S )Nr   r   r   )
   r   )sizer5   ABCr&   rI   333333?ffffff?)
r   r   gffffff@g@r]   r^   g	@r   r]   r^   )
r   r   gffffff?g@r]   r^   @r   333333?gffffff@)rQ   CrJ   namesrM   )rS   randomdefault_rngintegersrU   r   r*   r:   r3   r0   rV   rW   r;   r<   )arrrC   rE   rD   rF   rF   rG   test_quantile_array2^   s   	rh   c                  C   s   t g dg dd} tjg dtjd}| j|ddg d}t g d	g d
dtjddgg dgd}t	
|| | j|ddddg}t g dg ddtjddgddggd}t	
|| d S )Nr   r
   r   r   r   r   rP   )r
   r   r
   rK   F)sort)r   r   r   )r   r         ?r   r   r   )      @r         @r   r   r   r
   r   rM   r   r   )rl   r   r   r   )rn   rm   r   r   rR   )rC   r"   rE   rD   rF   rF   rG   test_quantile_array_no_sorto   s   ro   c                  C   s|   t g dg dg dg dd} | ddgdd	g}tjjg d
g dd}t g dg dd|d}t|| d S )Nri   rj   )r   r   r   )r   r   r    )rI   rQ   cdrp   rq   r   r   ))r   r   r   )r   r   r   )r   r    r   )r   r    r   )rp   rq   Nrb   )r   r   r   r   )g      
@g      @r   r   rP   rM   )r   r:   r3   r0   rV   from_tuplesr;   r<   )rC   rE   r'   rD   rF   rF   rG   #test_quantile_array_multiple_levels   s   rs   
frame_size)r   r   )d   rY   r:   r
   r   g333333?c                    s  | \}t tfddt|D td}tt|dgt  g }fddtt|dD gt  tttt|d g }tj	|| d g d} fddtt|dD } fddtD }	t |||	d	}
|
 }t||
 d S )
Nc                    s   g | ]	} |d  g qS )r   rF   ).0_)ncolrF   rG   
<listcomp>       zJtest_groupby_quantile_with_arraylike_q_and_int_columns.<locals>.<listcomp>r\   r   c                    s   g | ]	} D ]}|qqS rF   rF   rv   xrw   r   rF   rG   ry      rz   )levelscodesrc   c                    s,   g | ]}D ]}t |gt   qqS rF   )floatr4   r{   r:   rx   r   rF   rG   ry      s
    c                    s   g | ]}| vr|qS rF   rF   )rv   r|   )r:   rF   rG   ry      s    r'   r&   )r   rS   rT   rangearangeminr4   r*   r0   rV   r:   r3   r;   r<   )rt   r:   r   nrowrC   
idx_levels	idx_codesexpected_indexexpected_valuesexpected_columnsrD   rE   rF   r   rG   6test_groupby_quantile_with_arraylike_q_and_int_columns   s$   ( $r   c                  C   sd   t ddgddgddggddgd} tjtdd	 | d  W d    d S 1 s+w   Y  d S )
Nfoor   r    rp   r"   r#   r\   z+cannot be performed against 'object' dtypesmatch)r   r-   raises	TypeErrorr:   r3   rC   rF   rF   rG   test_quantile_raises   s   ""r   c                  C   s   t g dtdd} | g d}tjtdd |d W d    n1 s)w   Y  tjtdd |d W d    d S 1 sFw   Y  d S )	N)r   r   r   r
   r
   r
   rN   r   r    zGot '50.0' insteadr   2   zGot '-1.0' insteadr   )r   r   r:   r-   r   
ValueErrorr3   )rC   grF   rF   rG   $test_quantile_out_of_bounds_q_raises   s   "r   c                  C   sH   t dt jdg} t| tdd}|d}tdD ]}|  qd S )Nr   r   r!   r"   ru   )rS   rT   nanr   r   r:   r3   )datarC   grprw   rF   rF   rG   /test_quantile_missing_group_values_no_segfaults   s   

r   z$key, val, expected_key, expected_valr           rL   r   r    rl   *   g      E@float64rK   c                 C   s^   t | |d}t |t|dddgd}|d}|d}t|| | }t|| d S )Nr!   r"   r$   r#   r   r   )r   r   r:   r3   r;   r<   )r"   r#   expected_keyexpected_valrC   rD   r   rE   rF   rF   rG   2test_quantile_missing_group_values_correct_results   s   

r   r8   )r
   r   Nr   Int64)TFNbooleanr   r   r   c                 C   s   t dgd dgd  | d}|dd |}t|tr1tjjddg|fdd gd}g d}ntddgdd	}d
g}tj	|d |ddd}t
|| d S )Nr|   r   yr   r   r    rb   r   r$   r   r   Float64r'   r%   r5   )r   r:   r3   r)   r*   r0   rV   rW   r   r2   r;   assert_series_equal)r8   r   rC   rE   idxtrue_quantilesrD   rF   rF   rG   $test_groupby_quantile_nullable_array   s   


r   numeric_onlyTFc                 C   s   t dgdgdgd}|r*|dj| |d}|ddg | }t|| d S tjtdd	 |dj| |d W d    d S 1 sGw   Y  d S )
Nr
   r   r|   )r   r    rp   r   )r   r    z7'quantile' cannot be performed against 'object' dtypes!r   )r   r:   r3   r;   r<   r-   r   r   )r   r   rC   rE   rD   rF   rF   rG   -test_groupby_quantile_raises_on_invalid_dtype   s   "r   c                 C   s   t ddgdtjgd| d}|dd d}tdg| dd	}| d
v r'| }nd }tjdg||dd}t	|| |dd ddg}tjdgd tj
j|ddgfdd gdd|d}t	|| d S )Nr
   皙?r|   r   rK   r|   r   r   r   )r5   r%   )Float32r   r5   r'   r%   r   r   rb   r   )r   rS   r   r:   r3   r   r0   r2   r;   r   rV   rW   )any_float_dtyperC   rE   	exp_indexexpected_dtyperD   rF   rF   rG   test_groupby_quantile_NA_float  s    r   c                 C   s   t ddgddgd| d}|dd d}tjd	gd
tdgd| ddd}t|| |dd}t dd	id
tdgd| dd}t|| d S )Nr
   r   r   r   rK   r|   r   r   rm   r   )r%   r5   r   r5   r'   )	r   r:   r3   r0   r2   r   r;   r   r<   )any_int_ea_dtyperC   rE   rD   rF   rF   rG   test_groupby_quantile_NA_int$  s   r   zinterpolation, val1, val2))r   r   r   )r   r   r   )r   r   r   c                 C   s   t g ddddtjgd|d}|djdd	g| d
}t d||tjtjgi|tjjtjg d|dg dgdd gdd}t	|| d S )Nr
   r
   r
   r   r
   r   r   r   rK   r   r   r^   r   r   r    r
   r
   r   r   )r   r^   r   r^   rb   r   
r   r0   NAr:   r3   rV   from_arraysr2   r;   r<   )r   val1val2any_numeric_ea_dtyperC   rE   rD   rF   rF   rG   )test_groupby_quantile_all_na_group_masked7  s   r   r	   r   c                 C   s   t g ddddtjgd|d}|djdd	g| d
}|dkr#|}nd}t dddtjtjgi|tjjtjg d|dg dgdd gdd}t	|| d S )Nr   r
   r   r   r   rK   r   r   r   r   r   r   r    r   rL   r   )r   r   r   r   rb   r   r   )r   r   rC   rE   r   rD   rF   rF   rG   0test_groupby_quantile_all_na_group_masked_interpM  s$   r   r5   r   r   c                 C   sj   t ddgtjgd d| d}|dd d}tjtjg| tdg| ddd	}d|j	_
t|| d S )
Nr
   r   r   rK   r|   r   r   r   r   )r   r0   r   r:   r3   r2   rS   r   r   r'   r%   r;   r   )r5   rC   rE   rD   rF   rF   rG   "test_groupby_quantile_allNA_columnj  s   r   c                  C   sn   t tjtdddg dd} | dd}t dtd	td
gitddgddd}t	
|| d S )Nr   r   )unitr   )valuegroupr   gGz?r   z0 days 00:00:00.990000z0 days 00:00:02.990000r
   r   r$   rM   )r   r0   to_timedeltarS   r   r:   r3   	Timedeltar   r;   r<   rC   rE   rD   rF   rF   rG   test_groupby_timedelta_quantilev  s   	r   c                  C   s   t tdddtdtjtdddd} d	}tjt	|d
 | j
ddd}W d    n1 s2w   Y  |jddgd}t g dg dg dgtdtjjg ddd gdd}t|| d S )N   r   r   XYZABABcolr$   r   z+DataFrame.groupby with axis=1 is deprecatedr   r
   )axis皙?r   r}   )g?g?r_   gffffff?)gffffff@g@gffffff@g@)g333333#@g @g333333%@g"@)rI   r   rI   r   rQ   r   rQ   r   rb   )r   rS   r   reshaper*   r0   r2   r;   assert_produces_warningFutureWarningr:   r3   rV   rr   r<   )rC   msggbrE   rD   rF   rF   rG   test_columns_groupby_quantile  s*   r   c               	   C   s   t tjddddddttddttdd	d
} | dddg}t ddddddddddddgtjj	t
ddft
ddft
ddft
ddfgddd}t|| d S )Nz2020-04-19 00:00:001Tru   UTC)startr   r   tz1Hr
   e      )	timestampcategoryr   r   r   r   g)@g333333\@)r   r   gH@gfffffb@g333333Q@ge@gW@gfffffh@z2020-04-19 00:00:00+00:00z2020-04-19 01:00:00+00:00)r   Nrb   rM   )r   r0   
date_rangefloorr*   r   r:   r3   rV   rr   	Timestampr;   r<   r   rF   rF   rG   test_timestamp_groupby_quantile  s4   
r   c                     s   t jddd} t | }|  | d d< | d d< | | d   d	< t j jd
< t	t
dd} |}|d} fddtdD }t|j }|jt|_t|| d S )Nz
2016-01-01i  )r   z
US/Pacificr
   r   r   r   r   r   r      r   c                    s$   i | ]}| j |d d dqS )Nr   r   )ilocr3   )rv   ir   rF   rG   
<dictcomp>  s   $ z7test_groupby_quantile_dt64tz_period.<locals>.<dictcomp>)r0   r   r2   to_frametz_localize	to_periodNaTr   rS   tiler   r:   r3   r   r   Tinfer_objectsr'   r9   intr;   r<   )dtiserbyr   rE   exprD   rF   r   rG   #test_groupby_quantile_dt64tz_period  s   


r   c                  C   s   t jjg dg dd} t jtd| d}|jdddd	d
g}t jjg ddd gd}t jg d|d}t|| t j	j
jddgd	d
gg}t|jj| d S )N))r   r   rQ   )r   r   rI   )r   r    rQ   )r   r    rI   )r
   r   rQ   )r
   r   rI   )r
   r    rQ   )r
   r    rI   )samplecat0cat1rb      rM   r   F)levelrk   r   r   )r   r   r   r   )r`   g333333@g@g333333@rQ   rI   )r0   rV   rr   r2   r   r:   r3   r;   r   coreindexesfrozen
FrozenListassert_equalr'   r~   )indr   rE   qindrD   expected_levelsrF   rF   rG   +test_groupby_quantile_nonmulti_levels_order  s   
r  )'numpyrS   r-   pandasr0   r   r   pandas._testing_testingr;   r.   parametrizer   r   as_unitrH   rX   rh   ro   rs   r   r   r   r   r   rT   r   r   r   r   r   r   r   r   r   r   r   r   r  rF   rF   rF   rG   <module>   s    "& "  




#