o
    i1                     @   s4  d dl Zd dlZd dlm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ejddddeej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dHejdIdJgdKdL ZdMdN Z dOdP Z!ejdQdRdSgdTdU Z"dVdW Z#dXdY Z$dZd[ Z%dS )\    N)lib)	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q)r         ?      ?      ?r   c           
      C   s   | dkr|dkr|g dkr|j tjjdd 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}|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)node
add_markerpytestmarkxfailpdSeriesquantiler   lenr   groupbytmassert_frame_equal)
r   a_valsb_valsr   request
a_expected
b_expecteddfexpectedresult r<   ]/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/pandas/tests/groupby/test_quantile.pytest_quantile   s    $r>   c                  C   s   t dg di} | g 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}| g 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   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   r1   r/   r-   
MultiIndexfrom_productr2   r3   r9   r;   r'   r:   r<   r<   r=   test_quantile_array?   s   rK   c                  C   s~   t tjdjdddd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   )sizeABCr&   r?   g333333?gffffff?)
g?g @g@g333333@皙?g333333@gffffff@g@        rQ   )
g333333?gffffff@g?r   rQ   rQ   gffffff?g@r   r   )rF   Cr@   namesrB   )r   nprandomRandomStaterandintlistr1   r/   r-   rH   rI   r2   r3   r9   r;   r:   r<   r<   r=   test_quantile_array2R   s   	r[   c                  C   s   t g dg dd} | jg dddg d}t g dg d	dtjd
dgg dgd}t|| | jg d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   rE   )r   r   r   F)sort)r   r   r   )r   r         ?r   r   r   )      @r         @r   r   r   r   r   rB   r   r   )r_   r   r   r   )ra   r`   r   r   rG   rZ   r<   r<   r=   test_quantile_array_no_sortd   s   rb   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?   rF   cdrc   rd   r   r   ))r   r   r   )r   r   r   )r   r    r   )r   r    r   )rc   rd   NrS   )r   r   r   r   )g      
@g      @r   r   rE   rB   )r   r1   r/   r-   rH   from_tuplesr2   r3   rJ   r<   r<   r=   #test_quantile_array_multiple_levelsu   s   rf   
frame_size)r   r   )d   rL   r1   r   r   g333333?c                    s  | \}t tfddt|D td}t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>rO   r   c                    s   g | ]	} D ]}|qqS r<   r<   ri   xrj   r   r<   r=   rl      rm   )levelscodesrT   c                    s,   g | ]}D ]}t |gt   qqS r<   )floatr0   rn   r1   rk   r   r<   r=   rl      s
    c                    s   g | ]}| vr|qS r<   r<   )ri   ro   )r1   r<   r=   rl      s    r'   r&   )r   rU   arrayrangerY   minr0   r-   rH   r1   r/   r2   r3   )rg   r1   r   nrowr9   
idx_levels	idx_codesexpected_indexexpected_valuesexpected_columnsr:   r;   r<   rt   r=   6test_groupby_quantile_with_arraylike_q_and_int_columns   s$   ("$r   c               	   C   s   t ddgddgddggddgd} tjtdd	/ tjtd
d	 | d  W d    n1 s2w   Y  W d    d S W d    d S 1 sJw   Y  d S )Nfoor   r    rc   r"   r#   rO   z+cannot be performed against 'object' dtypesmatchzDropping invalid columns)	r   r*   raises	TypeErrorr2   assert_produces_warningFutureWarningr1   r/   )r9   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   rC   r   r    zGot '50.0' insteadr   2   zGot '-1.0' insteadr   )r   rw   r1   r*   r   
ValueErrorr/   )r9   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"   rh   )rU   rv   nanr   rw   r1   r/   )datar9   grprj   r<   r<   r=   /test_quantile_missing_group_values_no_segfaults   s   

r   z$key, val, expected_key, expected_valr   rQ   rA   r   r    r_   *   g      E@float64dtypec                 C   s^   t | |d}t |t|dddgd}|d}|d}t|| | }t|| d S )Nr!   r"   r$   r#   ru   r   )r   r   r1   r/   r2   r3   )r"   r#   expected_keyexpected_valr9   r:   r   r;   r<   r<   r=   2test_quantile_missing_group_values_correct_results   s   

r   values)r   r   Nr   Int64)TFNbooleanrQ   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}t
|| d S )Nro   r   yr   r   r    rS   r   r$   r   r   r'   r%   )r   r1   r/   
isinstancerY   r-   rH   rI   r   r.   r2   assert_series_equal)r   r   r9   r;   idxtrue_quantilesr:   r<   r<   r=   $test_groupby_quantile_nullable_array   s   


r   numeric_onlyTFc                 C   s   t dgdgdgd}|tju s|rQ|tju rtnd }d}tj||d |dj| |d}W d    n1 s9w   Y  |dd	g | }t|| d S t	j
td
d |dj| |d W d    d S 1 snw   Y  d S )Nr   r   ro   )r   r    rc   z>The default value of numeric_only in DataFrameGroupBy.quantiler   r   )r   r    z7'quantile' cannot be performed against 'object' dtypes!)r   r   
no_defaultr   r2   r   r1   r/   r3   r*   r   r   )r   r   r9   warnmsgr;   r:   r<   r<   r=   )test_groupby_quantile_skips_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	}tjdgt|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   皙?ro   r   r   ro   r   r   r   )r   r%   r   r'   r%   r   r   rS   r   )r   rU   r   r1   r/   r   r-   r.   rs   r2   r   rH   rI   )any_float_dtyper9   r;   	exp_indexr:   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ttdgd| d
dd}t|| |dd}t dd	itdgd| d
d}t	|| d S )Nr   r   r   r   r   ro   r   r   r`   )r%   r   r   rB   )
r   r1   r/   r-   r.   rs   r   r2   r   r3   )any_int_ea_dtyper9   r;   r:   r<   r<   r=   test_groupby_quantile_NA_int  s   r   r   Float64Float32c                 C   sj   t ddgtjgd d| d}|dd d}tjtjgtt	dg| ddd	}d|j
_t|| d S )
Nr   r   r   r   ro   r   r   r   r   )r   r-   NAr1   r/   r.   rU   r   rs   r   r'   r%   r2   r   )r   r9   r;   r:   r<   r<   r=   "test_groupby_quantile_allNA_column'  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   s)unit)r   r   r   r   )valuegroupr   gGz?r   z0 days 00:00:00.990000z0 days 00:00:02.990000r   r   r$   rB   )r   r-   to_timedeltarU   aranger1   r/   	Timedeltar   r2   r3   rZ   r<   r<   r=   test_groupby_timedelta_quantile3  s   	r   c                  C   s   t tdddtdtjtdddd} | jdd	d
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$   ru   r   )axis皙?r   rp   )rP   g?g@gffffff?)gffffff@g@gffffff@g@)g333333#@g @g333333%@g"@))r?   r   )r?   r   )rF   r   )rF   r   rS   )r   rU   r   reshaperY   r-   r.   r1   r/   rH   re   r2   r3   rZ   r<   r<   r=   test_columns_groupby_quantileE  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1Trh   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   NrS   rB   )r   r-   
date_rangefloorrY   rw   r1   r/   rH   re   	Timestampr2   r3   rZ   r<   r<   r=   test_timestamp_groupby_quantile\  s4   
r   )&numpyrU   r*   pandas._libsr   pandasr-   r   r   pandas._testing_testingr2   r+   parametrizer   rY   r   r>   rK   r[   rb   rf   r   r   r   r   rw   rv   r   r   r   r   r   r   r   r   r   r   r<   r<   r<   r=   <module>   s    "&
"  


