
    OwgB                        d dl Zd dlZd dlZd dlmZmZmZmZm	Z	m
Z
mZ d dlmZ ej                  d        Z G d d      Zej$                  j'                  dddg      ej$                  j'                  d	ddg      d
               Zy)    N)CategoricalDtypeCategoricalIndex	DataFrameIndex
MultiIndexSeriescrosstabc            
      l   t        g dg dg dt        j                  j                  d      j	                  d      t        j                  j                  d      j	                  d      t        j                  j                  d      j	                  d      d      } t        j                  | | gd      S )	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    Y/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/reshape/test_crosstab.pyr    r       s    	 &&q)99"=&&q)99"=&&q)99"=U+	
-
B^ 99b"XD11    c                   b   e Zd Zd Zd Zej                  j                  dej                  e
eg      d        Zd Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej                  j                  dddgddgg      d        Z d Z!d Z"d  Z#d! Z$d" Z%d# Z&d$ Z'y%)&TestCrosstabc                 
   t        |d   |d         }|j                  ddg      j                         j                         }t	        j
                  ||j                  d      j                  t        j                               y )Nr   r   r   )
r	   groupbysizeunstacktmassert_frame_equalfillnaastyper   int64selfr    resultexpecteds       r!   test_crosstab_singlez!TestCrosstab.test_crosstab_singleF   sb    "S'2c7+::sCj)..088:
fhooa&8&?&?&IJr"   c                 N   t        |d   |d   |d   g      }|j                  g d      j                         }|j                  d      j                  d      j	                  d      j                  t        j                        }t        j                  ||       t        |d   |d   g|d         }|j                  g d      j                         }|j                  d      j	                  d      j                  t        j                        }t        j                  ||       y )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_multiplez#TestCrosstab.test_crosstab_multipleK   s    "S'BsGRW#56::o.335##C(005<<Q?FFrxxP
fh/2c7BsG,bg6::o.335##C(//299"((C
fh/r"   boxc                     |t         j                  j                  d      j                  ddd            } |t         j                  j                  d      j                  ddd            } |t         j                  j                  d      j                  ddd            }t	        |||d      }t        |||gd	gd
      }t        |d	   |d   |d   g      }t        j                  ||       t        ||g|d	gd
      }t        |d   |d   g|d	         }t        j                  ||       t        ||      }t        |d	   |d         }dg|j                  _	        dg|j                  _	        t        j                  ||       y )Nr   r      d   r'      
   abcr>   r?   r@   )rownamescolnamesr?   r@   )rC   rB   row_0col_0)r   r   r   integersr   r	   r)   r*   indexnamescolumns)r/   r6   r>   r?   r@   r    r0   r1   s           r!   test_crosstab_ndarrayz"TestCrosstab.test_crosstab_ndarrayV   sk    		%%a(11!QS1AB		%%a(11!QS1AB		%%a(11!Rc1BCQQQ/0!aVsejIBsGbgr#w%78
fh/1a&!sejIRWbg.38
fh/ !QBsGRW- 'y")
fh/r"   c                 z   t        g dg d      }t        g dg d      }t        j                  g dt        j                        }t	        dd	gddggt        d	dgd
      t        ddgd            }t        ||      }t        j                  ||       t        ||      }t        j                  ||       y )Nr      rM   r=   rG   )r;      r;   rO   r;   )r>   r?   r@   df)r;   rO   r;   dtyperM   r   rD   namer;   rO   rE   rG   rI   )	r   r   arrayr-   r   r   r	   r)   r*   )r/   r>   r?   r@   r1   r0   s         r!   test_crosstab_non_alignedz&TestCrosstab.test_crosstab_non_alignedn   s    9O4?*CDHHYbhh/VaVAW-1a&w/
 !Q
fh/!Q
fh/r"   c                    t         j                  j                  d      j                  ddd      }t         j                  j                  d      j                  ddd      }t         j                  j                  d      j                  ddd      }t	        |||d      }t        |||gd	gd
d      }|j                  j                  dk(  sJ |j                  j                  ddgk(  sJ |d   }|j                  d	g      j                         j                  d      }t        t        |      gt        dgd	            }t        j                   ||g      }d|_        t%        j&                  ||       |j(                  d   }	|j                  ddg      j                         j                  d      }
t        j                   |
t        t        |      gdg      g      }
d|
_        |
j+                  |	j                        }
|
j-                  d      j                  t         j.                        }
t%        j&                  |	|
       y )Nr   r      r9   r:   r;   r8   r=   r>   rA   T)rB   rC   marginsr>   r?   r@   All i8r^   rT   rN   )r   r   r   rF   r   r	   rG   rH   rI   r&   r'   r,   r   lenr   r   r   rU   r)   assert_series_equallocreindexr+   r-   )r/   r>   r?   r@   r    r0   all_colsexp_cols
