o
    թZh?                     @   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|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rv|	jjd jdkrv|	|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listZapplymarkerpytestmarkZxfailpdconcatSeriesquantiler   lenr   dtypekindZdtypesvaluesastypegroupbytmassert_frame_equal)r   Za_valsZb_valsr   requestZall_valsZ
a_expectedZ
b_expecteddfexpectedresult r=   a/var/www/html/lang_env/lib/python3.10/site-packages/pandas/tests/groupby/methods/test_quantile.pytest_quantile   s*   &r?   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
   r2   r   r   r
         @r'   )r   r
   r   r   )r   r         r@   Br   )r   r   r
   r
   )r   r   g      @g      @)g      @g      @g      @g      @r   nparrayint64r6   r0   r-   
MultiIndexfrom_productr7   r8   )r:   r"   r<   r'   r;   r=   r=   r>   test_quantile_arrayI   s   rO   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   )sizer2   ABCr&   r@   333333?ffffff?)
r   r   gffffff@g@rT   rU   g	@r   rT   rU   )
r   r   gffffff?g@rT   rU   @r   333333?gffffff@)rH   CrA   namesrD   )rJ   randomZdefault_rngZintegersrL   r   r*   r6   r0   r-   rM   rN   r7   r8   )Zarrr:   r<   r;   r=   r=   r>   test_quantile_array2^   s   	r\   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   rG   )r
   r   r
   rB   F)sort)r   r   r   )r   r         ?r   r   r   )      @r         @r   r   r   r
   r   rD   r   r   )r`   r   r   r   )rb   ra   r   r   rI   )r:   r"   r<   r;   r=   r=   r>   test_quantile_array_no_sorto   s   rc   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 )Nr]   r^   )r   r   r   )r   r   r    )r@   rH   cdrd   re   r   r   ))r   r   r   )r   r   r   )r   r    r   )r   r    r   )rd   re   NrY   )r   r   r   r   )g      
@g      @r   r   rG   rD   )r   r6   r0   r-   rM   from_tuplesr7   r8   )r:   r<   r'   r;   r=   r=   r>   #test_quantile_array_multiple_levels   s   rg   
frame_size)r   r   )d   rP   r6   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   r=   ).0_)ncolr=   r>   
<listcomp>       zJtest_groupby_quantile_with_arraylike_q_and_int_columns.<locals>.<listcomp>rS   r   c                    s   g | ]	} D ]}|qqS r=   r=   rj   xrk   r   r=   r>   rm      rn   )levelscodesrZ   c                    s,   g | ]}D ]}t |gt   qqS r=   )floatr1   ro   r6   rl   r   r=   r>   rm      s
    c                    s   g | ]}| vr|qS r=   r=   )rj   rp   )r6   r=   r>   rm      s    r'   r&   )r   rJ   rK   rangearangeminr1   r*   r-   rM   r6   r0   r7   r8   )rh   r6   r   Znrowr:   Z
idx_levelsZ	idx_codesZexpected_indexZexpected_valuesZexpected_columnsr;   r<   r=   ru   r>   6test_groupby_quantile_with_arraylike_q_and_int_columns   s$   ( $rz   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 )
NZfoor   r    rd   r"   r#   rS   z+cannot be performed against 'object' dtypesmatch)r   r+   raises	TypeErrorr6   r0   r:   r=   r=   r>   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
   rE   r   r    zGot '50.0' insteadr{   2   zGot '-1.0' insteadr   )r   rw   r6   r+   r}   
ValueErrorr0   )r:   gr=   r=   r>   $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"   ri   )rJ   rK   nanr   rw   r6   r0   )datar:   grprk   r=   r=   r>   /test_quantile_missing_group_values_no_segfaults   s   

r   z$key, val, expected_key, expected_valr           rC   r   r    r`   *   g      E@Zfloat64rB   c                 C   s^   t | |d}t |t|dddgd}|d}|d}t|| | }t|| d S )Nr!   r"   r$   r#   rv   r   )r   r   r6   r0   r7   r8   )r"   r#   Zexpected_keyZexpected_valr:   r;   r   r<   r=   r=   r>   2test_quantile_missing_group_values_correct_results   s   

