a
    oÝEbcu  ã                   @   sŽ   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 G dd„ dƒZej dddg¡ej d	ddg¡d
d„ ƒƒZdS )é    N)Úis_categorical_dtype)ÚCategoricalIndexÚ	DataFrameÚIndexÚ
MultiIndexÚSeriesÚcrosstabc                   @   s$  e Zd Zdd„ Zdd„ Zdd„ Zej de	j
eeg¡dd	„ ƒZd
d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Z ej d0d1d2gd3d4gg¡d5d6„ ƒZ!d7d8„ Z"d9d:„ Z#d;d<„ Z$d=d>„ Z%d?d@„ Z&dAS )BÚTestCrosstabc              	   C   sR   t g d¢g d¢g d¢tj d¡tj d¡tj d¡dœƒ}tj||gdd�| _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)Zignore_index)r   ÚnpÚrandomÚrandnÚpdÚconcatÚdf)ÚselfÚmethodr   © r   úb/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/pandas/tests/reshape/test_crosstab.pyÚsetup_method   s    


Öÿ/zTestCrosstab.setup_methodc                 C   sL   | j }t|d |d ƒ}| ddg¡ ¡  ¡ }t || d¡ t	j
¡¡ d S )Nr   r   r   )r   r   ÚgroupbyÚsizeÚunstackÚtmÚassert_frame_equalÚfillnaÚastyper   Úint64©r   r   ÚresultÚexpectedr   r   r    Útest_crosstab_singleE   s    z!TestCrosstab.test_crosstab_singlec                 C   s°   | j }t|d |d |d gƒ}| g d¢¡ ¡ }| d¡ d¡ d¡ tj¡}t	 
||¡ t|d |d g|d ƒ}| g d¢¡ ¡ }| d¡ d¡ tj¡}t	 
||¡ d S )Nr   r   r   ©r   r   r   r   )r   r   r   )r   r   r"   r#   r$   r'   r(   r   r)   r%   r&   r*   r   r   r    Útest_crosstab_multipleK   s    z#TestCrosstab.test_crosstab_multipleÚboxc                 C   s
  |t jjdddd�ƒ}|t jjdddd�ƒ}|t jjdddd�ƒ}t|||dœƒ}t|||gdgd	d
�}t|d |d |d gƒ}t ||¡ t||g|dgd	d�}t|d |d g|d ƒ}t ||¡ t||ƒ}t|d |d ƒ}dg|j_dg|j	_t ||¡ d S )Nr   é   éd   ©r#   é   é
   ©ÚaÚbÚcr7   ©r8   r9   )ÚrownamesÚcolnamesr8   r9   )r<   r;   Úrow_0Úcol_0)
r   r   Úrandintr   r   r%   r&   ÚindexÚnamesÚcolumns)r   r0   r7   r8   r9   r   r+   r,   r   r   r    Útest_crosstab_ndarrayX   s    


z"TestCrosstab.test_crosstab_ndarrayc                 C   s˜   t g d¢g d¢d�}t g d¢g d¢d�}t g d¢¡}tddgddggtddgd	d
�tddgdd
�d�}t||ƒ}t ||¡ t||ƒ}t ||¡ d S )N©r   é   rE   r6   ©r@   )r4   é   r4   rG   r4   )r7   r8   r9   ÚdÚf)r4   rG   r4   rE   r   r=   ©Únamer4   rG   r>   ©r@   rB   )r   r   Úarrayr   r   r   r%   r&   )r   r7   r8   r9   r,   r+   r   r   r    Útest_crosstab_non_alignedp   s    ý

z&TestCrosstab.test_crosstab_non_alignedc                 C   sP  t jjdddd�}t jjdddd�}t jjdddd�}t|||dœƒ}t|||gdgd	d
d�}|jjdksnJ ‚|jjddgks‚J ‚|d }| dg¡ 	¡  
d¡}tt|ƒgtdgdd�d�}t ||g¡}d|_t ||¡ |jd }	| ddg¡ 	¡  
d¡}
t |
tt|ƒgdgd�g¡}
d|
_|
 |	j¡}
|
 d¡ 
