
    MhB                        S SK rS SKrS SKrS SKJrJrJrJrJ	r	J
r
Jr  S SKJr  \R                  S 5       r " S S5      r\R$                  R'                  SSS/5      \R$                  R'                  S	SS/5      S
 5       5       rg)    N)CategoricalDtypeCategoricalIndex	DataFrameIndex
MultiIndexSeriescrosstabc            
      f   [        / SQ/ SQ/ SQ[        R                  R                  S5      R	                  S5      [        R                  R                  S5      R	                  S5      [        R                  R                  S5      R	                  S5      S.5      n [
        R                  " X /SS9$ )	N)foor   r   r   barr   r   r   r   r   r   )oner   r   twor   r   r   r   r   r   r   )dullr   shinyr   r   r   r   r   r   r   r         )ABCDEFT)ignore_index)r   nprandomdefault_rngstandard_normalpdconcat)dfs    T/var/www/html/env/lib/python3.13/site-packages/pandas/tests/reshape/test_crosstab.pyr    r       s    	 &&q)99"=&&q)99"=&&q)99"=U+	
-
B^ 99bXD11    c                   j   \ rS rSrS rS r\R                  R                  S\	R                  \\/5      S 5       rS rS rS rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS r \R                  R                  SSS/SS//5      S 5       r!S r"S  r#S! r$S" r%S# r&S$ r'S% r(S&r)g')(TestCrosstabE   c                 
   [        US   US   5      nUR                  SS/5      R                  5       R                  5       n[        R
                  " X#R                  S5      R                  [        R                  5      5        g )Nr   r   r   )
r	   groupbysizeunstacktmassert_frame_equalfillnaastyper   int64selfr    resultexpecteds       r!   test_crosstab_single!TestCrosstab.test_crosstab_singleF   s`    "S'2c7+::sCj)..088:
fooa&8&?&?&IJr"   c                 N   [        US   US   US   /5      nUR                  / SQ5      R                  5       nUR                  S5      R                  S5      R	                  S5      R                  [        R                  5      n[        R                  " X#5        [        US   US   /US   5      nUR                  / SQ5      R                  5       nUR                  S5      R	                  S5      R                  [        R                  5      n[        R                  " X#5        g )Nr   r   r   r   r   r   r   )r   r   r   )
r	   r'   r(   r)   r,   r-   r   r.   r*   r+   r/   s       r!   test_crosstab_multiple#TestCrosstab.test_crosstab_multipleK   s    "S'BsGRW#56::o.335##C(005<<Q?FFrxxP
f/2c7BsG,bg6::o.335##C(//299"((C
f/r"   boxc                    U" [         R                  R                  S5      R                  SSSS95      nU" [         R                  R                  S5      R                  SSSS95      nU" [         R                  R                  S5      R                  SSSS95      n[	        X#US.5      n[        X#U/S	/S
S9n[        US	   US   US   /5      n[        R                  " Xg5        [        X4/US	/S
S9n[        US   US   /US	   5      n[        R                  " Xg5        [        X$5      n[        US	   US   5      nS/UR                  l	        S/UR                  l	        [        R                  " Xg5        g )Nr   r      d   r(      
   abcrA   rB   rC   )rownamescolnamesrB   rC   )rF   rE   row_0col_0)r   r   r   integersr   r	   r*   r+   indexnamescolumns)r0   r9   rA   rB   rC   r    r1   r2   s           r!   test_crosstab_ndarray"TestCrosstab.test_crosstab_ndarrayV   s]    		%%a(11!QS1AB		%%a(11!QS1AB		%%a(11!Rc1BCQQ/0!VsejIBsGbgr#w%78
f/1&!sejIRWbg.38
f/ !BsGRW- 'y")
f/r"   c           	      T   [        / SQ/ SQS9n[        / SQ/ SQS9n[        R                  " / SQ[        R                  S9n[	        SS	/SS//[        S	S/S
S9[        SS/SS9S9n[        X5      n[        R                  " XT5        [        X5      n[        R                  " XT5        g )Nr      rQ   r@   rJ   )r>      r>   rS   r>   )rA   rB   rC   df)r>   rS   r>   dtyperQ   r   rG   namer>   rS   rH   rJ   rL   )	r   r   arrayr.   r   r   r	   r*   r+   )r0   rA   rB   rC   r2   r1   s         r!   test_crosstab_non_aligned&TestCrosstab.test_crosstab_non_alignedn   s    9O4?*CDHHYbhh/VaVAW-1a&w/
 !
f/!
f/r"   c                 p   [         R                  R                  S5      R                  SSSS9n[         R                  R                  S5      R                  SSSS9n[         R                  R                  S5      R                  SSSS9n[	        XUS.5      n[        XU/S	/S
SS9nUR                  R                  S:X  d   eUR                  R                  SS/:X  d   eUS   nUR                  S	/5      R                  5       R                  S5      n[        [        U5      /[        S/S	S9S9n[        R                   " Xx/5      nSUl        [$        R&                  " Xg5        UR(                  S   n	UR                  SS/5      R                  5       R                  S5      n
[        R                   " U
[        [        U5      /S/S9/5      n
SU
l        U
R+                  U	R                  5      n
U
R-                  S5      R                  [         R.                  5      n
[$        R&                  " X5        g )Nr   r      r<   r=   r>   r;   r@   rA   rD   T)rE   rF   marginsrA   rB   rC   All i8rc   rX   rR   )r   r   r   rI   r   r	   rJ   rK   rL   r'   r(   r-   r   lenr   r   r   rY   r*   assert_series_equallocreindexr,   r.   )r0   rA   rB   rC   r    r1   all_colsexp_cols
exp_marginall_rowsexp_rowss              r!   test_crosstab_margins"TestCrosstab.test_crosstab_margins   s   II!!!$--a-=II!!!$--a-=II!!!$--a-=QQ/0!VsejRVW||!!V+++~~##Sz111)$::se$))+2248SWIUE7-EF
99h34#
x2::e$::sCj)..077=99hBy(NOP##HNN3??1%,,RXX6
x2r"   c                    [         R                  R                  S5      R                  SSSS9n[         R                  R                  S5      R                  SSSS9n[         R                  R                  S5      R                  SSSS9n[	        XUS.5      n[        UX#/S	/S
SSS9nUR                  R                  S:X  d   eUR                  R                  SS/:X  d   eUS   nUR                  S	/5      R                  5       R                  S5      n[        [        U5      /[        S/S	S9S9n[        R                   " Xx/5      nSUl        [$        R&                  " Xg5        UR(                  S   n	UR                  SS/5      R                  5       R                  S5      n
[        R                   " U
[        [        U5      /S/S9/5      n
SU
l        U
R+                  U	R                  5      n
U
R-                  S5      R                  [         R.                  5      n
[$        R&                  " X5        SnSS S	S/4 H5  n[0        R2                  " [4        US9   [        UX#/S	/S
SUS9  S S S 5        M7     g ! , (       d  f       MI  = f)Nr   r   r_   r<   r=   r>   r;   r@   rA   rD   TTOTAL)rE   rF   r`   margins_namera   rB   rC   )rr   rd   re   rX   rR   z&margins_name argument must be a stringi  match)r   r   r   rI   r   r	   rJ   rK   rL   r'   r(   r-   r   rf   r   r   r   rY   r*   rg   rh   ri   r,   r.   pytestraises
ValueError)r0   rA   rB   rC   r    r1   rj   rk   rl   rm   rn   msgrs   s                r!   %test_crosstab_margins_set_margin_name2TestCrosstab.test_crosstab_margins_set_margin_name   s9   II!!!$--a-=II!!!$--a-=II!!!$--a-=QQ/0FU 
 ||!!V+++~~##Sz111+&::se$))+2248SWIUG93-GH
99h34%
x2::g&::sCj)..077=99hBy(PQR##HNN3??1%,,RXX6
x26 $c
3Lz5F!U' !- 65 455s   I;;
J
	c           	         [         R                  R                  S5      R                  SSSS9n[         R                  R                  S5      R                  SSSS9n[         R                  R                  S5      R                  SSSS9n[         R                  R                  S5      R	                  S5      n[        X/X4SS	S
/S/S9n[        XX4S.5      nUR                  SS	S
/SSS9n[        R                  " XW5        g )Nr   r   r_   r<   r=   r>   r;   sumr   r   baz)aggfuncrE   rF   )r   r   r~   valuesr   )rJ   rL   r   )
r   r   r   rI   r   r	   r   pivot_tabler*   r+   )r0   rA   rB   rC   r   tabler    r2   s           r!   test_crosstab_pass_values&TestCrosstab.test_crosstab_pass_values   s    II!!!$--a-=II!!!$--a-=II!!!$--a-=&&q)99#>FAuu~QVPW
 q1GH>>UENE5 " 
 	e.r"   c                 <   [         R                  " / SQ[        S9n[         R                  " / SQ[        S9n[         R                  " / SQ[        S9n[        XU/S/SS/SS	9n[        R
                  " / S
QSS/S9n[        R                  " UR                  U5        g )Nr   r   r   r   r   r   r   rV   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   rA   rB   rC   F)rE   rF   dropna))r   r   )r   r   )r   r   )r   r   rK   )	r   r[   objectr	   r   from_tuplesr*   assert_index_equalrL   )r0   rA   rB   rC   resms         r!   test_crosstab_dropna!TestCrosstab.test_crosstab_dropna   s    HHFfUHHFfUHHFf
 qa&C5C:eT""R*
 	ckk1-r"   c           	          [        / SQ/ SQS9n[        / SQ/ SQS9n[        X5      n[        [        / SSS9[        / SSS9S9n[        R
                  " X45        g )	N)rQ   r   r>   rR   )rS   r;      r.   rG   rW   rY   rH   rZ   )r   r	   r   r   r*   r+   )r0   s1s2actualr2   s        r!   test_crosstab_no_overlap%TestCrosstab.test_crosstab_no_overlap   sX     IY/IY/"!'8"G':

 	f/r"   c                 $   [        SSSSS[        R                  // SQS.5      n[        UR                  UR
                  SSS9n[        / SQ/ SQ/ S	Q/5      n[        / S
QSS9Ul        [        / SQSS9Ul        [        R                  " X#5        g )NrQ   r   r>   r>   rS   rS   rS   rS   rA   rB   Tr`   r   rQ   r   rQ   )rQ   r>   rS   )r   r>   r;         ?       @rc   rA   rX   r>   rS   rc   rB   r   r   nanr	   rA   rB   r   rJ   rL   r*   r+   r0   r    r   r2   s       r!   test_margin_dropnaTestCrosstab.test_margin_dropna   sz    
 aAq!RVV4;MNO"$$d4@iI>?0s; S9
f/r"   c           	         [        S[        R                  [        R                  [        R                  S[        R                  /S[        R                  SSSS/S.5      n[        UR                  UR
                  SSS9n[        / SQ/ S	Q/ S
Q/5      n[        / SQSS9Ul        [        / SQSS9Ul        [        R                  " X#5        g )NrQ   r   r>   rS   r   Tr   r   rP   rQ   rQ   r   r   rA   rX   )      @      @rc   rB   r   r   s       r!   test_margin_dropna2 TestCrosstab.test_margin_dropna2	  s    bffbffbffa82661aQRTU?VW
 "$$d4@iI>?0s; !2=
f/r"   c                 x   [        S[        R                  [        R                  [        R                  [        R                  S// SQS.5      n[        UR                  UR
                  SSS9n[        / SQ/ SQ/ S	Q/5      n[        / S
QSS9Ul        [        / SQSS9Ul        [        R                  " X#5        g )NrQ   r   r   r   Tr   r   rP   r   r   rA   rX   r   rB   r   r   s       r!   test_margin_dropna3 TestCrosstab.test_margin_dropna3  s    bffbffbffbffa8?QR
 "$$d4@iI>?0s; S9
f/r"   c                 h   [        SSSSS[        R                  // SQS.5      n[        UR                  UR
                  SSS9n[        / SQ/ S	QS
S[        R                  // SQ/5      n[        SS[        R                  S/SS9Ul        [        / SQSS9Ul        [        R                  " X#5        g )NrQ   r   r   r   TFr   rQ   r   r   )rQ   r>   r   r   )r   rS         @r   r   rc   rA   rX   r   rB   r   r   s       r!   test_margin_dropna4 TestCrosstab.test_margin_dropna4  s    
 aAq!RVV4;MNO"$$d5Ak;ArvvTUS"&&%8sC S9
f/r"   c           	         [        S[        R                  [        R                  [        R                  S[        R                  /S[        R                  SSSS/S.5      n[        UR                  UR
                  SSS9n[        / S	Q/ S
QSSS[        R                  // SQ/5      n[        SS[        R                  S/SS9Ul        [        SS[        R                  S/SS9Ul        [        R                  " X#5        g )NrQ   r   r>   rS   r   TFr   )rQ   r   r   r   )r   rQ   r   r   r   )rQ   rS   r   r   r   r   rc   rA   rX   r   r   rB   r   r   s       r!   test_margin_dropna5 TestCrosstab.test_margin_dropna5)  s    bffbffbffa82661aQRTU?VW
 "$$d5A^aArvv->O
 S"&&%8sC #sBFFE!:E
f/r"   c           
      &   [         R                  " / SQ[        S9n[         R                  " SSSSS[         R                  S/[        S9n[         R                  " / SQ[        S9n[	        XU/S/SS/S	S
S9n[
        R                  " SSSS[         R                  [         R                  S// SQ/SS/S9n[        / SQ/ SQ/ SQ/US9n[        / SQSS9Ul	        [        R                  " XF5        [	        X/USS/S/S	S
S9n[
        R                  " / SQSS[         R                  SS[         R                  S//SS/S9n[        / SQ/ SQSS[         R                  // SQ/ SQSS[         R                  // SQ/US9n[        / SQSS9Ul        [        R                  " XF5        [	        X/USS/S/S	S	S9n[
        R                  " / SQ/ S Q/SS/S9n[        / S!Q/ S!Q/ S"Q/ S#Q/ S$Q/US9n[        / SQSS9Ul        [        R                  " XF5        g )%Nr   rV   r   r   r   rA   rB   rC   TF)rE   rF   r`   r   rc   )r   r   r   r   r   r   rd   r   )rQ   r   rQ   r   r   r   r   )r   r   rQ   rQ   r   rQ   r;   )r>   r   r   rQ   r   r   r_   )rL   r   r   rc   rX   )r   r   r   r   r   r   rc   rd   r   r   )r   r   r   )rQ   rQ   r   rQ   )r;   r   g      @rR   )r   r   rc   )r   r   r   r   rc   )r   r   r   r   rd   r   )r   r   r   r   )r;   rQ   r   )r   r[   r   r   r	   r   from_arraysr   r   rJ   r*   r+   rL   )r0   rA   rB   rC   r   r   r2   s          r!   test_margin_dropna6 TestCrosstab.test_margin_dropna66  s   HHFfUHHeUE5%GvVHHFf
 1vc
DQV
 ""ueRVVRVVUCG *
 "$9;PQ
 43?
f/FAc
cUDQV
 ""ArvvueRVVR@ *
 ArvvArvv 
 !!9D
f/FAc
cUDQU
 ""02RS*
 	9iC1
 !!9D
f/r"   c           
         [        / SQ/ SQSS[        R                  SS/S.5      n[        SS/SS9n[        SS	/S
S9n[        SS/SS//X#S9n[        SS/SS//X#S9n[        SS/SS//X#S9n[        R
                  " [        UR                  UR                  SS9U5        [        R
                  " [        UR                  UR                  SS9U5        [        R
                  " [        UR                  UR                  SS9U5        [        R
                  " [        UR                  UR                  SS9U5        [        R
                  " [        UR                  UR                  SS9[        UR                  UR                  SS95        [        R
                  " [        UR                  UR                  SS9[        UR                  UR                  SS95        [        SS/SS/SS//[        / SQSSS9[        SS	/S
SS9S9n[        / SQ/ SQ/[        SS/SSS9[        / SQS
SS9S9n[        / SQ/ S Q/ S!Q/[        / SQSSS9[        / SQS
SS9S9n	[        R
                  " [        UR                  UR                  SSS"9U5        [        R
                  " [        UR                  UR                  SSS"9U5        [        R
                  " [        UR                  UR                  SSS"9U	5        g )#NrQ   r   r   r   r   r>   r>   rS   rS   rS   rQ   r@   r   rA   rX   r>   rS   rB   皙?r   333333?rZ   r         ?      ?      ?all	normalizeTrJ   rL   皙?rQ   r   rc   r   rY   rW   )r   r   r   )r   r   皙?r   )r   r   r   )r   r   r   r   r   rQ   r   r`   )	r   r   r   r   r*   r+   r	   rA   rB   )
r0   r    rindexcindexfull_normal
row_normal
col_normalrow_normal_marginscol_normal_marginsall_normal_marginss
             r!   test_crosstab_normalize$TestCrosstab.test_crosstab_normalizeu  s   !q!RVVQPQ>RS
 1vC(1vC(#qC: 6fUa4,7vV
a3*5VT
 	hrttRTTUC[Q
hrttRTTTBKP
hrttRTTWEzR
hrttRTTYGT
RTT2441-RTT24495	
 	RTT2441-xbddg/V	
 '1Xd|c3Z0Cx@1a&s(;

 'O,AS9-cB
 'O];Cx@-cB

 	RTT2447DACU	
 	RTT2449dCEW	
 	RTT2444>@R	
r"   c           
      p   [        / SQ/ SQSS[        R                  SS/S.5      n[        [        R                  " / SQ5      [        R                  " / SQ5      /[        R                  " / SQ5      5        [        / SQ/ SQ/ S	Q/[        / S
QSSS9[        / SQSS9S9n[        UR                  UR                  UR                  SSSS9n[        R                  " X25        [        / SQ/ SQSS[        R                  SS/S.5      n[        / SQ/ SQ/ SQ/[        / S
QSSS9[        / SQSSS9S9nSn[        R                  " [        US9   [        UR                  UR                  UR                  [        R                  SSS9nS S S 5        [        R                  " X45        g ! , (       d  f       N%= f)Nr   r   rQ   r@   )rQ   rQ   r   r   )rQ   r   rQ   r   )r   r   r   )r   r   r   )r   r   rQ   r   rA   r   r   r   rB   rX   rZ   countr   T)r   r   r`   r   rS   r>   )r   r           r   using DataFrameGroupBy.sumrt   )r   r   r   r	   r[   r   rA   rB   rC   r*   r+   assert_produces_warningFutureWarningr}   )r0   r    norm_counts	test_casenorm_sumry   s         r!   test_crosstab_normalize_arrays+TestCrosstab.test_crosstab_normalize_arrays  sg   !q!RVVQPQ>RS

 	XXl#RXXl%;<bhh|>T	

  /?Cx@-c2

 DD"$$g
	 	i5!q!RVVQPQ>RS
 -7Cx@-cB

 +''SA bddBDD"&&E4I B 	i2	 BAs   ;F''
F5c           	         [        / SQ/ SQ[        R                  [        R                  [        R                  [        R                  [        R                  /S.5      n[        SS/SS//[        SS/SSS	9[        S
S/SS9S9nS HD  n[	        UR
                  UR                  UR                  SUS9n[        R                  " X55        MF     [        S[        R                  /SS//[        SS/SSS	9[        S
S/SS9S9nU(       a  US
   R                  S5      US
'   [	        UR
                  UR                  UR                  SSS9n[        R                  " Xe5        g )Nr   r   r@   r   rQ   r   rA   r.   r   r>   rS   rB   rX   rZ   )TrJ   rL   r   )r   r   r   F)r   r   r   r   r	   rA   rB   rC   r*   r+   r-   )r0   using_array_managerr    emptyi
calculatednanss          r!   test_crosstab_with_empties'TestCrosstab.test_crosstab_with_empties  s2   $$ffbffbffbffbff=
 3Z#s$AS81a&s+
 ,A!"$$RTT7VWXJ!!%4 , 266]S#J'AS81a&s+

 1gnnW-DGbddBDDwRWX

d/r"   c           	         [        / SQ/ SQSS[        R                  SS/S.5      nSn[        R                  " [
        US9   [        UR                  UR                  UR                  S9  S S S 5        Sn[        R                  " [
        US9   [        UR                  UR                  [        R                  S	9  S S S 5        S
n[        R                  " [
        US9   [        UR                  UR                  SS9  S S S 5        [        R                  " [
        US9   [        UR                  UR                  SS9  S S S 5        Sn[        R                  " [
        US9   [        UR                  UR                  SSS9  S S S 5        g ! , (       d  f       GN)= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr   r   rQ   r@   z)values cannot be used without an aggfunc.rt   )r   z%aggfunc cannot be used without values)r   zNot a valid normalize argument42r   *   zNot a valid margins argumentr   r   )r   r   r   rv   rw   rx   r	   rA   rB   rC   mean)r0   r    errors      r!   test_crosstab_errors!TestCrosstab.test_crosstab_errors  sC    !q!RVVQPQ>RS
 <]]:U3RTT244- 4 8]]:U3RTT2441 4 1]]:U3RTT24440 4 ]]:U3RTT2442. 4 /]]:U3RTT2445"= 43 43 43 43 43 43s<   *F.F   F1! G$!G
F 
F.1
F?
G
G!c                 8   [        / SQ/ SQS.5      n/ SQnUS   R                  S5      R                  R                  U5      US'   [	        US   US   5      n[        / SQSS	9n[        X"S
SS9n/ SQ/ SQ/ SQ/n[        XdUS9n[        R                  " X75        g )N)HondaAcuraTeslar   r   r   )Sedanr   ElectricPickupr   r   )MAKEMODEL)r   r   r   r   categoryr   )r   r   r   rX   F)
categoriesorderedrY   )r   r   r   )r   r   rQ   r   rQ   r   rZ   )	r   r-   catset_categoriesr	   r   r   r*   r+   )r0   r    r   r1   expected_indexexpected_columnsexpected_datar2   s           r!   %test_crosstab_with_categorial_columns2TestCrosstab.test_crosstab_with_categorial_columns  s    NS
 5
k((488GG
S7"V*bk2:H+u7
 #Iy99I
 	f/r"   c                    [        / SQS-  / SQS-  / SQS-  [        R                  R                  S5      R	                  S5      [        R                  R                  S5      R	                  S5      S	.5      n[        US
   US   /US   /S[        R                  US   S9n[        / SQ/ SQ// SQ/ SQ/S
S/S9n[        / SQSS9n[        R                  " / SQ/ SQ/ SQS[        R                  S/[        R                  SS/S[        R                  S/[        R                  SS/S[        R                  S/[        R                  SS// SQ/
5      n[        XSUS9nUS   R                  S5      US'   [        R                  " X&5        g )Nr   r   r   threer   r6      r   r   r   r   r   r   rS   r      r   r   r   r   r   r   r   r   Tr   )rJ   rL   r`   r   r   )rc   r   r  r   )rd   r   r   r   )
rQ   rQ   rQ   r   r   r   r>   r>   r>   r   )
rQ   r   r>   rQ   r   r>   rQ   r   r>   r   levelscodesrK   r   rX   )r   r   r   r   )      (@r  g      8@rZ   rc   r.   )r   r   r   r   r   r	   r(   r   r   r[   r   r-   r*   r+   )r0   r    r1   r  expected_columnr  r2   s          r!   test_crosstab_with_numpy_size*TestCrosstab.test_crosstab_with_numpy_size  sy   3a7$q(?!CYY**1-==bAYY**1-==bA
 c7BsG$WIGGc7
 $24GH13QR*

   5C@bffc"c"bffc"c"bffc"c""
 
 #5/009
f/r"   c                    [        [        S5      SS9n[        [        SS5      SS9n[        [        SS5      SS9n[        [        S5      SS9nSS0n[        X5      n[        X5      R                  USS9n[        R
                  " Xg5        [        X/U5      n[        X/U5      R                  US	S
9n[        R
                  " Xg5        [        XAU/5      n[        XAU/5      R                  USS9n[        R
                  " Xg5        g )Nr>   r   rX   rQ   rS   r   waldo)rL   axisr   )rJ   r  )r   ranger	   rename_axisr*   r+   )r0   r   s2_foos2_bars3mapperr1   r2   s           r!   test_crosstab_duplicate_names*TestCrosstab.test_crosstab_duplicate_namesK  s     E!H5)a%0a%0E!H7+  "%B'33F3K
f/ 2,+RL"-99Q9O
f/ "6l+BV-99&q9Q
f/r"   rK   rA   rD   r   rC   c                 $   [        [        S5      US   S9n[        [        SS5      US   S9n[        R                  " [        S5      [        SS5      /US9n[        SUS9R	                  SSS9n[        X#5      n[        R                  " Xe5        g )	Nr>   r   rX   rQ   rS   r   rR   )
fill_value)r   r  r   r   r)   r	   r*   r+   )r0   rK   r   r   mir2   r1   s          r!   test_crosstab_tuple_name%TestCrosstab.test_crosstab_tuple_nameg  s    E!H58,E!QKeAh/##U1XuQ{$;5I!2&..qQ.?"!
f/r"   c           	         [        [        S5      SS9n[        [        S5      SS9n[        [        R                  " SSS9[        [        S5      SS9[        [        S5      SS9S9n[        X5      n[        R                  " XC5        g )Nr>   r   rX   )rC   rT   r.   rV   rZ   )	r   r  r   r   eyer   r	   r*   r+   )r0   r   r   r2   r1   s        r!   test_crosstab_both_tuple_names+TestCrosstab.test_crosstab_both_tuple_namesr  sp    E!H:.E!H:.FF1G$az2%(4

 "!
f/r"   c                    [        / SQ/ SQS./ SQS9n[        UR                  UR                  UR                  /5      n[        / SQSS9n[        R                  " / S	QS
S/S9n[        / SQ/ SQ/ SQ/X4S9n[        R                  " X%5        g )N)r>   rQ   r   )r;   rS   r   )rB   rA   r   r   r   rR   r6   rG   rX   ))rQ   rS   )r   r   )r>   r;   rB   rA   r   )rQ   r   r   r   )r   r   rQ   rZ   )
r   r	   rJ   rB   rA   r   r   r   r*   r+   )r0   r    r1   e_idx	e_columnsr2   s         r!   test_crosstab_unsorted_order)TestCrosstab.test_crosstab_unsorted_order  sy    YY7O"((RTT244L1oG4**+CCQT:V		9-U
 	f/r"   c           
      .   [        / SQS-  / SQS-  / SQS-  S/S-  S/S-  S	.5      nS
n[        R                  " [        US9   [	        UR
                  UR                  /UR                  UR                  [        R                  SSS9nS S S 5        [        [        R                  " S/S-  S/-   [        S9R                  SS5      [        / SQSS9[        R                   " / SQSS/S9S9n[        R"                  " WU5        g ! , (       d  f       N= f)Nr  r   r6   r	  r
  rS   r   r  r  r   rt   T)r   r   r   r`      rQ   rV   r?   r>   r   r   rX   )
)r   r   )r   r   )r   r   )r  r   )r  r   )r  r   )r   r   )r   r   )r   r   rb   r   r   r   )rL   rJ   )r   r*   r   r   r	   r   r   r   r   r   r}   r[   floatreshaper   r   r   r+   )r0   r    ry   r1   r2   s        r!   (test_crosstab_normalize_multiple_columns5TestCrosstab.test_crosstab_normalize_multiple_columns  s   3a7$q(?!CS2XS2X
 +''SArttttF B HHaS2X^5199"a@/c:(( Cj
& 	fh/9 BAs   AD
Dc                 |   [        / SQ/ SQ/ SQ/ SQ/ SQS.5      n[        UR                  UR                  /UR                  SSS	S
9n[        SS/SS/SS/S	S/SS//5      n[        / SQ/ SQ// SQ/ SQ/SS/S9Ul        [        SS/SS9Ul        [        R                  " X#5        [        UR                  UR                  /UR                  SSSS
9n[        / SQ/ SQ/ SQ/ SQ/5      n[        / SQSS9Ul        [        S S!/S"S#/// S$Q/ S%Q/SS/S9Ul        [        R                  " X#5        [        UR                  UR                  /UR                  SSSS
9n[        / S&Q/ S&Q/ S'Q/ S(Q/ S)Q/5      n[        / SQSS9Ul        [        / SQ/ SQ// SQ/ SQ/SS/S9Ul        [        R                  " X#5        g )*N	r   r   r   r   r   r   r   r   r   	r   r   r   r   r   r   r   r   r   	smalllarger9  r8  r8  r9  r8  r8  r9  	rQ   r   r   r>   r>   rS   r;   r   r_   	r   rS   r;   r;   r   r   r	  	   r<  r  T	Sub-Totalr   )r`   rs   r   r   g]QJVU?F]kSU?rQ   9?q?'c`?)r=  r   r   rd   r   r   )rQ   rQ   r   r   r   rQ   r   rQ   r   r   r   r   r  r9  r8  r   rX   )r   r   9?q?)r   r   r>  )r   r   rC  )r9  r8  r=  r   r   r   r   )r   r   rQ   rQ   r   rQ   r   rQ   )9?q?rE  rC  )rC  rE  r>  )r   rC  rC  )r?  g#G?rQ   )r   r	   r   r   r   r   rJ   r   rL   r*   r+   r/   s       r!   test_margin_normalize"TestCrosstab.test_margin_normalize  s   TT
 10
( TT244L"$$;RS
 3Z#sh%9Aq6HhCWX
 $/1CD"O4*

 !'7!3#>
f/ TT244L"$$;RS
 %%$"	
 !!@sK#ENUEN3.*

 	f/ TT244L"$$;RV
 ....'
 !!@sK#/1CD"O4*

 	f/r"   c                 H   [        / SQ/ SQ/ SQ/ SQ/ SQS.5      n[        UR                  UR                  UR                  /SSSS	9n[        / S
Q/ SQ/ SQ// SQS9n[        / SQ/ SQ// SQ/ SQ/SS/S9Ul        SUR                  l        [        R                  " X#5        g )Nr5  r6  r7  r:  r;  r  Tmargin)rJ   rL   r`   rs   r   )rE  rE  rC  r   r?  )rE  rE  rE  rC  r@  )rC  rC  r>  rC  r   )r9  r8  rI  rR   )r   r   rI  rA  )r   r   rQ   rQ   r   rB  r   r   r  r   )r   r	   r   r   r   r   rL   rJ   rY   r*   r+   r/   s       r!   &test_margin_normalize_multiple_columns3TestCrosstab.test_margin_normalize_multiple_columns  s     TT
 10
& $$TT244L!
 BB=
 /
 &,.@A"O4*

 "
f/r"   c           
         [        / SQ/ SQ/ SQS.SS9n[        US   US   US	   S
SS9n[        S[        R                  SS/SS[        R                  S// SQ/[	        / SQSSS9[	        / SQSSS9SS9n[
        R                  " X#5        g )N)rQ   r   r   rQ   )r>   r>   rS   r;   )            $@r   rN  r6   Float64rV   r   r   r   r}   T)r   r   r`   rM  rN        "@r   g      &@)rP  r   rN  g      4@r   r   r   )r   r   g      @rc   )rJ   rL   rW   )r   r	   r   NAr   r*   r+   r/   s       r!   test_margin_support_Float&TestCrosstab.test_margin_support_Float.  s     \8OP
 sGsGc7
 ruudC(sBEE4(&
 )D0sK	
 	f/r"   c                 \   [        / SQ/ SQS.5      nUS   R                  [        SS95      US'   / SQnUS   R                  R	                  U5      US'   [        US   US   SS	9n[        / S
QSS9n[        / SQSS9n/ SQ/ SQ/ SQ/ SQ/n[        XdUS9n[        R                  " X75        g )N)r   r   r   r   r   r   )r   r   r   r   r   r   )FirstSecondrU  T)r   r)  rV  )r`   )r   r   r   rc   rX   )r   r   r   rc   )rQ   rQ   r   r   rD  )r   rQ   r   r>   )rQ   r>   r   r   rZ   )	r   r-   r   r   reorder_categoriesr	   r   r*   r+   )r0   r    customized_categories_orderr1   r  r  r  r2   s           r!   +test_margin_with_ordered_categorical_column8TestCrosstab.test_margin_with_ordered_categorical_columnH  s    78
 k(()9$)GH7&5#koo889TU7"W+r(|TB5GD !7hG%|\<P9I
 	f/r"    N)*__name__
__module____qualname____firstlineno__r3   r7   rv   markparametrizer   r[   listtuplerM   r\   ro   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r"  r&  r,  r2  rF  rJ  rR  rY  __static_attributes__r[  r"   r!   r$   r$   E   s    K
	0 [[URXXtU$;<0 =0.0$3<0d/".0
000
00=0~1
f$3L0@>40,+0Z08 [[WZ'8:s:K&LM0 N000)0VK0Z+0Z040r"   r$   a_dtyper   r.   b_dtypec                    [         R                  R                  S5      n[        UR	                  SSSS95      R                  U 5      n[        UR	                  SSSS95      R                  U5      n[        X4SSS9n[        / S	QS
SS9n[        / SQS
SS9n/ SQ/ SQ/ SQ/ SQ/n[        XU5      n	[        R                  " XY5        SUR                  US:H  '   [        UR                  [        5      n
U
(       a#  UR                  5       R                  S   S:X  d   e[        X4SSS9n/ SQ/ SQ/ SQ/ SQ/n[        XU5      n	U
(       d(  U	R                  / SQ   n	U	S   R                  S5      U	S'   [        R                  " XY5        g )Nr   r   r>   r<   r=   TFr   )r   rQ   rc   r   rH   r   )r   rQ   r   rc   rG   )r?         )      '   )   rk  !   )2   ro  r<   rQ   )r   r   r   )(       H   )r   r   rc   rc   r.   )r   r   r   r   rI   r-   r	   r   r   r*   r+   rh   
isinstancerW   r   value_counts)re  rf  grA   rB   r1   rL   rJ   r   r2   a_is_cats              r!   test_categoricalsrw  ^  sX    			a Aqzz!QSz)*11':Aqzz!QSz)*11':AaD7FM@G"(AEL,FF0H&+ AEE!q&M!''#34H1>>+//2a777aD7FI|]CF0H<<."5/009&+r"   )numpyr   rv   pandasr   r   r   r   r   r   r   r	   pandas._testing_testingr*   fixturer    r$   r`  ra  rw  r[  r"   r!   <module>r}     s          02 02fV0 V0r Z$9:Z$9:, ; ;,r"   