
    dw                     "   d dl Zd dlZd dlmZ d dlZd dl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)is_categorical_dtype)CategoricalIndex	DataFrameIndex
MultiIndexSeriescrosstabc            
         t          g dg dg dt          j                            d          t          j                            d          t          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randnpdconcat)dfs    ^/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/reshape/test_crosstab.pyr   r      s    	       $$$$$$U+	
 +	
-
 -
B^ 9b"XD1111    c                   \   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$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_singleG   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_multipleL   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                    } |t           j                            ddd                    } |t           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        ||           d S )Nr      d   r%      
   abcr<   r=   r>   )rownamescolnamesr=   r>   )rA   r@   row_0col_0)
r   r   randintr   r	   r'   r(   indexnamescolumns)r-   r4   r<   r=   r>   r   r.   r/   s           r   test_crosstab_ndarrayz"TestCrosstab.test_crosstab_ndarrayW   s    C	!!!QS!1122C	!!!QS!1122C	!!!Rc!2233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      rK   r;   rE   )r9      r9   rM   r9   )r<   r=   r>   df)r9   rM   r9   dtyperK   r   rB   namer9   rM   rC   rE   rG   )	r   r   arrayr+   r   r   r	   r'   r(   )r-   r<   r=   r>   r/   r.   s         r   test_crosstab_non_alignedz&TestCrosstab.test_crosstab_non_alignedo   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          }t           j                            ddd          }t           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         }|                    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      r7   r8   r9   r6   r;   r<   r?   T)r@   rA   marginsr<   r=   r>   All i8r\   rR   rL   )r   r   rD   r   r	   rE   rF   rG   r$   r%   r*   r   lenr   r   r   rS   r'   assert_series_equallocreindexr)   r+   )r-   r<   r=   r>   r   r.   all_colsexp_cols
exp_marginall_rowsexp_rowss              r   test_crosstab_marginsz"TestCrosstab.test_crosstab_margins   s   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           
      4   t           j                            ddd          }t           j                            ddd          }t           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         }|                    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}t/          j        t2          |          5  t	          |||gdgd	d
|           d d d            n# 1 swxY w Y   Nd S )Nr   rX   r7   r8   r9   r6   r;   r<   r?   TTOTAL)r@   rA   rY   margins_namerZ   r=   r>   )rj   r]   r^   rR   rL   z&margins_name argument must be a stringi  match)r   r   rD   r   r	   rE   rF   rG   r$   r%   r*   r   r_   r   r   r   rS   r'   r`   ra   rb   r)   r+   pytestraises
ValueError)r-   r<   r=   r>   r   r.   rc   rd   re   rf   rg   msgrk   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   'JJ	J	c                    t           j                            ddd          }t           j                            ddd          }t           j                            ddd          }t           j                            d          }t	          ||g||t           j        ddgd	g
          }t          ||||d          }|                    dddgd	t           j                  }t          j	        ||           d S )Nr   rX   r7   r8   r9   r6   r   r   baz)aggfuncr@   rA   )r   r   rt   valuesrv   )rE   rG   ru   )
r   r   rD   r   r	   sumr   pivot_tabler'   r(   )r-   r<   r=   r>   rv   tabler   r/   s           r   test_crosstab_pass_valuesz&TestCrosstab.test_crosstab_pass_values   s    Ia--Ia--Ia--%%FAvrvRWQX
 
 
 q1GGHH>>UENE26 " 
 
 	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   rP   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r<   r=   r>   F)r@   rA   dropna))r   r   )r   r   )r   r   )r   r   rF   )	r   rU   objectr	   r   from_tuplesr'   assert_index_equalrG   )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)rK      r9   rL   )rM   r6      r+   rB   rQ   rS   rC   rT   )r   r	   r   r   r'   r(   )r-   s1s2actualr/   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 )NrK   r   r9   r9   rM   rM   rM   rM   r<   r=   TrY   r~   rK   r   rK   rK   r9   rM   )r   r9   r6         ?       @r\   r<   rR   r9   rM   r\   r=   r   r   nanr	   r<   r=   r   rE   rG   r'   r(   r-   r   r   r/   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 )NrK   r   r9   rM   r   Tr   r   rJ   rK   rK   r   r   r<   rR         @      @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 )NrK   r   r   r   Tr   r   rJ   r   r   r<   rR   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                 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 )NrK   r   r   r   TFr   r   r   )r   rM   r   r   r<   rR   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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 )NrK   r   r9   rM   r   TFr   r   rJ   )rK   rM   r   r   r<   rR   r   r=   r   r   s       r   test_margin_dropna5z TestCrosstab.test_margin_dropna5)  s    bfbfbfa8261aQRTU?VWW
 
 "$d5AAAiiiIII>??000s;;; !2!2!2===
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        g d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g dgddg          }t          g dg d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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|   rP   r   r   r}   r<   r=   r>   TF)r@   rA   rY   r~   )r   r   r   r   r\   )r   r   r   r   r]   r   )rK   r   rK   r   r   )r   r   rK   rK   r6   )r9   r   r   rK   rX   )rG   r   r   r\   rR   )r   r   r   r   r\   )r   r   r   r   r]   r   )r   r   r   r   )r6   r   rX   rL   )r   r   r\   )r6   rK   r   )r   rU   r   r   r	   r   from_arraysr   r   rE   r'   r(   rG   )r-   r<   r=   r>   r   r   r/   s          r   test_margin_dropna6z TestCrosstab.test_margin_dropna63  s   HFFFfUUUHeUE5%GvVVVHFFFf
 
 
 1vc
