
    bMh?                        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           ej        ddd          ddd         f ej        ddd                              d           ej        ddd          ddd                             d          fej        gdz  ej        gdz  fg	          ej
                            dg d          d                                     Zd Zd Zd Z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%                                     Zd& Zd' Zd( Zej
                            d)dej        dej        g ed*          ddgd+dgfdej        ddg ed*          ddgd+d,gfd-d.d.ej        g ed*          d-d.gd d/gfd gd0gd gd1gfg g  ej        g d23           ej        g d23          fg          d4             Zej
                            d5 ej        g d6d7z  d83           ej        g d9d7z  d:3          g          ej
                            dd#g d;g          d<                         Zej
                            dd#g d;g          ej
                            d=d>d?g          d@                         ZdA ZdB Zej
                            dCg dD          dE             Zej
                            ddFdGg          dH             Z ej
                            dIdJdKg          dL             Z!dM Z"dN Z#dO Z$dP Z%dQ Z&dS )R    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                    | dk    rV|dk    rPt          |t                    r;|g dk    r3|                    t          j                            d                     t          j        t          j        |          t          j        |          g          }t          j        |          	                    ||           }t          j        |          	                    ||           }t          dgt          |          z  dgt          |          z  z   |d	          }t          ||gd
gt          ddgd                    }	|j        j        dk    r5|	j        j        d         j        dk    r|	                    |j                  }	|                    d          	                    ||           }
t'          j        |
|	           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applymarker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results              j/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/groupby/methods/test_quantile.pytest_quantilerH      s   > 	""HHvt$$ lll""K/   	
 	
 	
 y")F++RYv->->?@@H6""++A]+KKJ6""++A]+KKJ	C53v;;.#V1DDXVV	W	WB	Z 5'SzPU9V9V9V  H ~c!!ho&<Q&?&D&K&K ??8>22ZZ'''GGF&(+++++    c                     t          dg di          } t          j        g dt          j                  }|                     |                              dg          }t          j                            ddgdgg          }t          dddgi|	          }t          j
        ||           t          g d
g dd          } t          j                            ddgddgg          }t          j        g dt          j                  }|                     |                              ddg          }t          g dg dd|	          }t          j
        ||           d S )NAr   r   r   r   r   )r   r   r   r   r   r6   r   r   r         @r)   )r   r   r   r   )r   r         rK   Br   )r   r   r   r   )r   r   g      @g      @)g      @g      @g      @g      @r   nparrayint64r;   r4   r1   
MultiIndexfrom_productr<   r=   )rD   r$   rF   r)   rE   s        rG   test_quantile_arrayrZ   I   sb   	C)	*	*B
(???"(
3
3
3CZZ__%%tf--FM&&A'788E#d|,E:::H&(+++	LLL99	:	:BM&&At'=>>E
(<<<rx
0
0
0CZZ__%%tTl33F&&&-E-E-EFFe  H &(+++++rI   c                     t           j                            d                              dddt           j                  } t          | t          d                    }|                    d                              d	d
g          }t          g dg ddt          j
                            g dd	d
ggdd g                    }t          j        ||           d S )Nr   r   r   )
   r   )sizer6   ABCr(   rK   333333?ffffff?)