exp_marginall_rowsexp_rowss              r!   test_crosstab_marginsz"TestCrosstab.test_crosstab_margins   s   II!!!$--a-=II!!!$--a-=II!!!$--a-=QQQ/0!a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           
      >   t         j                  j                  d      j                  ddd      }t         j                  j                  d      j                  ddd      }t         j                  j                  d      j                  ddd      }t	        |||d      }t        |||gd	gd
dd      }|j                  j                  dk(  sJ |j                  j                  ddgk(  sJ |d   }|j                  d	g      j                         j                  d      }t        t        |      gt        dgd	            }t        j                   ||g      }d|_        t%        j&                  ||       |j(                  d   }	|j                  ddg      j                         j                  d      }
t        j                   |
t        t        |      gdg      g      }
d|
_        |
j+                  |	j                        }
|
j-                  d      j                  t         j.                        }
t%        j&                  |	|
       d}dd d	dgfD ]:  }t1        j2                  t4        |      5  t        |||gd	gd
d|       d d d        < y # 1 sw Y   GxY w)Nr   r   rZ   r9   r:   r;   r8   r=   r>   rA   TTOTAL)rB   rC   r[   margins_namer\   r?   r@   )rl   r_   r`   rT   rN   z&margins_name argument must be a stringi  match)r   r   r   rF   r   r	   rG   rH   rI   r&   r'   r,   r   ra   r   r   r   rU   r)   rb   rc   rd   r+   r-   pytestraises
ValueError)r/   r>   r?   r@   r    r0   re   rf   rg   rh   ri   msgrm   s                r!   %test_crosstab_margins_set_margin_namez2TestCrosstab.test_crosstab_margins_set_margin_name   sU   II!!!$--a-=II!!!$--a-=II!!!$--a-=QQQ/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
3 		Lz5 F!U' !- 		 s   3JJ	c                 ,   t         j                  j                  d      j                  ddd      }t         j                  j                  d      j                  ddd      }t         j                  j                  d      j                  ddd      }t         j                  j                  d      j	                  d      }t        ||g||dd	d
gdg      }t        ||||d      }|j                  dd	d
gdd      }t        j                  ||       y )Nr   r   rZ   r9   r:   r;   r8   sumr   r   baz)aggfuncrB   rC   )r   r   rw   valuesry   )rG   rI   rx   )
r   r   r   rF   r   r	   r   pivot_tabler)   r*   )r/   r>   r?   r@   ry   tabler    r1   s           r!   test_crosstab_pass_valuesz&TestCrosstab.test_crosstab_pass_values   s    II!!!$--a-=II!!!$--a-=II!!!$--a-=&&q)99#>FAvuu~QVPW
 q1GH>>UENE5 " 
 	eX.r"   c                 R   t        j                  g dt              }t        j                  g dt              }t        j                  g dt              }t        |||gdgddgd	      }t	        j
                  g d
ddg      }t        j                  |j                  |       y )Nr   r   r   r   r   r   r   rR   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r>   r?   r@   F)rB   rC   dropna))r   r   )r   r   )r   r   )r   r   rH   )	r   rW   objectr	   r   from_tuplesr)   assert_index_equalrI   )r/   r>   r?   r@   resms         r!   test_crosstab_dropnaz!TestCrosstab.test_crosstab_dropna   s    HHFfUHHFfUHHFf
 q1a&C5C:eT""R*
 	ckk1-r"   c                     t        g dg d      }t        g dg d      }t        ||      }t        t        g dd      t        g dd            }t	        j
                  ||       y )	N)rM   r   r;   rN   )rO   r8      r-   rD   rS   rU   rE   rV   )r   r	   r   r   r)   r*   )r/   s1s2actualr1   s        r!   test_crosstab_no_overlapz%TestCrosstab.test_crosstab_no_overlap   s\     IY/IY/"b!'8"G':

 	fh/r"   c                 6   t        dddddt        j                  gg dd      }t        |j                  |j
                  dd      }t        g dg dg d	g      }t        g d