t j¡}
t |	|
¡ d S )Nr   é   r2   r3   r4   r1   r6   r7   r:   T)r;   r<   Úmargins©r7   r8   r9   ©ÚAllÚ Úi8rS   rJ   rF   )r   r   r?   r   r   r@   rA   rB   r"   r#   r(   r   Úlenr   r   r   rK   r%   Úassert_series_equalÚlocÚreindexr'   r)   )r   r7   r8   r9   r   r+   Úall_colsÚexp_colsÚ
exp_marginÚall_rowsÚexp_rowsr   r   r    Útest_crosstab_margins‚   s(    
z"TestCrosstab.test_crosstab_marginsc              
   C   s¶  t jjdddd�}t jjdddd�}t jjdddd�}t|||dœƒ}t|||gdgd	d
dd�}|jjdkspJ ‚|jjddgks„J ‚|d }| dg¡ 	¡  
d¡}tt|ƒgtdgdd�d�}t ||g¡}d|_t ||¡ |jd }	| ddg¡ 	¡  
d¡}
t |
tt|ƒgdgd�g¡}
d|
_|
 |	j¡}
|
 d¡ 
t j¡}
t |	|
¡ d}dd ddgfD ]P}tjt|d��* t|||gdgd	d
|d� W d   ƒ n1 �s¤0    Y  �q`d S )Nr   rO   r2   r3   r4   r1   r6   r7   r:   TÚTOTAL)r;   r<   rP   Úmargins_namerQ   r8   r9   )r`   rT   rU   rJ   rF   z&margins_name argument must be a stringiš  ©Úmatch)r   r   r?   r   r   r@   rA   rB   r"   r#   r(   r   rV   r   r   r   rK   r%   rW   rX   rY   r'   r)   ÚpytestÚraisesÚ
ValueError)r   r7   r8   r9   r   r+   rZ   r[   r\   r]   r^   Úmsgra   r   r   r    Ú%test_crosstab_margins_set_margin_name    sL    ú	
úz2TestCrosstab.test_crosstab_margins_set_margin_namec                 C   sœ   t jjdddd�}t jjdddd�}t jjdddd�}t j d¡}t||g||t jddgd	gd
�}t||||dœƒ}|jdddgd	t jd�}t 	||¡ d S )Nr   rO   r2   r3   r4   r1   r
   r   Úbaz)Úaggfuncr;   r<   )r
   r   ri   Úvaluesrk   )r@   rB   rj   )
r   r   r?   r   r   Úsumr   Zpivot_tabler%   r&   )r   r7   r8   r9   rk   Útabler   r,   r   r   r    Útest_crosstab_pass_valuesÒ   s    ÿÿz&TestCrosstab.test_crosstab_pass_valuesc                 C   sz   t jg d¢td�}t jg d¢td�}t jg d¢td�}t|||gdgddgdd	�}tjg d
¢ddgd�}t |j|¡ d S )N©r
   r
   r
   r   r   r
   r
   ©Údtype)r   r   r   r   r   r   r   ©r   r   r   r   r   r   r   r7   r8   r9   F)r;   r<   Údropna))r   r   )r   r   )r   r   )r   r   ©rA   )	r   rM   Úobjectr   r   Úfrom_tuplesr%   Zassert_index_equalrB   )r   r7   r8   r9   ÚresÚmr   r   r    Útest_crosstab_dropnaã   s    ÿþz!TestCrosstab.test_crosstab_dropnac                 C   sb   t g d¢g d¢d�}t g d¢g d¢d�}t||ƒ}ttg ddd�tg ddd�d�}t ||¡ d S )	N)rE   é   r4   rF   )rG   r1   é   r)   r=   ©rq   rK   r>   rL   )r   r   r   r   r%   r&   )r   Ús1Ús2Úactualr,   r   r   r    Útest_crosstab_no_overlapñ   s    