r   r   gffffff@g@r`   ra   g	@r   r`   ra   )
r   r   gffffff?g@r`   ra   @r   333333?gffffff@)rS   CrL   namesrO   )rU   randomdefault_rngintegersrW   r   r,   r;   r4   r1   rX   rY   r<   r=   )arrrD   rF   rE   s       rG   test_quantile_array2rk   ^   s    
)


"
"
+
+Aqwbh
+
O
OC	3U	,	,	,BZZ__%%sCj11FCCCRRR	
 	
 m((__sCj)#t ) 
 
  H &(+++++rI   c                  f   t          g dg dd          } t          j        g dt          j                  }|                     |d                              g d          }t          g d	g d
dt          j                            ddgg dg                    }t          j
        ||           |                     |d                              ddg          }t          g dg ddt          j                            ddgddgg                    }t          j
        ||           d S )Nr   r   r   r   r   r   rR   )r   r   r   rM   F)sort)r   r   r   )r   r         ?r   r   r   )      @r         @r   r   r   r   r   rO   r   r   )rp   r   r   r   )rr   rq   r   r   rT   )rD   r$   rF   rE   s       rG   test_quantile_array_no_sortrs   o   sU   	33	4	4B
(999BH
-
-
-CZZ%Z((112C2C2CDDF,,,3Q3Q3QRRm((1a&2C2C2C)DEE  H &(+++ZZ%Z((114,??F""")=)=)=>>m((1a&4,)?@@  H &(+++++rI   c                  :   t          g dg dg dg dd          } |                     ddg                              dd	g          }t          j                            g d
g d          }t          g dg dd|          }t          j        ||           d S )Nrm   rn   )r!   r!   r!   )r!   r!   r"   )rK   rS   cdru   rv   r   r   ))r!   r!   r   )r!   r!   r   )r!   r"   r   )r!   r"   r   )ru   rv   Nre   )r   r   r   r   )g      
@g      @r   r   rR   rO   )r   r;   r4   r1   rX   from_tuplesr<   r=   )rD   rF   r)   rE   s       rG   #test_quantile_array_multiple_levelsrx      s    	iiiiioooOOOTT
 
B ZZc
##,,dD\::FM%%PPP &  E $$$+A+A+ABB%  H &(+++++rI   
frame_size)r   r   )d   r\   r;   r   r   g333333?c                 b   | \  }t          t          j        fdt          |          D                       t                              }t          j        t          |d                    gt                    z  gz   }fdt          t          |d                    D             gt                    z  t          t          t                                        t          |d          z  gz   }t          j	        ||d gz             }fdt          t          |d                    D             }fdt                    D             }	t          |||	          }
|
                                                            }t          j        ||
           d S )	Nc                 "    g | ]}|d z  gz  S )r    ).0_ncols     rG   
<listcomp>zJtest_groupby_quantile_with_arraylike_q_and_int_columns.<locals>.<listcomp>   s#    AAATQUG^AAArI   r_   r   c                     g | ]	}D ]}|
S r}   r}   )r~   xr   r   s      rG   r   zJtest_groupby_quantile_with_arraylike_q_and_int_columns.<locals>.<listcomp>   s&    <<<!<<Q!<<<<rI   )levelscodesrf   c                 `    g | ]*}D ]%}t          |          gt                    z
  z  &+S r}   )floatr5   )r~   r   r   r;   r   r   s      rG   r   zJtest_groupby_quantile_with_arraylike_q_and_int_columns.<locals>.<listcomp>   sS       /0QR LMq
dS\\)*   rI   c                     g | ]}|v|	S r}   r}   )r~   r   r;   s     rG   r   zJtest_groupby_quantile_with_arraylike_q_and_int_columns.<locals>.<listcomp>   s#    CCCa!72B2B2B2B2BrI   r)   r(   )r   rU   rV   rangearangeminr5   r,   r1   rX   r;   r4   r<   r=   )ry   r;   r   nrowrD   
idx_levels	idx_codesexpected_indexexpected_valuesexpected_columnsrE   rF   r   s    ``         @rG   6test_groupby_quantile_with_arraylike_q_and_int_columnsr      s   
 JD$	28AAAAU4[[AAABBERVKK	X	X	XB)CaLL))*S\\9QC?J<<<<U3tQ<<00<<<=GLU3q66]]c$ll*P I ]'TF2B  N     49#dA,,4G4G  O DCCC5;;CCC~7G  H ZZ  ))!,,F&(+++++rI   c                      t          ddgddgddggddg          } d}t          j        t          |	          5  |                     d                                           d d d            d S # 1 swxY w Y   d S )
Nfoor!   r"   ru   r$   r%   r_   z:dtype '(object|str)' does not support operation 'quantile'match)r   r.   raises	TypeErrorr;   r4   )rD   msgs     rG   test_quantile_raisesr      s    	UCL5#,=u~	V	V	VB
FC	y	,	,	, % %


5""$$$% % % % % % % % % % % % % % % % % %s   (A//A36A3c                     t          g dt          d          d          } |                     g d          }t          j        t
          d          5  |                    d           d d d            n# 1 swxY w Y   t          j        t
          d          5  |                    d           d d d            d S # 1 swxY w Y   d S )	N)r   r   r   r   r   r   rP   r!   r"   zGot '50.0' insteadr   2   zGot '-1.0' insteadr   )r   r   r;   r.   r   
ValueErrorr4   )rD   gs     rG   $test_quantile_out_of_bounds_q_raisesr      sA   	+++%((;;	<	<B


%%%&&A	z)=	>	>	>  	

2               
z)=	>	>	>  	

