
    bMhB                        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                            dddg          ej                            d	ddg          d
                         ZdS )    N)CategoricalDtypeCategoricalIndex	DataFrameIndex
MultiIndexSeriescrosstabc            
         t          g dg dg dt          j                            d                              d          t          j                            d                              d          t          j                            d                              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    b/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/reshape/test_crosstab.pyr    r       s    	       &&q))99"==&&q))99"==&&q))99"==U+	
 +	
-
 -
B^ 9b"XD1111    c                   b   e Zd Zd Zd Ze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                            dddgddgg          d             Z d Z!d Z"d  Z#d! Z$d" Z%d# Z&d$ Z'd%S )&TestCrosstabc                 >   t          |d         |d                   }|                    ddg                                                                          }t	          j        ||                    d                              t          j	                             d S )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   s{    "S'2c7++::sCj))..0088::
fhooa&8&8&?&?&I&IJJJJJr"   c                    t          |d         |d         |d         g          }|                    g d                                          }|                    d                              d                              d                              t          j                  }t          j	        ||           t          |d         |d         g|d                   }|                    g d                                          }|                    d                              d                              t          j                  }t          j	        ||           d S )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6::ooo..3355##C((0055<<Q??FFrxPP
fh///2c7BsG,bg66::ooo..3355##C((//2299"(CC
fh/////r"   boxc                     |t           j                            d                              ddd                    } |t           j                            d                              ddd                    } |t           j                            d                              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        ||           d S )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   s    C	%%a((11!QS1AABBC	%%a((11!QS1AABBC	%%a((11!Rc1BBCCQQQ//00!aVsejIIIBsGbgr#w%788
fh///1a&!sejIIIRWbg.388
fh/// !QBsGRW-- 'y")
fh/////r"   c                    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        ||           d S )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    999OOO444???*C*C*CDDDHYYYbh///VaVAW---1a&w///
 
 
 !Q
fh///!Q
fh/////r"   c                    t           j                            d                              ddd          }t           j                            d                              ddd          }t           j                            d                              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         }|	                    d	g          
                                                    d          }t          t          |          gt          dgd	                    }t          j        ||g          }d|_        t%          j        ||           |j        d         }	|	                    ddg          
                                                    d          }
t          j        |
t          t          |          gdg          g          }
d|
_        |
                    |	j                  }
|
                    d                              t           j                  }
t%          j        |	|
           d S )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   s0   I!!!$$--a-==I!!!$$--a-==I!!!$$--a-==QQQ//00!aVsejRVWWW|!V++++~#Sz1111)$::se$$))++22488SWWIUE7-E-E-EFFF
9h
344#
x222:e$::sCj))..0077==9hBy(N(N(NOPP##HN33??1%%,,RX66
x22222r"   c           
         t           j                            d                              ddd          }t           j                            d                              ddd          }t           j                            d                              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         }|	                    d	g          
                                                    d          }t          t          |          gt          dgd	                    }t          j        ||g          }d|_        t%          j        ||           |j        d         }	|	                    ddg          
                                                    d          }
t          j        |
t          t          |          gdg          g          }
d|
_        |
                    |	j                  }
|
                    d                              t           j                  }
t%          j        |	|
           d}dd d	dgfD ]M}t1          j        t4          |          5  t          |||gd	gd
d|           d d d            n# 1 swxY w Y   Nd S )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   s   I!!!$$--a-==I!!!$$--a-==I!!!$$--a-==QQQ//00FU 
 
 
 |!V++++~#Sz1111+&::se$$))++22488SWWIUG93-G-G-GHHH
9h
344%
x222:g&::sCj))..0077==9hBy(P(P(PQRR##HN33??1%%,,RX66
x2226 $c
3 		 		Lz555  F!U' !-                 		 		s    KK		K		c                 d   t           j                            d                              ddd          }t           j                            d                              ddd          }t           j                            d                              ddd          }t           j                            d                              d          }t          ||g||dd	d
gdg          }t          ||||d          }|                    dd	d
gdd          }t          j	        ||           d S )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+   I!!!$$--a-==I!!!$$--a-==I!!!$$--a-==&&q))99#>>FAvuu~QVPW
 
 
 q1GGHH>>UENE5 " 
 
 	eX.....r"   c                 N   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        |           d S )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    HFFFfUUUHFFFfUUUHFFFf
 
 
 q1a&C5C:eTTT"RRR*
 
 
 	ck1-----r"   c                    t          g dg d          }t          g dg d          }t          ||          }t          t          g dd          t          g dd                    }t	          j        ||           d S )	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     IIIYYY///IIIYYY///"b!!'888"G':::
 
 

 	fh/////r"   c                 B   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
        ||           d S )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!RV4;M;M;MNNOO"$d4@@@iiiIII>??000s;;; S99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
        ||           d S )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    bfbfbfa8261aQRTU?VWW
 
 "$d4@@@iiiIII>??000s;;; !2!2!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
        ||           d S )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    bfbfbfbfa8?Q?Q?QRR
 
 "$d4@@@iiiIII>??000s;;; S999