DQV
 
 
 "333666 *
 
 
 __ooo?
 
 
 4443???
fh///FAc
cUDQV
 
 
 "0002R2R2RS*
 
 
 YY			999iiiC1
 
 
 !!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rK   r   r   r   r   r9   r9   rM   rM   rM   rK   r;   r   r<   rR   r9   rM   r=   皙?r   333333?rT   r         ?      ?      ?all	normalizeTrE   rG   皙?rK   r   r\   r   rS   rQ   )r   r   r   )r   r   皙?r   )r   r   r   )r   r   r   r   r   rK   r   rY   )	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_normalized  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                    }t          |j        |j        |j        t          j        dd          }t          j
        ||           d S )Nr   r   rK   r;   )rK   rK   r   r   )rK   r   rK   r   )r   r   r   )r   r   r   )r   r   rK   r   r<   r   r   r   r=   rR   rT   countr   T)ru   r   rY   r   rM   r9   )r   r           r   )r   r   r   r	   rU   r   r<   r=   r>   r'   r(   rw   )r-   r   norm_counts	test_casenorm_sums        r   test_crosstab_normalize_arraysz+TestCrosstab.test_crosstab_normalize_arrays  s   !//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
 
 

 D"$bft
 
 
	 	i22222r    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   rK   r   r<   r+   r   r9   rM   r=   rR   rT   )TrE   rG   r   )rv   ru   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   rK   r;   z)values cannot be used without an aggfunc.rl   )rv   z%aggfunc cannot be used without values)ru   zNot a valid normalize argument42r   *   zNot a valid margins argumentr   r   )r   r   r   rn   ro   rp   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   rR   F)
categoriesorderedrS   )r   r   r   )r   r   rK   r   rK   r   rT   )	r   r*   catset_categoriesr	   r   r   r'   r(   )r-   r   r   r.   expected_indexexpected_columnsexpected_datar/   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                    t          g ddz  g ddz  g ddz  t          j                            d          t          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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   r2      r   r   r   r   r   r   rM      r   r   r   r   r   r   r   r   Tr   )rE   rG   rY   ru   rv   )r\   r   r   r   )r]   r   r   r   )
rK   rK   rK   r   r   r   r9   r9   r9   r   )
rK   r   r9   rK   r   r9   rK   r   r9   r   levelscodesrF   r   r   r   )r   r   r   r   )      (@r   g      8@rT   r\   r+   )r   r   r   r   r	   r%   r   r   rU   r   r*   r'   r(   )r-   r   r.   r   expected_columnr   r/   s          r   test_crosstab_with_numpy_sizez*TestCrosstab.test_crosstab_with_numpy_size  s   333a7$__q(???!CY__R((Y__R(( 
 
 c7BsG$WIGc7
 
 
 $2224G4G4GH1113Q3Q3QR*
 
 

   5 5 5XCPPP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 )Nr9   r   rR   rK   rM   r   waldo)rG   axisr   )rE   r   )r   ranger	   rename_axisr'   r(   )r-   r   s2_foos2_bars3mapperr.   r/   s           r   test_crosstab_duplicate_namesz*TestCrosstab.test_crosstab_duplicate_names8  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    rF   r<   r?   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 )	Nr9   r   rR   rK   rM   r   rL   )