2                 s$   A66A:=A:B??CCc                      t          j        dt           j        dg          } t          | t	          d          d          }|                    d          }t	          d          D ]}|                                 d S )Nr   r   r#   r$   rz   )rU   rV   nanr   r   r;   r4   )datarD   grpr   s       rG   /test_quantile_missing_group_values_no_segfaultsr      sv    8S"&#&''D	4a11	2	2B **U

C3ZZ   rI   z$key, val, expected_key, expected_valr           rN   r!   r"   rp   *   g      E@float64rM   c                 >   t          | |d          }t          |t          |d          dg          }|                    d          }|                    d          }t	          j        ||           |                                }t	          j        ||           d S )Nr#   r$   r&   r%   r   r   )r   r   r;   r4   r<   r=   )r$   r%   expected_keyexpected_valrD   rE   r   rF   s           rG   2test_quantile_missing_group_values_correct_resultsr      s     
3s++	,	,BE,U;;;eW  H **U

C\\#F&(+++\\^^F&(+++++rI   r9   )r   r   Nr   Int64)TFNbooleanr   r   r   c                    t          dgdz  dgdz  z   | d          }|                    d          d                             |          }t          |t                    r,t
          j                            ddg|fdd g          }g d}nt          ddgd	          }d
g}t          j	        |dz  |dd          }t          j        ||           d S )Nr   r   yr   r!   r"   re   r   r&   r   r   Float64r)   r'   r6   )r   r;   r4   r+   r,   r1   rX   rY   r   r3   r<   assert_series_equal)r9   r   rD   rF   idxtrue_quantilesrE   s          rG   $test_groupby_quantile_nullable_arrayr      s     
#cUQY.V<<	=	=BZZ__S!**1--F!T m((3*ad(LL(S#JS)))y!+3S	RRRH68,,,,,rI   numeric_onlyTFc                    t          dgdgdgd          }|rp|                    d                              | |          }|                    d          dg                             |           }t          j        ||           d S d}t          j        t          |	          5  |                    d                              | |           d d d            d S # 1 swxY w Y   d S )
Nr   r   r   )r!   r"   ru   r!   )r   r"   z0dtype '.*' does not support operation 'quantile'r   )r   r;   r4   r<   r=   r.   r   r   )r   r   rD   rF   rE   r   s         rG   -test_groupby_quantile_raises_on_invalid_dtyper      s>    
!C5u55	6	6B CC))!,)GG::c??C5)22155
fh/////@]9C000 	C 	CJJsOO$$Q\$BBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cs   &+CC"%C"c                 F   t          ddgdt          j        gd|           }|                    d          d                             d          }t          dg| d	          }| d
v r| }nd }t          j        dg||d          }t          j	        ||           |                    d          d                             ddg          }t          j        dgdz  t          j
                            |ddgfdd g          d|          }t          j	        ||           d S )Nr   皙?r   r   rM   r   r   r   r   )r6   r'   )Float32r   r6   r)   r'   r   r   re   r   )r   rU   r   r;   r4   r   r1   r3   r<   r   rX   rY   )any_float_dtyperD   rF   	exp_indexexpected_dtyperE   s         rG   test_groupby_quantile_NA_floatr     s.   	!QsBFm44O	L	L	LBZZ__S!**3//Fse?===I000(y#nICPPPH68,,,ZZ__S!**C;77Fy		m(()c4[)A#t(UU	  H 68,,,,,rI   c           	         t          ddgddgd|           }|                    d          d                             d          }t          j        d	gd