fh/////r"   c                 v   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
        ||           d S )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!RV4;M;M;MNNOO"$d5AAAkkk;;;ArvTUUS"&%8sCCC S99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
        ||           d S )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    bfbfbfa8261aQRTU?VWW
 
 "$d5AAA^^^^^aArv->O
 
 S"&%8sCCC #sBFE!:EEE
fh/////r"   c           
         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        ||           d S )%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   HFFFfUUUHeUE5%GvVVVHFFFf
 
 
 1vc
DQV
 
 
 "ueRVRVUCGGG *
 
 
 """$9$9$9;P;P;PQ
 
 
 4443???
fh///FAc
cUDQV
 
 
 "AAArvueRVR@ *
 
 
 ArvArv 
 
 
 !!9!9!9DDD
fh///FAc
cUDQU
 
 
 "0002R2R2RS*
 
 
 YY			999iiiC1
 
 
 !!9!9!9DD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"          |	           d S )#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!RVQPQ>RSS
 
 1vC(((1vC(((#qC: 6ffUUUa4,7vvVVV
a3*5VVTTT
 	hrtRTUCCC[QQQ
hrtRTTBBBKPPP
hrtRTWEEEzRRR
hrtRTYGGGTTT
RT241---RT249555	
 	
 	
 	RT241---xbdg/V/V/V	
 	
 	
 '1Xd|c3Z0Cx@@@1a&s(;;;
 
 

 ']]OOO,AS999---cBBB
 
 
 ']]OOO]]];Cx@@@---cBBB
 
 

 	RT247DAAACU	
 	
 	
 	RT249dCCCEW	
 	
 	
 	RT244>>>@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            n# 1 swxY w Y   t          j
        ||           d S )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  sS   !//q!RVQPQ>RSS
 

 	Xlll##RXlll%;%;<bh|||>T>T	
 	
 	

  __///?Cx@@@---c222
 
 

 D"$g
 
 
	 	i555!//q!RVQPQ>RSS
 
 [[---7Cx@@@---cBBB
 
 

 +'SAAA 	 	 bdBD"&E4  I	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	i22222s   ./F))F-0F-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 ]:}t	          |j        |j        |j        d|          }t          j	        ||           ;t          dt          j        gddggt          ddgdd	          t          d
dgd                    }|r|d
         
                    d          |d
<   t	          |j        |j        |j        dd          }t          j	        ||           d S )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   $__$__fbfbfbfbf= 
 
 3Z#s$AS8881a&s+++
 
 
 , 	5 	5A!"$RT7VWXXXJ!%444426]S#J'AS8881a&s+++
 
 

  	.1gnnW--DGbdBDwRWXX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            n# 1 swxY w Y   d}t          j        t
          |          5  t          |j        |j        t          j
        	           d d d            n# 1 swxY w Y   d
}t          j        t
          |          5  t          |j        |j        d           d d d            n# 1 swxY w Y   t          j        t
          |          5  t          |j        |j        d           d d d            n# 1 swxY w Y   d}t          j        t
          |          5  t          |j        |j        dd           d d d            d S # 1 swxY w Y   d S )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  s    !//q!RVQPQ>RSS
 
 <]:U333 	. 	.RT24----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 8]:U333 	2 	2RT241111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 1]:U333 	1 	1RT2440000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 ]:U333 	/ 	/RT242....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ /]:U333 	> 	>RT245"====	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>sZ   "A22A69A6'CCC5DD"%D"E--E14E1G  GGc                    t          g dg dd          }g d}|d                             d          j                            |          |d<   t	          |d         |d                   }t          g dd	          }t          ||d
d          }g dg dg dg}t          |||          }t          j        ||           d S )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NNSSS 
 
 544
k((448GG
SS7"V*bk22:::HHH+:u7
 
 
 #IIIyyy99I
 
 
 	fh/////r"   c                 X   t          g ddz  g ddz  g ddz  t          j                            d                              d          t          j                            d                              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                             d          |d<   t          j        ||           d S )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   333a7$__q(???!CY**1--==bAAY**1--==bAA 
 
 c7BsG$WIGc7
 
 
 $2224G4G4GH1113Q3Q3QR*
 
 

   5 5 5C@@@bfc"c"bfc"c"bfc"c""""
 
 
 
 
 #5/0099