þz%TestCrosstab.test_crosstab_no_overlapc                 C   s‚   t dddddtjgg d¢dœƒ}t|j|jddd�}t g d¢g d¢g d	¢gƒ}tg d
¢dd�|_tg d¢dd�|_t	 
||¡ d S )NrE   rz   ©r4   r4   rG   rG   rG   rG   ©r7   r8   T©rP   rs   ©rE   r   rE   ©rE   r4   rG   )rz   r4   r1   ©ç      ð?ç       @rS   r7   rJ   ©r4   rG   rS   r8   ©r   r   Únanr   r7   r8   r   r@   rB   r%   r&   ©r   r   r   r,   r   r   r    Útest_margin_dropnaÿ   s     zTestCrosstab.test_margin_dropnac                 C   s’   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d�}t g d¢g d	¢g d
¢gƒ}tg d¢dd�|_tg d¢dd�|_t	 
||¡ d S )NrE   rz   r4   rG   r‚   Trƒ   r„   rD   ©rE   rE   rz   r†   r7   rJ   ©g      @ç      @rS   r8   rŠ   rŒ   r   r   r    Útest_margin_dropna2  s    *ÿz TestCrosstab.test_margin_dropna2c                 C   sˆ   t dtjtjtjtjdgg d¢dœƒ}t|j|jddd�}t g d¢g d¢g d	¢gƒ}tg d
¢dd�|_tg d¢dd�|_t	 
||¡ d S )NrE   rz   r�   r‚   Trƒ   r„   rD   rŽ   r†   r7   rJ   r‰   r8   rŠ   rŒ   r   r   r    Útest_margin_dropna3  s     ÿz TestCrosstab.test_margin_dropna3c                 C   s‚   t dddddtjgg d¢dœƒ}t|j|jddd�}t g d¢g d	¢g d
¢gƒ}tg d¢dd�|_tg d¢dd�|_t	 
||¡ d S )NrE   rz   r�   r‚   TFrƒ   r„   r…   )rz   rG   r{   r†   r7   rJ   r‰   r8   rŠ   rŒ   r   r   r    Útest_margin_dropna4!  s     z TestCrosstab.test_margin_dropna4c                 C   s’   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d�}t g d	¢g d
¢g d¢gƒ}tg d¢dd�|_tg d¢dd�|_t	 
||¡ d S )NrE   rz   r4   rG   r‚   TFrƒ   r„   rD   )rE   rG   r{   r†   r7   rJ   r�   r8   rŠ   rŒ   r   r   r    Útest_margin_dropna5,  s    *ÿz TestCrosstab.test_margin_dropna5c                 C   sÆ  t jg d¢td�}t jdddddt jdgtd�}t jg d¢td�}t|||gdgddgd	d
d�}tjg d¢g d¢gddgd�}tg d¢g d¢g d¢g|d�}tg d¢dd�|_	t
 ||¡ t||g|ddgdgd	d
d�}tjg d¢g d¢gddgd�}tg d¢g d¢g d¢g d¢g d¢g|d�}tg d¢dd�|_t
 ||¡ t||g|ddgdgd	d	d�}tjg d¢g d¢gddgd�}tg d¢g d¢g d¢g d¢g d¢g|d�}tg d¢dd�|_t
 ||¡ d S )Nro   rp   r   r   rr   r7   r8   r9   TF)r;   r<   rP   rs   )r   r   r   r   rS   )r   r   r   r   rT   rt   )rE   r   rE   r   rz   )rz   r   rE   rE   r1   )r4   r   rz   rE   rO   )rB   ©r   r
   rS   rJ   )r   r   r
   r
   rS   )r   r   r   r   rT   r„   )rz   r   rz   rŽ   )r1   rz   rO   rF   )r   r   rS   )r1   rE   r{   )r   rM   ru   r‹   r   r   Úfrom_arraysr   r   r@   r%   r&   rB   )r   r7   r8   r9   r   rx   r,   r   r   r    Útest_margin_dropna66  sV    ÿÿþûÿÿþ"ÿÿþ"ÿz TestCrosstab.test_margin_dropna6c           
      C   sP  t g d¢g d¢ddtjddgdœƒ}tddgdd�}tdd	gd
