
    Owg?                     L   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                  j                  dg d      ej                  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      j                  d       ej                  ddd      ddd   j                  d      fej                  gdz  ej                  gdz  fg	      ej                  j                  dg d      d                      Zd Zd Zd Zd Zej                  j                  ddd g      ej                  j                  d!d gd d"gg      ej                  j                  dd#d$gg      d%                      Zd& Zd' Zd( Zej                  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j2                  g d23       ej2                  g d23      fg      d4        Zej                  j                  d5 ej2                  g d6d7z  d83       ej2                  g d9d7z  d:3      g      ej                  j                  dd#g d;g      d<               Zej                  j                  dd#g d;g      ej                  j                  d=d>d?g      d@               ZdA ZdB Zej                  j                  dCg dD      dE        Zej                  j                  ddFdGg      dH        Z ej                  j                  dIdJdKg      dL        Z!dM Z"dN Z#dO Z$dP Z%dQ Z&y)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                 l   | dk(  rK|dk(  rFt        |t              r6|g dk(  r/|j                  t        j                  j                  d             t        j                  t        j                  |      t        j                  |      g      }t        j                  |      j                  ||       }t        j                  |      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(  rA|	j                  j                   d   j                  dk(  r|	j#                  |j                        }	|j%                  d      j                  ||       }
t'        j(                  |
|	       y )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              a/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/groupby/methods/test_quantile.pytest_quantilerH      sr   > 	"Hvt$l"KK/  	
 yy"))F+RYYv->?@H6"++A]+KJ6"++A]+KJ	C53v;.#V1DDXV	WB	Z 5'SzPU9VH ~~c!hoo&<&<Q&?&D&D&K ??8>>2ZZ'''GF&(+    c                     t        dg di      } t        j                  g dt        j                        }| j	                  |      j                  dg      }t        j                  j                  ddgdgg      }t        dddgi|	      }t        j                  ||       t        g d
g dd      } t        j                  j                  ddgddgg      }t        j                  g dt        j                        }| j	                  |      j                  ddg      }t        g dg dd|	      }t        j                  ||       y )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   s
   	C)	*B
((?"((
3CZZ_%%tf-FMM&&A'78E#d|,E:H&(+	L9	:BMM&&At'=>E
((<rxx
0CZZ_%%tTl3F&-EFeH &(+rI   c                     t         j                  j                  d      j                  dddt         j                        } t        | t        d            }|j                  d      j                  d	d
g      }t        g dg ddt        j                  j                  g dd	d
ggdd g            }t        j                  ||       y )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    
))


"
+
+Aqwbhh
+
OC	3U	,BZZ_%%sCj1FCR	
 mm((sCj)#t ) 
H &(+rI   c                  :   t        g dg dd      } t        j                  g dt        j                        }| j	                  |d      j                  g d      }t        g d	g d
dt        j                  j                  ddgg dg            }t        j                  ||       | j	                  |d      j                  ddg      }t        g dg ddt        j                  j                  ddgddgg            }t        j                  ||       y )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   s    	3	4B
((9BHH
-CZZ%Z(112CDF,3QRmm((1a&2C)DEH &(+ZZ%Z(114,?F")=>mm((1a&4,)?@H &(+rI   c                     t        g dg dg dg dd      } | j                  ddg      j                  dd	g      }t        j                  j                  g d
g d      }t        g dg dd|      }t        j                  ||       y )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    	ioOT
B ZZc
#,,dD\:FMM%%P & E $+AB%H &(+rI   
frame_size)r   r   )d   r\   r;   r   r   g333333?c           
      t   | \  }}t        t        j                  t        |      D cg c]  }||dz  gz   c}      t        |            }t        j                  t        |d            gt        |      z  |gz   }t        t        |d            D cg c]  }|D ]  }|  c}}gt        |      z  t        t        t        |                  t        |d      z  gz   }	t        j                  ||	|d gz         }
t        t        |d            D cg c]$  }|D ]  }t        |      g|t        |      z
  z   & }}}t        |      D cg c]	  }||vs| }}t        ||