d      |_        t        g dd      |_        t        j                  ||       y )NrM   r   r;   r;   rO   rO   rO   rO   r>   r?   Tr[   r   rM   r   rM   )rM   r;   rO   )r   r;   r8         ?       @r^   r>   rT   r;   rO   r^   r?   r   r   nanr	   r>   r?   r   rG   rI   r)   r*   r/   r    r   r1   s       r!   test_margin_dropnazTestCrosstab.test_margin_dropna   s|    
 aAq!RVV4;MNO"$$d4@iI>?0s; S9
fh/r"   c           	         t        dt        j                  t        j                  t        j                  dt        j                  gdt        j                  ddddgd      }t        |j                  |j
                  dd      }t        g dg d	g d
g      }t        g dd      |_        t        g dd      |_        t        j                  ||       y )NrM   r   r;   rO   r   Tr   r   rL   rM   rM   r   r   r>   rT   )      @      @r^   r?   r   r   s       r!   test_margin_dropna2z TestCrosstab.test_margin_dropna2	  s    bffbffbffa82661aQRTU?VW
 "$$d4@iI>?0s; !2=
fh/r"   c                    t        dt        j                  t        j                  t        j                  t        j                  dgg dd      }t        |j                  |j
                  dd      }t        g dg dg d	g      }t        g d
d      |_        t        g dd      |_        t        j                  ||       y )NrM   r   r   r   Tr   r   rL   r   r   r>   rT   r   r?   r   r   s       r!   test_margin_dropna3z TestCrosstab.test_margin_dropna3  s    bffbffbffbffa8?QR
 "$$d4@iI>?0s; S9
fh/r"   c                 z   t        dddddt        j                  gg dd      }t        |j                  |j
                  dd      }t        g dg d	d
dt        j                  gg dg      }t        ddt        j                  dgd      |_        t        g dd      |_        t        j                  ||       y )NrM   r   r   r   TFr   rM   r   r   )rM   r;   r   r   )r   rO         @r   r   r^   r>   rT   r   r?   r   r   s       r!   test_margin_dropna4z TestCrosstab.test_margin_dropna4  s    
 aAq!RVV4;MNO"$$d5Ak;ArvvTUS"&&%8sC S9
fh/r"   c           	         t        dt        j                  t        j                  t        j                  dt        j                  gdt        j                  ddddgd      }t        |j                  |j
                  dd      }t        g d	g d
dddt        j                  gg dg      }t        ddt        j                  dgd      |_        t        ddt        j                  dgd      |_        t        j                  ||       y )NrM   r   r;   rO   r   TFr   )rM   r   r   r   )r   rM   r   r   r   )rM   rO   r   r   r   r   r^   r>   rT   r   r   r?   r   r   s       r!   test_margin_dropna5z TestCrosstab.test_margin_dropna5)  s    bffbffbffa82661aQRTU?VW
 "$$d5A^aArvv->O
 S"&&%8sC #sBFFE!:E
fh/r"   c           
      z   t        j                  g dt              }t        j                  dddddt         j                  dgt              }t        j                  g dt              }t	        |||gdgddgd	d
      }t        j                  ddddt         j                  t         j                  dgg dgddg      }t        g dg dg dg|      }t        g dd      |_	        t        j                  ||       t	        ||g|ddgdgd	d
      }t        j                  g dddt         j                  ddt         j                  dggddg      }t        g dg dddt         j                  gg dg dddt         j                  gg dg|      }t        g dd      |_        t        j                  ||       t	        ||g|ddgdgd	d	      }t        j                  g dg d gddg      }t        g d!g d!g d"g d#g d$g|      }t        g dd      |_        t        j                  ||       y )%Nr~   rR   r   r   r   r>   r?   r@   TF)rB   rC   r[   r   r^   )r   r   r   r   r   r   r_   r   )rM   r   rM   r   r   r   r   )r   r   rM   rM   r   rM   r8   )r;   r   r   rM   r   r   rZ   )rI   r   r   r^   rT   )r   r   r   r   r   r   r^   r_   r   r   )r   r   r   )rM   rM   r   rM   )r8   r   g      @rN   )r   r   r^   )r   r   r   r   r^   )r   r   r   r   r_   r   )r   r   r   r   )r8   rM   r   )r   rW   r   r   r	   r   from_arraysr   r   rG   r)   r*   rI   )r/   r>   r?   r@   r   r   r1   s          r!   test_margin_dropna6z TestCrosstab.test_margin_dropna66  s(   HHFfUHHeUE5%GvVHHFf
 1vc