t          dgd|           d          }t          j        ||           |                    d                              d          }t          dd	id
t          dgd|                     }t          j        ||           d S )Nr   r   r   r   rM   r   r   r   rq   r   )r'   r6   r   r6   r)   )	r   r;   r4   r1   r3   r   r<   r   r=   )any_int_ea_dtyperD   rF   rE   s       rG   test_groupby_quantile_NA_intr   $  s    	!Qq!f--5E	F	F	FBZZ__S!**3//Fy	QCc)9:::	  H 8V,,,ZZ__%%c**F	c
)5!3FV+W+W+W  H &(+++++rI   zinterpolation, val1, val2))r   r   r   )r   r   r   )r	   r   r   c           
         t          g ddddt          j        gd|          }|                    d                              dd	g| 
          }t          d||t          j        t          j        gi|t          j                            t          j        g d|          g dgdd g                    }t          j	        ||           d S )Nr   r   r   r   r   r   r   r   rM   r!   r   ra   r   r   r"   r   r   r   r   )r   ra   r   ra   re   r   
r   r1   NAr;   r4   rX   from_arraysr3   r<   r=   )r   val1val2any_numeric_ea_dtyperD   rF   rE   s          rG   )test_groupby_quantile_all_na_group_maskedr   7  s     
ll!Q25!122:N
 
 
B ZZ__%%c
-%PPF	tT25"%()"m''Y|||+?@@@BVBVBVW+ ( 
 
  H &(+++++rI   r
   r   c           
         t          g ddddt          j        gd|          }|                    d                              dd	g| 
          }|dk    r|}nd}t          dddt          j        t          j        gi|t          j                            t          j        g d|          g dgdd g                    }t          j	        ||           d S )Nr   r   r   r   r   rM   r!   r   r   r   r   r   r"   r   rN   r   )r   r   r   r   re   r   r   )r   r   rD   rF   r   rE   s         rG   0test_groupby_quantile_all_na_group_masked_interpr   M  s   
 
ll!Q25!122:N
 
 
B ZZ__%%d=%QQFy((-"	sC&'m''	,,,.BCCC&&& + ( 
 

 
 
H &(+++++rI   r6   r   r   c                 R   t          ddgt          j        gdz  d|           }|                    d          d                             d          }t          j        t          j        g| t          dg|           d	          }d|j	        _
        t          j        ||           d S )
Nr   r   r   rM   r   r   r   r   r   )r   r1   r   r;   r4   r3   rU   r   r   r)   r'   r<   r   )r6   rD   rF   rE   s       rG   "test_groupby_quantile_allNA_columnr   j  s     
!Qrugk22%	@	@	@BZZ__S!**3//Fy	UC5%>%>%>S  H HN8V,,,,,rI   c                     t          t          j        t          j        d          d          g dd          } |                     d                              d          }t          dt          j        d	          t          j        d
          git          ddgd                    }t          j
        ||           d S )Nr   r   )unitr   )valuegroupr   gGz?r   z0 days 00:00:00.990000z0 days 00:00:02.990000r   r   r&   rO   )r   r1   to_timedeltarU   r   r;   r4   	Timedeltar   r<   r=   )rD   rF   rE   s      rG   test_groupby_timedelta_quantiler   v  s    	/")A,,S999LLLQQ
 
B ZZ  ))$//F566566	
 QF)))  H &(+++++rI   c            	      Z   t          t          j        d                              dd          t	          d          t          j        t	          d          d                    } d	}t          j        t          |
          5  | 
                    dd          }d d d            n# 1 swxY w Y   |                    ddg          }t          g dg dg dgt	          d          t
          j                            g ddd g                    }t          j        ||           d S )N   r   r   XYZABABcolr&   r   z+DataFrame.groupby with axis=1 is deprecatedr   r   )axis皙?r   )r   )g?g?rb   gffffff?)gffffff@g@gffffff@g@)g333333#@g @g333333%@g"@)rK   r   rK   r   rS   r   rS   r   re   )r   rU   r   reshaper,   r1   r3   r<   assert_produces_warningFutureWarningr;   r4   rX   rw   r=   )rD   r   gbrF   rE   s        rG   test_columns_groupby_quantiler     ss   	
	"a$$5kk	$v,,U333
 
 
B
 8C		#M	=	=	= ' 'ZZAZ&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '[[C:[&&F      !!!	

 5kk))<<<UDM * 
 

 
 