fh/////r"   c                    t          t          d          d          }t          t          dd          d          }t          t          dd          d          }t          t          d          d          }ddi}t          ||          }t          ||                              |d          }t	          j        ||           t          ||g|          }t          ||g|                              |d	
          }t	          j        ||           t          |||g          }t          |||g                              |d          }t	          j        ||           d S )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!HH5)))a%000a%000E!HH7+++  "f%%B''33F3KK
fh/// 2v,++RL"--99Q9OO
fh/// "r6l++BV--99&q9QQ
fh/////r"   rH   r>   rA   r   r@   c                    t          t          d          |d                   }t          t          dd          |d                   }t          j        t          d          t          dd          g|          }t          d|                              dd          }t          ||          }t          j        ||           d S )	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!HH58,,,E!QKKeAh///#U1XXuQ{{$;5III!2&&&..qQ.??"b!!
fh/////r"   c           	         t          t          d          d          }t          t          d          d          }t          t          j        dd          t          t          d          d          t          t          d          d                    }t          ||          }t          j        ||           d S )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  s    E!HH:...E!HH:...F1G$$$az222%((44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	        ||           d S )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    YYYYYY77OOO"(RT24L11oooG444*+C+C+CCQT:VVV	YY			999-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            n# 1 swxY w Y   t          t          j        dgdz  dgz   t                                        dd          t          g dd          t          j        g dddg                    }t          j        ||           d S )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   333a7$__q(???!CS2XS2X 
 
 +'SAAA 	 	rtt  F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 HaS2X^511199"a@@///c:::(   Cj  
 
 
& 	fh/////s   
6BBB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
        ||           d S )*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TTTT
 
 
 100000 
 
( T24L"$;RS
 
 
 3Z#sh%9Aq6HhCWX
 
 $///1C1C1CD"??OOO4*
 
 

 !'7!3#>>>
fh/// T24L"$;RS
 
 
 %%%%%%$$$"""	
 
 !!@!@!@sKKK#ENUEN3<<.*
 
 

 	fh/// T24L"$;RV
 
 
 ............'''
 
 !!@!@!@sKKK#///1C1C1CD"??OOO4*
 
 

 	fh/////r"   c                 R   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
        ||           d S )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TTTT
 
 
 100000 
 
& $T24L!
 
 
 BBBBBB===
 /..
 
 
 &,,,.@.@.@A"??OOO4*
 
 

 "
fh/////r"   c           	      b   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        ||           d S )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     ,,\\\8O8O8OPP
 
 
 sGsGc7
 
 
 rudC(sBE4(&&&
 )))DDD000sKKK	
 	
 	
 	fh/////r"   c                    t          g dg dd          }|d                             t          d                    |d<   g d}|d         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        ||           d S )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77888 
 
 k(()9$)G)G)GHH7&5oo#ko889TUU7"W+r(|TBBB555GDDD !7!7!7hGG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 K K
	0 	0 	0 [URXtU$;<<0 0 =<0.0 0 0$3 3 3<0 0 0d/ / /". . .0 0 0
0 
0 
00 0 00 0 0
0 
0 
00 0 0=0 =0 =0~1
 1
 1
f$3 $3 $3L0 0 0@> > >40 0 0,+0 +0 +0Z0 0 08 [WZ'8:s:K&LMM0 0 NM00 0 00 0 0)0 )0 )0VK0 K0 K0Z+0 +0 +0Z0 0 040 0 0 0 0r"   r$   a_dtyper   r-   b_dtypec                    t           j                            d          }t          |                    ddd                                        |           }t          |                    ddd                                        |          }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        d         dk    sJ t          ||dd          }g dg dg dg dg}t          |||          }	|
s-|	j        g d         }	|	d                             d          |	d<   t          j
        ||	           d S )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  ^  s    		a  Aqzz!QSz))**11'::Aqzz!QSz))**11'::AaD777FMMM@@@G"""(AAAEllLLL,,,FF00H&(+++ AE!q&M!'#344H71>>++/2a7777aD777FllIII|||]]]CF00H :<."5/009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\     sB                                   02 02 02fV0 V0 V0 V0 V0 V0 V0 V0r Z$9::Z$9::, , ;: ;:, , ,r"   