fill_value)r   r   r   r   r&   r	   r'   r(   )r-   rF   r   r   mir/   r.   s          r   test_crosstab_tuple_namez%TestCrosstab.test_crosstab_tuple_nameT  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 )Nr9   r   rR   )r>   rN   r+   rP   rT   )	r   r   r   r   eyer   r	   r'   r(   )r-   r   r   r/   r.   s        r   test_crosstab_both_tuple_namesz+TestCrosstab.test_crosstab_both_tuple_names_  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)r9   rK   r   )r6   rM   r   )r=   r<   )r   r   r   rL   r2   rB   rR   ))rK   rM   )r   r   )r9   r6   r=   r<   r   )rK   r   r   r   )r   r   rK   rT   )
r   r	   rE   r=   r<   r   r   r   r'   r(   )r-   r   r.   e_idx	e_columnsr/   s         r   test_crosstab_unsorted_orderz)TestCrosstab.test_crosstab_unsorted_orderl  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	          }t          |j        |j        g|j        |j        t          j        d
d
          }t          t          j        dgdz  dgz   t                    
                    dd          t          g ddd          t          j        g dddg                    }t          j        ||           d S )Nr   r   r2   r   r   rM   r   r   r   T)rv   ru   r   rY      rK   rP   r:   r9   r   r   r   r   )
)r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   r[   r   r   r   )rG   rE   )r   r	   r   r   r   r   r   rw   rU   floatreshaper   r   r   r'   r(   r,   s       r   (test_crosstab_normalize_multiple_columnsz5TestCrosstab.test_crosstab_normalize_multiple_columnsv  s0   333a7$__q(???!CS2XS2X 
 
 T24LD4F
 
 
 HaS2X^511199"a@@///xcJJJ(   Cj  
 
 
& 	fh/////r    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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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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  	rK   r   r   r9   r9   rM   r6   r   rX   	r   rM   r6   r6   r   r   r   	   r  r   T	Sub-Totalr   )rY   rk   r   r   g]QJVU?F]kSU?rK   9?q?'c`?)r  r   r   r]   r   r   )rK   rK   r   r   r   rK   r   rK   r   r   r   r   r   r  r  r   r   r   )r   r   9?q?)r   r   r  )r   r   r#  )r  r  r  r   r   r   r   )r   r   rK   rK   )r   rK   r   rK   )9?q?r$  r#  )r#  r$  r  )r   r#  r#  )r  g#G?rK   )r   r	   r   r   r   r   rE   r   rG   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!38#NNN
fh/// T24L"$;RS
 
 
 %%%%%%$$$"""	
 
 !+++8#
 
 
 $ENUEN3<<.*
 
 

 	fh/// T24L"$;RV
 
 
 ............'''
 
 !+++8#
 
 
 $///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)rE   rG   rY   rk   r   )r$  r$  r#  r   r  )r$  r$  r$  r#  r   )r#  r#  r  r#  r   )r  r  r'  rL   )r   r   r'  r!  )r   r   rK   rK   r   r"  r   r   r   r   )r   r	   r   r   r   r   rG   rE   rS   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)rK   r   r   rK   )r9   r9   rM   r6   )            $@r   r+  r2   Float64rP   r   r   r   rw   T)rv   ru   rY   r*  r+        "@r   g      &@)r-  r   r+  g      4@r   r   r   )r   r   g      @r\   )rE   rG   rQ   )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    N)'__name__
__module____qualname__r0   r3   rn   markparametrizer   rU   listtuplerH   rV   rh   rr   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r
  r  r  r%  r(  r/   r    r   r"   r"   F   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 /0b1
 1
 1
f"3 "3 "3H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 &0PO0 O0 O0b+0 +0 +0Z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                  }
|
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          |           t          |	           t          |	j        g d                    t          j
        ||	           d S )Nivr   r9   r7   r8   r   TFr   )r   rK   r\   r   rC   r   )r   rK   r   r\   rB   )      "   )r<  r<      )4   0   r7   rK   )r   r   r   )r=  r>  B   )r   r   r\   r\   r+   )r   r   RandomStater   rD   r*   r	   r   r   r'   r(   ra   r   rQ   value_countsrepr)r8  r9  gr<   r=   r.   rG   rE   rv   r/   a_is_cats              r   test_categoricalsrG  7  s    		h''AqyyACy(())0099AqyyACy(())0099AaD777FMMM@@@G"""(AAAEllLLL,,,FF00H&(+++ AE!q&M#AG,,H71>>++/2a7777aD777FllIII|||]]]CF00H :<."5/0099LLLNNNmmm	$%%%&(+++++r    )numpyr   rn   pandas.core.dtypes.commonr   pandasr   r   r   r   r   r   r	   pandas._testing_testingr'   fixturer   r"   r3  r4  rG  r7  r    r   <module>rN     sJ        : : : : : :                          02 02 02fn0 n0 n0 n0 n0 n0 n0 n0b Z$9::Z$9::, , ;: ;:, , ,r    