H &(+++++s   B((B,/B,c           
         t          j        dddd|                               d          }t          |t	          t          dd                    t	          t          dd	                    d
          }|                    d                              ddg          }t           j        	                    |d d d         ddggd          }t          ddddddddddddg|          }t          j        ||           d S )Nz2020-04-19 00:00:001minrz   UTC)startr   r   tzr   1hr   e      )	timestampcategoryr   r   r   r   c   )r   Nre   g)@g333333\@)r   r   gH@gfffffb@g333333Q@ge@gW@gfffffh@rO   )r1   
date_rangefloorr   r,   r   r;   r4   rX   rY   r<   r=   )r   dtirD   rF   mirE   s         rG   test_timestamp_groupby_quantiler     s-   
-#&#%d  eDkk  
U1c]]++%S//**	
 	

 
B ZZ$$--sCj99F		#	#S2Yc
$;CV	#	W	WB........		
   H &(+++++rI   c                     t          j        dd          } t          j        |                                                                           |                     d          d<   |                     d          d<   | | d         z
  d	<   t           j        j        d
<   t          j
        t          j        d          d          }                    |          }|                    d          }fdt          d          D             }t          |          j                                        }|j                            t(                    |_        t+          j        ||           d S )Nz
2016-01-01i  )r   z
US/Pacificr   r   r   r   r   r   r      r   c                 X    i | ]&}|j         |d d                             d          'S )Nr   r   )ilocr4   )r~   irD   s     rG   
<dictcomp>z7test_groupby_quantile_dt64tz_period.<locals>.<dictcomp>  s5    
<
<
<a1bgaddm$$S))
<
<
<rI   )r1   r   r3   to_framecopytz_localize	to_periodNaTr  rU   tiler   r;   r4   r   r   Tinfer_objectsr)   r:   intr<   r=   )r   byr   rF   exprE   rD   s         @rG   #test_groupby_quantile_dt64tz_periodr    s(   
-d
3
3
3C	3	 	 	"	"	'	'	)	)BOOL))BqEMM#BqE#a&LBqE&BGBK	1s	#	#B	BB[[F =
<
<
<588
<
<
<C~~--//H^**3//HN&(+++++rI   c                  .   t           j                            g dg d          } t          j        t	          d          |           }|                    dd                              d	d
g          }t           j                            g ddd g          }t          j        g d|          }t          j        ||           t           j	        j
        j                            ddgd	d
gg          }t          j        |j        j        |           d S )N))r   r!   rS   )r   r!   rK   )r   r"   rS   )r   r"   rK   )r   r!   rS   )r   r!   rK   )r   r"   rS   )r   r"   rK   )samplecat0cat1re      rO   r  F)levelro   r   r   )r   r   r   r   )rc   g333333@g@g333333@rS   rK   )r1   rX   rw   r3   r   r;   r4   r<   r   coreindexesfrozen
FrozenListassert_equalr)   r   )indserrF   qindrE   expected_levelss         rG   +test_groupby_quantile_nonmulti_levels_orderr     s   
-
#
#		
 		
 		
 )(( $  C )E!HHC
(
(
(C[[vE[22;;S#JGGF=$$888 %  D y---T:::H68,,, go,77#sc3Z8PQQOOFL'99999rI   )'numpyrU   r.   pandasr1   r   r   pandas._testing_testingr<   r/   parametrizer   r   as_unitrH   rZ   rk   rs   rx   r   r   r   r   r   rV   r   r   r   r   r   r   r   r   r   r   r   r  r   r}   rI   rG   <module>r'     s                         III   
///*	|||$	,,,'	"	"	"$=$=$=>
rvsBFC	(3RVS*IJ
&#rvsBF	+bfc263-OP BM(a888BM(a8882>	

 BM(a888@@EEBM(a8882>FFsKK	

 &Ax!|$) 2 55566, , 763  :,@, , ,*, , ,", , ,$, , , 	':;;aS1a&M22Szl++, , ,+ 32 <;,0% % %     *
rvsBF	#UU1XXSzC:F
rvsC	 %%((S#Jc
C
sC	 %%((S#JCA
rdQC$ 	R"I...90M0M0MN	 	, ,	 	,& !111$$$q(	:::  sOOO455- - 65 -  sOOO455$77	C 	C 87 65	C- - -0, , ,& !W!W!W , , ,& :x*@AA, , BA,8 9i"899- - :9-, , ,$, , ,4, , ,:, , ,,: : : : :rI   