r   r4   )r
   r   Nr   Z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 )Nrp   r   yr   r   r    rY   r   r$   r   r   Float64r'   r%   r2   )r   r6   r0   r)   r*   r-   rM   rN   r   r/   r7   assert_series_equal)r4   r   r:   r<   idxZtrue_quantilesr;   r=   r=   r>   $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   rp   )r   r    rd   r   )r   r    z7'quantile' cannot be performed against 'object' dtypes!r{   )r   r6   r0   r7   r8   r+   r}   r~   )r   r   r:   r<   r;   r=   r=   r>   -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
   皙?rp   r   rB   rp   r   r   r   )r2   r%   )Float32r   r2   r'   r%   r   r   rY   r   )r   rJ   r   r6   r0   r   r-   r/   r7   r   rM   rN   )Zany_float_dtyper:   r<   Z	exp_indexexpected_dtyper;   r=   r=   r>   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   rB   rp   r   r   ra   r   )r%   r2   r   r2   r'   )	r   r6   r0   r-   r/   r   r7   r   r8   )Zany_int_ea_dtyper:   r<   r;   r=   r=   r>   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   rB   r   r   rU   r   r   r    r
   r
   r   r   )r   rU   r   rU   rY   r   
r   r-   NAr6   r0   rM   Zfrom_arraysr/   r7   r8   )r   Zval1Zval2any_numeric_ea_dtyper:   r<   r;   r=   r=   r>   )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   rB   r   r   r   r   r   r   r    r   rC   r   )r   r   r   r   rY   r   r   )r   r   r:   r<   r   r;   r=   r=   r>   0test_groupby_quantile_all_na_group_masked_interpM  s$   r   r2   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   rB   rp   r   r   r   r   )r   r-   r   r6   r0   r/   rJ   r   r   r'   r%   r7   r   )r2   r:   r<   r;   r=   r=   r>   "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$   rD   )r   r-   Zto_timedeltarJ   rx   r6   r0   Z	Timedeltar   r7   r8   )r:   r<   r;   r=   r=   r>   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   ZXYZZABABcolr$   rv   z+DataFrame.groupby with axis=1 is deprecatedr{   r
   )Zaxis皙?r   rq   )g?g?rV   gffffff?)gffffff@g@gffffff@g@)g333333#@g @g333333%@g"@)r@   r   r@   r   rH   r   rH   r   rY   )r   rJ   rx   Zreshaper*   r-   r/   r7   Zassert_produces_warningFutureWarningr6   r0   rM   rf   r8   )r:   msggbr<   r;   r=   r=   r>   test_columns_groupby_quantile  s*   r   c                 C   s   t jdddd| dd}t|ttddttdd	d
}|dddg}t jj	|d d d ddggdd}tddddddddddddg|d}t
|| d S )Nz2020-04-19 00:00:00Z1minri   UTC)startr   r   tzr   Z1hr
   e      )	timestampcategoryr   r   r   r   c   )r   NrY   g)@g333333\@)r   r   gH@gfffffb@g333333Q@ge@gW@gfffffh@rD   )r-   
date_rangefloorr   r*   rw   r6   r0   rM   rN   r7   r8   )r   dtir:   r<   mir;   r=   r=   r>   test_timestamp_groupby_quantile  s,   
"
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   )ilocr0   )rj   ir   r=   r>   
<dictcomp>  s   $ z7test_groupby_quantile_dt64tz_period.<locals>.<dictcomp>)r-   r   r/   Zto_framecopyZtz_localizeZ	to_periodZNaTr   rJ   Ztilerx   r6   r0   rw   r   TZinfer_objectsr'   r5   intr7   r8   )r   Zbyr   r<   expr;   r=   r   r>   #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   rH   )r   r   r@   )r   r    rH   )r   r    r@   )r
   r   rH   )r
   r   r@   )r
   r    rH   )r
   r    r@   )sampleZcat0cat1rY      rD   r   F)levelr_   r   r   )r   r   r   r   )rW   g333333@g@g333333@rH   r@   )r-   rM   rf   r/   rw   r6   r0   r7   r   coreZindexesfrozenZ
FrozenListZassert_equalr'   rr   )indZserr<   Zqindr;   Zexpected_levelsr=   r=   r>   +test_groupby_quantile_nonmulti_levels_order  s   
r   )'numpyrJ   r+   Zpandasr-   r   r   Zpandas._testingZ_testingr7   r,   Zparametrizer   r   Zas_unitr?   rO   r\   rc   rg   rz   r   r   r   rw   rK   r   r   r   r   r   r   r   r   r   r   r   r   r   r=   r=   r=   r>   <module>   s    "& "  

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