d�}t ddgddgg||d�}t ddgddgg||d�}t ddgddgg||d�}t t|j|jdd�|¡ t t|j|jdd�|¡ t t|j|jdd�|¡ t t|j|jdd�|¡ t t|j|jdd�t|j|jdd�¡ t t|j|jdd�t|j|jdd�¡ t ddgddgddggtg d¢ddd�tdd	gd
dd�d�}t g d¢g d¢gtddgddd�tg d¢d
dd�d�}t g d¢g d ¢g d!¢gtg d¢ddd�tg d¢d
dd�d�}	t t|j|jddd"�|¡ t t|j|jddd"�|¡ t t|j|jddd"�|	¡ d S )#N©rE   rz   rz   rz   rz   ©r4   r4   rG   rG   rG   rE   r6   rz   r7   rJ   r4   rG   r8   çš™™™™™É?r   ç333333ã?rL   r‡   ç      Ð?ç      è?ç      à?Úall©Ú	normalizeTr@   rB   çš™™™™™Ù?©rE   rz   rS   ru   ©rK   rq   )rž   r   rš   )rž   r‡   çš™™™™™é?r‰   )rš   r   rš   )rš   r›   r¥   ©r¢   r›   rE   ©r¡   rP   )	r   r   r‹   r   r%   r&   r   r7   r8   )
r   r   ÚrindexZcindexZfull_normalZ
row_normalZ
col_normalZrow_normal_marginsZcol_normal_marginsZall_normal_marginsr   r   r    Útest_crosstab_normalizeg  sV    ÿþ ÿýýýÿÿÿz$TestCrosstab.test_crosstab_normalizec                 C   s<  t g d¢g d¢ddtjddgdœƒ}tt g d¢¡t g d¢¡gt g d¢¡ƒ t g d¢g d¢g d	¢gtg d
¢ddd�tg d¢dd�d�}t|j|j|jdddd�}t	 
||¡ 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d�tg d¢ddd�d�}t|j|j|jtjddd�}t	 
||¡ d S )Nr˜   r™   rE   r6   )rE   rE   rz   rz   )rE   rz   rE   rz   )rœ   r   rœ   )rœ   rž   r�   )rž   rž   rE   r£   r7   ru   r¤   r‰   r8   rJ   rL   ÚcountrŸ   T)rj   r¡   rP   r   rG   r4   )r   r   ç        r¦   )r   r   r‹   r   rM   r   r7   r8   r9   r%   r&   rl   )r   r   Znorm_countsZ	test_caseZnorm_sumr   r   r    Útest_crosstab_normalize_arraysš  s6    ÿ&ÿýÿÿýÿz+TestCrosstab.test_crosstab_normalize_arraysc                 C   s  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d	�td
dgdd�d�}dD ](}t|j|j|jd|d�}t 	||¡ qdt dtjgddggtddgddd	�td
dgdd�d�}|rÚ|d
  
d¡|d
< t|j|j|jddd�}t 	||¡ d S )Nr˜   r™   r6   r«   rE   rz   r7   r)   r¤   r4   rG   r8   rJ   rL   )Tr@   rB   rª   )rk   rj   r¡   F)r   r   r‹   r   r   r7   r8   r9   r%   r&   r(   )r   Zusing_array_managerr   ÚemptyÚiZ
calculatedZnansr   r   r    Útest_crosstab_with_empties¾  s.    ýÿýýz'TestCrosstab.test_crosstab_with_emptiesc                 C   s‚  t g d¢g d¢ddtjddgdœƒ}d}tjt|d��$ t|j|j|j	d� W d   ƒ n1 s`0    Y  d}tjt|d��$ t|j|jtj
d	� W d   ƒ n1 s¦0    Y  d
}tjt|d��" t|j|jdd� W d   ƒ n1 sê0    Y  tjt|d��" t|j|jdd� W d   ƒ n1 �s,0    Y  d}tjt|d��$ t|j|jddd� W d   ƒ n1 �st0    Y  d S )Nr˜   r™   rE   r6   z)values cannot be used without an aggfunc.rb   )rk   z%aggfunc cannot be used without values)rj   zNot a valid normalize argumentZ42r    é*   zNot a valid margins argumentrŸ   r§   )r   r   r‹   rd   re   rf   r   r7   r8   r9   Úmean)r   r   Úerrorr   r   r    Útest_crosstab_errorsÞ  s"    ÿ2202z!TestCrosstab.test_crosstab_errorsc                 C   sž   t g d¢g d¢dœƒ}g d¢}|d  d¡j |¡|d< t|d |d ƒ}tg d¢dd	�}t||d
dd�}g d¢g d¢g d¢g}t |||d�}t ||¡ d S )N)ÚHondaÚAcuraÚTeslar´   r´   rµ   )ÚSedanr·   ÚElectricÚPickupr·   r·   )ÚMAKEÚMODEL)r·   r¸   r¹   r»   Úcategoryrº   )rµ   r´   r¶   rJ   F)Ú
categoriesZorderedrK   )rz   r   r   )rz   r   rE   ©r   rE   r   rL   )	r   r(   ÚcatZset_categoriesr   r   r   r%   r&   )r   r   r½   r+   Úexpected_indexZexpected_columnsÚexpected_datar,   r   r   r    Ú%test_crosstab_with_categorial_columnsø  s"    þÿÿÿz2TestCrosstab.test_crosstab_with_categorial_columnsc                 C   s0  t g d¢d g d¢d g d¢d tj d¡tj d¡dœƒ}t|d	 |d
 g|d gdtj|d d�}tg d¢g d¢gg d¢g d¢gd	d
