a
    j=ic1                     @   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)ZlinearlowerZhighernearestZ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r2|dkr2|g dkr2|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)nodeZ
add_markerpytestmarkZxfailpdSeriesquantiler   lenr   groupbytmassert_frame_equal)
r   Za_valsZb_valsr   requestZ
a_expectedZ
b_expecteddfexpectedresult r3   s/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/pandas/tests/groupby/test_quantile.pytest_quantile   s     $r5   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         r6   Br   )r   r   r   r   )r   r   g      @g      @)g      @g      @g      @g      @r   r,   r*   r(   
MultiIndexfrom_productr-   r.   r0   r2   r$   r1   r3   r3   r4   test_quantile_array?   s    rB   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#   r6   g333333?gffffff?)
g?g @g@g333333@皙?g333333@gffffff@g@        rH   )
g333333?gffffff@g?r   rH   rH   gffffff?g@r   r   )r=   Cr7   namesr9   )r   nprandomZRandomStaterandintlistr,   r*   r(   r?   r@   r-   r.   r0   r2   r1   r3   r3   r4   test_quantile_array2R   s    	rQ   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   r<   )r   r   r   F)sort)r   r   r   )r   r         ?r   r   r   )      @r         @r   r   r   r   r   r9   r   r   )rU   r   r   r   )rW   rV   r   r   r>   rP   r3   r3   r4   test_quantile_array_no_sortd   s    rX   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 )NrR   rS   )r   r   r   )r   r   r   )r6   r=   cdrY   rZ   r   r   ))r   r   r   )r   r   r   )r   r   r   )r   r   r   )rY   rZ   NrJ   )r   r   r   r   )g      
@g      @r   r   r<   r9   )r   r,   r*   r(   r?   from_tuplesr-   r.   rA   r3   r3   r4   #test_quantile_array_multiple_levelsu   s    r\   
frame_size)r	   r
   )d   rC   r,   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   r3   ).0_)ncolr3   r4   
<listcomp>       zJtest_groupby_quantile_with_arraylike_q_and_int_columns.<locals>.<listcomp>rF   r   c                    s   g | ]} D ]}|qqS r3   r3   r_   xr`   r   r3   r4   rb      rc   )levelscodesrK   c                    s,   g | ]$}D ]}t |gt   qqS r3   )floatr+   rd   r,   ra   r   r3   r4   rb      s   c                    s   g | ]}| vr|qS r3   r3   )r_   re   )r,   r3   r4   rb      rc   r$   r#   )r   rL   arrayrangerO   minr+   r(   r?   r,   r*   r-   r.   )r]   r,   r   Znrowr0   Z
idx_levelsZ	idx_codesZexpected_indexexpected_valuesZexpected_columnsr1   r2   r3   rj   r4   6test_groupby_quantile_with_arraylike_q_and_int_columns   s$    ("$rp   c               	   C   s   t ddgddgddggddgd} tjtdd	L tjtd
d	 | d  W d    n1 sd0    Y  W d    n1 s0    Y  d S )NZfoor   r   rY   r   r    rF   z+cannot be performed against 'object' dtypesmatchzDropping invalid columns)	r   r&   raises	TypeErrorr-   assert_produces_warningFutureWarningr,   r*   )r0   r3   r3   r4   test_quantile_raises   s    "rw   c                  C   s   t g dtdd} | g d}tjtdd |d W d    n1 sR0    Y  tjtdd |d W d    n1 s0    Y  d S )	N)r   r   r   r   r   r   r:   r   r   zGot '50.0' insteadrq   2   zGot '-1.0' insteadr   )r   rm   r,   r&   rs   
ValueErrorr*   )r0   gr3   r3   r4   $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 ]}|  q6d S )Nr   r
   r   r   r^   )rL   rl   nanr   rm   r,   r*   )datar0   grpr`   r3   r3   r4   /test_quantile_missing_group_values_no_segfaults   s
    
r   z$key, val, expected_key, expected_valr   rH   r8   r   r   rU   *   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    rk   r   )r   r   r,   r*   r-   r.   )r   r    Zexpected_keyZexpected_valr0   r1   r   r2   r3   r3   r4   2test_quantile_missing_group_values_correct_results   s    

r   values)r   r   Nr	   ZInt64)TFNbooleanrH   r   r   c                 C   s   t dgd dgd  | d}|dd |}t|trbt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 )Nre   r
   yrx   r   r   rJ   r   r!   r   r	   r$   r"   )r   r,   r*   
isinstancerO   r(   r?   r@   r   r)   r-   assert_series_equal)r   r   r0   r2   idxZtrue_quantilesr1   r3   r3   r4   $test_groupby_quantile_nullable_array   s    


r   numeric_onlyTFc                 C   s   t dgdgdgd}|tju s$|r|tju r2tnd }d}tj||d$ |dj| |d}W d    n1 sr0    Y  |dd	g | }t|| nBt	j
td
d$ |dj| |d W d    n1 s0    Y  d S )Nr   r   re   )r   r   rY   z>The default value of numeric_only in DataFrameGroupBy.quantilerq   r   )r   r   z7'quantile' cannot be performed against 'object' dtypes!)r   r   
no_defaultrv   r-   ru   r,   r*   r.   r&   rs   rt   )r   r   r0   warnmsgr2   r1   r3   r3   r4   )test_groupby_quantile_skips_invalid_dtype   s    2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   皙?re   r   r   re   r   r   r   )r   r"   r   r$   r"   r   r	   rJ   r   )r   rL   r}   r,   r*   r   r(   r)   ri   r-   r   r?   r@   )Zany_float_dtyper0   r2   Z	exp_indexr1   r3   r3   r4   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   re   r   r   rV   )r"   r   r   r9   )
r   r,   r*   r(   r)   ri   r   r-   r   r.   )Zany_int_ea_dtyper0   r2   r1   r3   r3   r4   test_groupby_quantile_NA_int  s    r   r   ZFloat64Z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   re   r   r   r   r   )r   r(   ZNAr,   r*   r)   rL   r}   ri   r   r$   r"   r-   r   )r   r0   r2   r1   r3   r3   r4   "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!   r9   )r   r(   Zto_timedeltarL   aranger,   r*   Z	Timedeltar   r-   r.   rP   r3   r3   r4   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   ZXYZZABABcolr!   rk   r   )Zaxis皙?r   rf   )rG   g?g@gffffff?)gffffff@g@gffffff@g@)g333333#@g @g333333%@g"@))r6   r   )r6   r   )r=   r   )r=   r   rJ   )r   rL   r   ZreshaperO   r(   r)   r,   r*   r?   r[   r-   r.   rP   r3   r3   r4   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:00Z1Tr^   UTC)startr   r   tzZ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   NrJ   r9   )r   r(   
date_rangefloorrO   rm   r,   r*   r?   r[   	Timestampr-   r.   rP   r3   r3   r4   test_timestamp_groupby_quantile\  s6    
r   )&numpyrL   r&   Zpandas._libsr   Zpandasr(   r   r   Zpandas._testingZ_testingr-   r'   Zparametrizer}   rO   r   r5   rB   rQ   rX   r\   rp   rw   r|   r   rm   rl   r   r   r   r   r   r   r   r   r   r   r3   r3   r3   r4   <module>   s~   "&
"  

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