DQV
 ""ueRVVRVVUCG *
 "$9;PQ
 43?
fh/FAc
cUDQV
 ""ArvvueRVVR@ *
 ArvvArvv 
 !!9D
fh/FAc
cUDQU
 ""02RS*
 	9iC1
 !!9D
fh/r"   c           	         t        g dg dddt        j                  ddgd      }t        ddgd      }t        dd	gd
      }t        ddgddgg||      }t        ddgddgg||      }t        ddgddgg||      }t	        j
                  t        |j                  |j                  d      |       t	        j
                  t        |j                  |j                  d      |       t	        j
                  t        |j                  |j                  d      |       t	        j
                  t        |j                  |j                  d      |       t	        j
                  t        |j                  |j                  d      t        |j                  |j                  d             t	        j
                  t        |j                  |j                  d      t        |j                  |j                  d             t        ddgddgddggt        g ddd      t        dd	gd
d            }t        g dg dgt        ddgdd      t        g dd
d            }t        g dg d g d!gt        g ddd      t        g dd
d            }	t	        j
                  t        |j                  |j                  dd"      |       t	        j
                  t        |j                  |j                  dd"      |       t	        j
                  t        |j                  |j                  dd"      |	       y )#NrM   r   r   r   r   r;   r;   rO   rO   rO   rM   r=   r   r>   rT   r;   rO   r?   皙?r   333333?rV   r         ?      ?      ?all	normalizeTrG   rI   皙?rM   r   r^   r   rU   rS   )r   r   r   )r   r   皙?r   )r   r   r   )r   r   r   r   r   rM   r   r[   )	r   r   r   r   r)   r*   r	   r>   r?   )
r/   r    rindexcindexfull_normal
row_normal
col_normalrow_normal_marginscol_normal_marginsall_normal_marginss
             r!   test_crosstab_normalizez$TestCrosstab.test_crosstab_normalizeu  s   !q!RVVQPQ>RS
 1vC(1vC(#qC: 6ffUa4,7vvV
a3*5VV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           	         t        g dg dddt        j                  ddgd      }t        t        j                  g d      t        j                  g d      gt        j                  g d             t        g dg dg d	gt        g d
dd      t        g dd            }t        |j                  |j                  |j                  ddd      }t        j                  ||       t        g dg dddt        j                  ddgd      }t        g dg dg dgt        g d
dd      t        g ddd            }d}t        j                  t        |      5  t        |j                  |j                  |j                  t        j                  dd      }d d d        t        j                  ||       y # 1 sw Y    xY w)Nr   r   rM   r=   )rM   rM   r   r   )rM   r   rM   r   )r   r   r   )r   r   r   )r   r   rM   r   r>   r   r   r   r?   rT   rV   countr   T)rx   r   r[   r   rO   r;   )r   r           r   using DataFrameGroupBy.sumrn   )r   r   r   r	   rW   r   r>   r?   r@   r)   r*   assert_produces_warningFutureWarningrv   )r/   r    norm_counts	test_casenorm_sumrs   s         r!   test_crosstab_normalize_arraysz+TestCrosstab.test_crosstab_normalize_arrays  sp   !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	 	i2		 	s   !>F>>Gc           	         t        g dg dt        j                  t        j                  t        j                  t        j                  t        j                  gd      }t        ddgddggt        ddgdd	      t        d
dgd            }dD ]F  }t	        |j
                  |j                  |j                  d|      }t        j                  ||       H t        dt        j                  gddggt        ddgdd	      t        d
dgd            }|r|d
   j                  d      |d
<   t	        |j
                  |j                  |j                  dd      }t        j                  ||       y )Nr   r   r=   r   rM   r   r>   r-   r   r;   rO   r?   rT   rV   )TrG   rI   r   )ry   rx   r   F)r   r   r   r   r	   r>   r?   r@   r)   r*   r,   )r/   using_array_managerr    emptyi
calculatednanss          r!   test_crosstab_with_emptiesz'TestCrosstab.test_crosstab_with_empties  s;   $$ffbffbffbffbff=
 3Z#s$AS81a&s+
 , 	5A!"$$RTT7VWXJ!!%4	5 266]S#J'AS81a&s+

 1gnnW-DGbddBDDwRWX