|      }|j                  |      j                  |      }t        j                  ||       y c c}w c c}}w c c}}w c c}w )Nr   r_   )levelscodesrf   r)   r(   )r   rU   rV   rangearangeminr5   r,   r1   rX   floatr;   r4   r<   r=   )ry   r;   r   nrowncol_rD   
idx_levelsx	idx_codesexpected_indexexpected_valuesexpected_columnsrE   rF   s                  rG   6test_groupby_quantile_with_arraylike_q_and_int_columnsr      s   
 JD$	288U4[ATQUG^ABERVK	XB))CaL)*S\9QC?J"3tQ<0<!<Q!<!<=GLU3q6]c$l*P I ]]'TF2BN 5:#dA,4G/0QRLMq
dS\)**O  $);Ca!72BCC~7GH ZZ ))!,F&(+% B = Ds   F$F))F/	F5F5c                      t        ddgddgddggddg      } t        j                  t        d	      5  | j	                  d      j                          d d d        y # 1 sw Y   y xY w)
Nfoor!   r"   ru   r$   r%   r_   z+cannot be performed against 'object' dtypesmatch)r   r.   raises	TypeErrorr;   r4   )rD   s    rG   test_quantile_raisesr      s^    	UCL5#,=u~	VB	y(U	V %


5""$% % %s    AA&c                  `   t        g dt        d      d      } | j                  g d      }t        j                  t
        d      5  |j                  d       d d d        t        j                  t
        d      5  |j                  d       d d d        y # 1 sw Y   ?xY w# 1 sw Y   y xY w)	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      s    	+%(;	<B


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

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

2   s   B=B$B!$B-c                      t        j                  dt         j                  dg      } t        | t	        d      d      }|j                  d      }t	        d      D ]  }|j                           y )Nr   r   r#   r$   rz   )rU   rV   nanr   r   r;   r4   )datarD   grpr   s       rG   /test_quantile_missing_group_values_no_segfaultsr      sZ    88S"&&#&'D	4a1	2B **U
C3Z rI   z$key, val, expected_key, expected_valr           rN   r!   r"   rp   *   g      E@float64rM   c                    t        | |d      }t        |t        |d      dg      }|j                  d      }|j                  d      }t	        j
                  ||       |j                         }t	        j
                  ||       y )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      sv     
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      }|j                  d      d   j                  |      }t        |t              r,t
        j                  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                  ||       y )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mm((3*ad(L(S#JS)yy!+3S	RH68,rI   numeric_onlyTFc                    t        dgdgdgd      }|r]|j                  d      j                  | |      }|j                  d      dg   j                  |       }t        j                  ||       y t        j                  t        d	      5  |j                  d      j                  | |       d d d        y # 1 sw Y   y xY w)
Nr   r   r   )r!   r"   ru   r!   )r   r"   z7'quantile' cannot be performed against 'object' dtypes!r   )r   r;   r4   r<   r=   r.   r   r   )r   r   rD   rF   rE   s        rG   -test_groupby_quantile_raises_on_invalid_dtyper      s     
!C5u5	6BC))!,)G::c?C5)2215
fh/]]V
 	C JJsO$$Q\$B	C 	C 	Cs   #B99Cc                    t        ddgdt        j                  gd|       }|j                  d      d   j	                  d      }t        dg| d	      }| d
v r| }nd }t        j                  dg||d      }t        j                  ||       |j                  d      d   j	                  ddg      }t        j                  dgdz  t        j                  j                  |ddgfdd g      d|      }t        j                  ||       y )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sBFFm4O	LBZZ_S!**3/Fse?=I00(yy#nICPH68,ZZ_S!**C;7Fyy		mm(()c4[)A#t(U	H 68,rI   c           	         t        ddgddgd|       }|j                  d      d   j                  d      }t        j                  d	gd
t        dgd|       d      }t        j                  ||       |j                  d      j                  d      }t        dd	id
t        dgd|             }t        j                  ||       y )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	FBZZ_S!**3/Fyy	QCc)9:	H 8V,ZZ_%%c*F	c
)5!3FV+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|      }|j                  d      j	                  dd	g| 
      }t        d||t        j                  t        j                  gi|t        j
                  j                  t        j                  g d|      g dgdd g            }t        j                  ||       y )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     
!Q255!12:N
B ZZ_%%c
-%PF	tT255"%%()"mm''YY|+?@BVW+ ( 
H &(+rI   r
   r   c           
         t        g ddddt        j                  gd|      }|j                  d      j	                  dd	g| 
      }|dk(  r|}nd}t        dddt        j                  t        j                  gi|t        j
                  j                  t        j                  g d|      g dgdd g            }t        j                  ||       y )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    
 
!Q255!12:N
B ZZ_%%d=%QFy(-"	sC&'mm''		,.BC& + ( 

H &(+rI   r6   r   r   c                 H   t        ddgt        j                  gdz  d|       }|j                  d      d   j	                  d      }t        j
                  t        j                  g| t        dg|       d	      }d|j                  _
        t        j                  ||       y )
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ruugk2%	@BZZ_S!**3/Fyy	UC5%>SH HNN8V,rI   c                  h   t        t        j                  t        j                  d      d      g dd      } | j                  d      j                  d      }t        dt        j                  d	      t        j                  d
      git        ddgd            }t        j                  ||       y )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9LQ
B ZZ ))$/F5656	
 QF)H &(+rI   c            	         t        t        j                  d      j                  dd      t	        d      t        j                  t	        d      d            } d	}t        j                  t        |
      5  | j                  dd      }d d d        j                  ddg      }t        g dg dg dgt	        d      t
        j                  j                  g ddd g            }t        j                  ||       y # 1 sw Y   wxY w)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   msggbrF   rE   s        rG   test_columns_groupby_quantiler     s    	
		"a$5k		$v,U3
B
 8C		#	#M	= 'ZZAZ&'[[C:[&F  !	

 5k))<UDM * 

H &(+' 's   6D  D	c           
         t        j                  dddd|       j                  d      }t        |t	        t        dd            t	        t        dd	            d
      }|j                  d      j                  ddg      }t         j                  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                  ||       y )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eDk  
U1c]+%S/*	

B ZZ$--sCj9F		#	#S2Yc
$;CV	#	WB....		
 H &(+rI   c                     t        j                  dd      } t        j                  |       j                         j	                         }| j                  d      |d<   | j                  d      |d<   | | d   z
  |d	<   t         j                  |j                  d
<   t        j                  t        j                  d      d      }|j                  |      }|j                  d      }t        d      D ci c]$  }||j                  |d d   j                  d      & }}t        |      j                   j#                         }|j$                  j'                  t(              |_        t+        j,                  ||       y c c}w )Nz
2016-01-01i  )r   z
US/Pacificr   r   r   r   r   r   r      r   )r1   r   r3   to_framecopytz_localize	to_periodNaTilocrU   tiler   r;   r4   r   r   Tinfer_objectsr)   r:   intr<   r=   )r   rD   byr   rF   iexprE   s           rG   #test_groupby_quantile_dt64tz_periodr    s$   
--d
3C	3	 	 	"	'	'	)BOOL)BqEMM#BqE#a&LBqE&&BGGBK	1s	#B	BB[[F 498
<a1bggaddm$$S))
<C
<~--/H^^**3/HN&(+	 =s   1)E:c                  D   t         j                  j                  g dg d      } t        j                  t	        d      |       }|j                  dd      j                  d	d
g      }t         j                  j                  g ddd g      }t        j                  g d|      }t        j                  ||       t         j                  j                  j                  j                  ddgd	d
gg      }t        j                  |j                  j                  |       y )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!HC
(C[[vE[2;;S#JGF==$$8 % D yy-T:H68, ggoo,,77#sc3Z8PQOOOFLL''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   rI   rG   <module>r     si       I  
/*	|$	,'	"$=>
rvvsBFFC	(3RVVS*IJ
&&#rvvsBFF	+bffc2663-OP BMM(a8BMM(a82>	

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

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