gd�}tg d¢ddd�}t 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¡|d< t ||¡ d S )N©r   r   r   Úthreer{   r.   é   ©r
   r
   r
   r   r   r   rG   é   ©r   r   r   r   r   r   r   r   Tr   )r@   rB   rP   rj   rk   )rS   r   rÄ   r   )rT   r   r   r   )
rE   rE   rE   rz   rz   rz   r4   r4   r4   r   )
rE   rz   r4   rE   rz   r4   rE   rz   r4   r   ©ZlevelsÚcodesrA   r•   ru   r|   )rˆ   rˆ   r�   rˆ   )ç      (@rË   g      8@rL   rS   r)   )r   r   r   r   r   r#   r   r   rM   r‹   r(   r%   r&   )r   r   r+   rÀ   Zexpected_columnrÁ   r,   r   r   r    Útest_crosstab_with_numpy_size  sN    




ûÿ	ûý





öÿÿz*TestCrosstab.test_crosstab_with_numpy_sizec                 C   sÞ   t tdƒdd�}t tddƒdd�}t tddƒdd�}t tdƒdd�}ddi}t||ƒ}t||ƒj|dd�}t ||¡ t||g|ƒ}t||g|ƒj|d	d
�}t ||¡ t|||gƒ}t|||gƒj|dd�}t ||¡ d S )Nr4   r
   rJ   rE   rG   r   Zwaldo)rB   Úaxisr   )r@   rÍ   )r   Úranger   Zrename_axisr%   r&   )r   r}   Zs2_fooZs2_barZs3Zmapperr+   r,   r   r   r    Útest_crosstab_duplicate_names;  s    
z*TestCrosstab.test_crosstab_duplicate_namesrA   r7   r:   r‚   r9   c                 C   sv   t tdƒ|d d�}t tddƒ|d d�}tjtdƒtddƒg|d�}t d|d�jddd�}t||ƒ}t ||¡ d S )	Nr4   r   rJ   rE   rG   rt   rF   )Z
fill_value)r   rÎ   r   r–   r$   r   r%   r&   )r   rA   r}   r~   Úmir,   r+   r   r   r    Útest_crosstab_tuple_nameW  s    
z%TestCrosstab.test_crosstab_tuple_namec                 C   sj   t tdƒdd�}t tdƒdd�}ttjddd�ttdƒdd�ttdƒdd�d�}t||ƒ}t ||¡ d S )Nr4   r‚   rJ   )r9   rH   r)   rp   rL   )	r   rÎ   r   r   Úeyer   r   r%   r&   )r   r}   r~   r,   r+   r   r   r    Útest_crosstab_both_tuple_namesb  s    ý
z+TestCrosstab.test_crosstab_both_tuple_namesc                 C   sˆ   t g d¢g d¢dœg d¢d�}t|j|j|jgƒ}tg d¢dd�}tjg d	¢d
dgd�}t g d¢g d¢g d¢g||d�}t 	||¡ d S )N)r4   rE   rz   )r1   rG   r{   )r8   r7   )r   r   r   rF   r.   r=   rJ   ))rE   rG   )rz   r{   )r4   r1   r8   r7   rt   )rE   r   r   r¾   )r   r   rE   rL   )
r   r   r@   r8   r7   r   r   rv   r%   r&   )r   r   r+   Ze_idxZ	e_columnsr,   r   r   r    Útest_crosstab_unsorted_ordero  s    ÿz)TestCrosstab.test_crosstab_unsorted_orderc                 C   s¶   t g d¢d g d¢d g d¢d dgd dgd d	œƒ}t|j|jg|j|jtjd
d
d�}t tjdgd dg t	d� 
dd¡tg d¢ddd�tjg d¢ddgd�d�}t ||¡ d S )NrÃ   r{   r.   rÅ   rÆ   rG   r   rÇ   rÈ   T)rk   rj   r¡   rP   é   rE   rp   r5   r4   r•   ru   r   r|   )
)r   r   )r   r   )r   r   )rÄ   r   )rÄ   r   )rÄ   r   )r   r   )r   r   )r   r   rR   r   r   rt   )rB   r@   )r   r   r   r   r   r   r   rl   rM   ÚfloatZreshaper   r   rv   r%   r&   r*   r   r   r    Ú(test_crosstab_normalize_multiple_columnsy  s2    


ûÿ	
ú óýz5TestCrosstab.test_crosstab_normalize_multiple_columnsc                 C   sÐ  t g d¢g d¢g d¢g d¢g d¢dœƒ}t|j|jg|jd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d�|_tddgddd�|_t	 
||¡ t|j|jg|jdddd
�}t g d¢g d¢g d¢g d¢gƒ}tg d ¢ddd�|_td!d"gd#d$ggg d%¢g d&¢gddgd�|_t	 
||¡ t|j|jg|jdddd
�}t g d'¢g d'¢g d(¢g d)¢g d*¢gƒ}tg d ¢ddd�|_tg d¢g d¢gg d¢g d¢gddgd�|_t	 
||¡ 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Ü   ©	rE   rz   rz   r4   r4   rG   r1   r{   rO   ©	rz   rG   r1   r1   r{   r{   rÅ   é	   rß   rÈ   Tú	Sub-Totalr   )rP   ra   r¡   rž   g]QJVUå?çF]kïSUÕ?rE   ç³Ñ9?ÅqÜ?ç'c`Çá?)rà   r   r
   ©rT   r   r   )rE   rE   rz   rz   r   ©rE   rz   rE   rz   r   r   r   rÉ   rÜ   rÛ   ru   r   r|   )rœ   rš   ç³Ñ9?ÅqÌ?)rž   rš   rá   )r   r¢   ræ   )rÜ   rÛ   rà   r   r
   r   r   )r   r   rE   rE   )r   rE   r   rE   )ç³Ñ9?Åq¼?rç   ræ   )ræ   rç   rá   )r«   ræ   ræ   )râ   g#„GÇá?rE   )r   r   r   r   r   r   r@   r   rB   r%   r&   r*   r   r   r    Útest_margin_normalize¡  sx    ñÿÿ ÿýÿüÿ