dJ/r"   c           	         t        g dg dddt        j                  ddgd      }d}t        j                  t
        |      5  t        |j                  |j                  |j                         d d d        d}t        j                  t
        |      5  t        |j                  |j                  t        j                  	       d d d        d
}t        j                  t
        |      5  t        |j                  |j                  d       d d d        t        j                  t
        |      5  t        |j                  |j                  d       d d d        d}t        j                  t
        |      5  t        |j                  |j                  dd       d d d        y # 1 sw Y   8xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xxY w# 1 sw Y   y xY w)Nr   r   rM   r=   z)values cannot be used without an aggfunc.rn   )ry   z%aggfunc cannot be used without values)rx   zNot a valid normalize argument42r   *   zNot a valid margins argumentr   r   )r   r   r   rp   rq   rr   r	   r>   r?   r@   mean)r/   r    errors      r!   test_crosstab_errorsz!TestCrosstab.test_crosstab_errors  sh    !q!RVVQPQ>RS
 <]]:U3 	.RTT244-	. 8]]:U3 	2RTT2441	2 1]]:U3 	1RTT24440	1 ]]:U3 	/RTT2442.	/ /]]:U3 	>RTT2445"=	> 	>	. 	.	2 	2	1 	1	/ 	/	> 	>s<   -F'1F4,#G 2#G:$G'F14F= G	GG!c                 N   t        g dg dd      }g d}|d   j                  d      j                  j                  |      |d<   t	        |d   |d         }t        g dd	      }t        ||d
d      }g dg dg dg}t        |||      }t        j                  ||       y )N)HondaAcuraTeslar   r   r   )Sedanr   ElectricPickupr   r   )MAKEMODEL)r   r   r   r   categoryr   )r   r   r   rT   F)
categoriesorderedrU   )r   r   r   )r   r   rM   r   rM   r   rV   )	r   r,   catset_categoriesr	   r   r   r)   r*   )r/   r    r   r0   expected_indexexpected_columnsexpected_datar1   s           r!   %test_crosstab_with_categorial_columnsz2TestCrosstab.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
 	fh/r"   c                 4   t        g ddz  g ddz  g ddz  t        j                  j                  d      j	                  d      t        j                  j                  d      j	                  d      d	      }t        |d
   |d   g|d   gdt        j                  |d         }t        g dg dgg dg dgd
dg      }t        g dd      }t        j                  g dg dg ddt        j                  dgt        j                  ddgdt        j                  dgt        j                  ddgdt        j                  dgt        j                  ddgg dg
      }t        |||      }|d   j                  d      |d<   t        j                  ||       y )Nr   r   r   threer   r4      r   r   r   r   r   r   rO   r      r   r   r   r   r   r   r   r   Tr   )rG   rI   r[   rx   ry   )r^   r   r   r   )r_   r   r   r   )
rM   rM   rM   r   r   r   r;   r;   r;   r   )
rM   r   r;   rM   r   r;   rM   r   r;   r   levelscodesrH   r   rT   )r   r   r   r   )      (@r   g      8@rV   r^   r-   )r   r   r   r   r   r	   r'   r   r   rW   r   r,   r)   r*   )r/   r    r0   r   expected_columnr   r1   s          r!   test_crosstab_with_numpy_sizez*TestCrosstab.test_crosstab_with_numpy_size  s}   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
fh/r"   c                 J   t        t        d      d      }t        t        dd      d      }t        t        dd      d      }t        t        d      d      }ddi}t        ||      }t        ||      j                  |d      }t	        j
                  ||       t        ||g|      }t        ||g|      j                  |d	
      }t	        j
                  ||       t        |||g      }t        |||g      j                  |d      }t	        j
                  ||       y )Nr;   r   rT   rM   rO   r   waldo)rI   axisr   )rG   r   )r   ranger	   rename_axisr)   r*   )r/   r   s2_foos2_bars3mapperr0   r1   s           r!   test_crosstab_duplicate_namesz*TestCrosstab.test_crosstab_duplicate_namesK  s    E!H5)a%0a%0E!H7+  "f%B'33F3K
fh/ 2v,+RL"-99Q9O
fh/ "r6l+BV-99&q9Q
fh/r"   rH   r>   rA   r   r@   c                 B   t        t        d      |d         }t        t        dd      |d         }t        j                  t        d      t        dd      g|      }t        d|      j	                  dd      }t        ||      }t        j                  ||       y )	Nr;   r   rT   rM   rO   r   rN   )
fill_value)r   r  r   r   r(   r	   r)   r*   )r/   rH   r   r   mir1   r0   s          r!   test_crosstab_tuple_namez%TestCrosstab.test_crosstab_tuple_nameg  s    E!H58,E!QKeAh/##U1XuQ{$;5I!2&..qQ.?"b!
fh/r"   c           	      6   t        t        d      d      }t        t        d      d      }t        t        j                  dd      t        t        d      d      t        t        d      d            }t        ||      }t        j                  ||       y )Nr;   r   rT   )r@   rP   r-   rR   rV   )	r   r  r   r   eyer   r	   r)   r*   )r/   r   r   r1   r0   s        r!   test_crosstab_both_tuple_namesz+TestCrosstab.test_crosstab_both_tuple_namesr  st    E!H:.E!H:.FF1G$az2%(4

 "b!
fh/r"   c                 6   t        g dg ddg d      }t        |j                  |j                  |j                  g      }t        g dd      }t        j                  g d	d
dg      }t        g dg dg dg||      }t        j                  ||       y )N)r;   rM   r   )r8   rO   r   )r?   r>   r   r   r   rN   r4   rD   rT   ))rM   rO   )r   r   )r;   r8   r?   r>   r   )rM   r   r   r   )r   r   rM   rV   )
r   r	   rG   r?   r>   r   r   r   r)   r*   )r/   r    r0   e_idx	e_columnsr1   s         r!   test_crosstab_unsorted_orderz)TestCrosstab.test_crosstab_unsorted_order  s}    YY7O"((RTT244L1oG4**+CCQT:V		9-UI
 	fh/r"   c           	      @   t        g ddz  g ddz  g ddz  dgdz  dgdz  d	      }d
}t        j                  t        |      5  t	        |j
                  |j                  g|j                  |j                  t        j                  dd      }d d d        t        t        j                  dgdz  dgz   t              j                  dd      t        g dd      t        j                   g dddg            }t        j"                  |       y # 1 sw Y   xY w)Nr   r   r4   r   r   rO   r   r   r   r   rn   T)ry   rx   r   r[      rM   rR   r<   r;   r   r   rT   )
)r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   r]   r   r   r   )rI   rG   )r   r)   r   r   r	   r   r   r   r   r   rv   rW   floatreshaper   r   r   r*   )r/   r    rs   r0   r1   s        r!   (test_crosstab_normalize_multiple_columnsz5TestCrosstab.test_crosstab_normalize_multiple_columns  s   3a7$q(?!CS2XS2X
 +''SA 	rttttF	 HHaS2X^5199"a@/c:(( Cj
& 	fh/9	 	s   A
DDc                    t        g dg dg dg dg dd      }t        |j                  |j                  g|j                  ddd	
      }t        ddgddgddgd	dgddgg      }t        g dg dgg dg dgddg      |_        t        ddgd      |_        t        j                  ||       t        |j                  |j                  g|j                  ddd
      }t        g dg dg dg dg      }t        g dd      |_        t        d d!gd"d#ggg d$g d%gddg      |_        t        j                  ||       t        |j                  |j                  g|j                  ddd
      }t        g d&g d&g d'g d(g d)g      }t        g dd      |_        t        g dg dgg dg dgddg      |_        t        j                  ||       y )*N	r   r   r   r   r   r   r   r   r   	r   r   r   r   r   r   r   r   r   	smalllarger  r  r  r  r  r  r  	rM   r   r   r;   r;   rO   r8   r   rZ   	r   rO   r8   r8   r   r   r   	   r!  r   T	Sub-Totalr   )r[   rm   r   r   g]QJVU?F]kSU?rM   9?q?'c`?)r"  r   r   r_   r   r   )rM   rM   r   r   r   rM   r   rM   r   r   r   r   r   r  r  r   rT   )r   r   9?q?)r   r   r#  )r   r   r(  )r  r  r"  r   r   r   r   )r   r   rM   rM   r   rM   r   rM   )9?q?r*  r(  )r(  r*  r#  )r   r(  r(  )r$  g#G?rM   )r   r	   r   r   r   r   rG   r   rI   r)   r*   r.   s       r!   test_margin_normalizez"TestCrosstab.test_margin_normalize  s   TT
 10
( TT244L"$$;RS
 3Z#sh%9Aq6HhCWX
 $/1CD"O4*

 !'7!3#>
fh/ TT244L"$$;RS
 %%$"	
 !!@sK#ENUEN3.*

 	fh/ TT244L"$$;RV
 ....'
 !!@sK#/1CD"O4*

 	fh/r"   c                 Z   t        g dg dg dg dg dd      }t        |j                  |j                  |j                  gddd	      }t        g d
g dg dgg d      }t        g dg dgg dg dgddg      |_        d|j                  _        t        j                  ||       y )Nr  r  r  r  r   r   Tmargin)rG   rI   r[   rm   r   )r*  r*  r(  r   r$  )r*  r*  r*  r(  r%  )r(  r(  r#  r(  r   )r  r  r-  rN   )r   r   r-  r&  )r   r   rM   rM   r   r'  r   r   r   r   )r   r	   r   r   r   r   rI   rG   rU   r)   r*   r.   s       r!   &test_margin_normalize_multiple_columnsz3TestCrosstab.test_margin_normalize_multiple_columns  s     TT
 10
& $$TT244L!
 BB=
 /
 &,.@A"O4*

 "
fh/r"   c           	      8   t        g dg dg ddd      }t        |d   |d   |d	   d
d      }t        dt        j                  ddgddt        j                  dgg dgt	        g ddd      t	        g ddd      d      }t        j                  ||       y )N)rM   r   r   rM   )r;   r;   rO   r8   )            $@r   r1  r4   Float64rR   r   r   r   rv   T)ry   rx   r[   r0  r1        "@r   g      &@)r3  r   r1  g      4@r   r   r   )r   r   g      @r^   )rG   rI   rS   )r   r	   r   NAr   r)   r*   r.   s       r!   test_margin_support_Floatz&TestCrosstab.test_margin_support_Float.  s     \8OP
 sGsGc7
 ruudC(sBEE4(&
 )D0sK	
 	fh/r"   c                 |   t        g dg dd      }|d   j                  t        d            |d<   g d}|d   j                  j	                  |      |d<   t        |d   |d   d	      }t        g d
d      }t        g dd      }g dg dg dg dg}t        |||      }t        j                  ||       y )N)r   r   r   r   r   r   )r   r   r   r   r   r   )FirstSecondr7  T)r   r  r8  )r[   )r   r   r   r^   rT   )r   r   r   r^   )rM   rM   r   r   r)  )r   rM   r   r;   )rM   r;   r   r   rV   )	r   r,   r   r   reorder_categoriesr	   r   r)   r*   )r/   r    customized_categories_orderr0   r   r   r   r1   s           r!   +test_margin_with_ordered_categorical_columnz8TestCrosstab.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
 	fh/r"   N)(__name__
__module____qualname__r2   r5   rp   markparametrizer   rW   listtuplerJ   rX   rj   rt   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r+  r.  r5  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                 &   t         j                  j                  d      }t        |j	                  ddd            j                  |       }t        |j	                  ddd            j                  |      }t        ||dd      }t        g d	d
d      }t        g dd
d      }g dg dg dg dg}t        |||      }	t        j                  ||	       d|j                  |dk(  <   t        |j                  t              }
|
r"|j                         j                  d   dk(  sJ t        ||dd      }g dg dg dg dg}t        |||      }	|
s(|	j                  g d   }	|	d   j                  d      |	d<   t        j                  ||	       y )Nr   r   r;   r9   r:   TFr   )r   rM   r^   r   rE   r   )r   rM   r   r^   rD   )r<         )      '   )   rJ  !   )2   rN  r9   rM   )r   r   r   )(       H   )r   r   r^   r^   r-   )r   r   r   r   rF   r,   r	   r   r   r)   r*   rc   
isinstancerS   r   value_counts)rD  rE  gr>   r?   r0   rI   rG   ry   r1   a_is_cats              r!   test_categoricalsrV  ^  sd    			a Aqzz!QSz)*11':Aqzz!QSz)*11':AaD7FM@G"(AEL,FF0H&(+ AEE!q&M!''#34H1>>+//2a777aD7FI|]CF0H<<."5/009&(+r"   )numpyr   rp   pandasr   r   r   r   r   r   r   r	   pandas._testing_testingr)   fixturer    r$   r?  r@  rV  rC  r"   r!   <module>r\     s          02 02fV0 V0r Z$9:Z$9:, ; ;,r"   