ÿýÿûÿ	
ÿýz"TestCrosstab.test_margin_normalizec                 C   sª   t g d¢g d¢g d¢g d¢g d¢dœƒ}t|j|j|jgdddd	�}t g d
¢g d¢g d¢gg d¢d�}tg d¢g d¢gg d¢g d¢gddgd�|_d|j_t	 
||¡ d S )NrØ   rÙ   rÚ   rÝ   rÞ   rÈ   TÚmargin)r@   rB   rP   ra   r¡   )rç   rç   ræ   r«   râ   )rç   rç   rç   ræ   rã   )ræ   ræ   rá   ræ   r‡   )rÜ   rÛ   ré   rF   )r   r
   ré   rä   )r   r   rE   rE   rz   rå   r   r   rÉ   r   )r   r   r   r   r   r   rB   r@   rK   r%   r&   r*   r   r   r    Ú&test_margin_normalize_multiple_columnsò  s:    ñÿ
ûýúýz3TestCrosstab.test_margin_normalize_multiple_columnsN)'Ú__name__Ú
__module__Ú__qualname__r!   r-   r/   rd   ÚmarkÚparametrizer   rM   ÚlistÚtuplerC   rN   r_   rh   rn   ry   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	      s>   2
2
13$ -


(Qr	   Úa_dtyper¼   r)   Úb_dtypec                 C   sj  t j d¡}t|jdddd�ƒ | ¡}t|jdddd�ƒ |¡}t||ddd	�}tg d
¢ddd�}tg d¢ddd�}g d¢g d¢g d¢g d¢g}t|||ƒ}	t	 
||	¡ d|j|dk< t|jƒ}
|
rÚ| ¡ jd dksÚJ ‚t||ddd	�}g d¢g d¢g d¢g d¢g}t|||ƒ}	|
�s8|	jg d¢ }	|	d  d¡|	d< t|ƒ t|	ƒ t|	jg d¢ ƒ t	 
||	¡ d S )NiðvŒr   r4   r2   r3   rz   TFrƒ   )r   rE   rS   ru   r>   r|   )r   rE   rz   rS   r=   )é   é   é"   )rõ   rõ   é    )é4   é0   r2   rE   )r   r   r   )rö   r÷   éB   )r   rz   rS   rS   r)   )r   r   ZRandomStater   r?   r(   r   r   r   r%   r&   rX   r   rq   Zvalue_countsÚrepr)rò   ró   Úgr7   r8   r+   rB   r@   rk   r,   Za_is_catr   r   r    Útest_categoricals   s,    
rý   )Únumpyr   rd   Zpandas.core.dtypes.commonr   Zpandasr   r   r   r   r   r   r   Zpandas._testingZ_testingr%   r	   rî   rï   rý   r   r   r   r    Ú<module>   s          