a
    é´«jB  ã                   @   s”   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d„ ƒZG dd„ dƒZej ddd	g¡ej d
dd	g¡dd„ ƒƒZdS )é    N)ÚCategoricalDtypeÚCategoricalIndexÚ	DataFrameÚIndexÚ
MultiIndexÚSeriesÚcrosstabc               	   C   s^   t g d¢g d¢g d¢tj d¡ d¡tj d¡ d¡tj d¡ d¡dœƒ} tj| | g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Údefault_rngÚstandard_normalÚpdÚconcat)Údf© r   úa/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/pandas/tests/reshape/test_crosstab.pyr      s    Öÿ/r   c                   @   s,  e Z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 d.d/d0gd1d2gg¡d3d4„ ƒZ d5d6„ Z!d7d8„ Z"d9d:„ Z#d;d<„ Z$d=d>„ Z%d?d@„ Z&dAdB„ Z'dCS )DÚTestCrosstabc                 C   sF   t |d |d ƒ}| ddg¡ ¡  ¡ }t || d¡ tj	¡¡ d S )Nr   r   r   )
r   ÚgroupbyÚsizeÚunstackÚtmÚassert_frame_equalÚfillnaÚastyper   Úint64©Úselfr   ÚresultÚexpectedr   r   r   Útest_crosstab_singleF   s    z!TestCrosstab.test_crosstab_singlec                 C   sª   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   Útest_crosstab_multipleK   s    z#TestCrosstab.test_crosstab_multipleÚboxc                 C   s  |t j d¡jdddd�ƒ}|t j d¡jdddd�ƒ}|t j d¡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   r   é   éd   ©r"   é   é
   ©ÚaÚbÚcr7   ©r8   r9   )ÚrownamesÚcolnamesr8   r9   )r<   r;   Úrow_0Úcol_0)r   r   r   Úintegersr   r   r$   r%   ÚindexÚnamesÚcolumns)r*   r0   r7   r8   r9   r   r+   r,   r   r   r   Útest_crosstab_ndarrayV   s    


z"TestCrosstab.test_crosstab_ndarrayc                 C   sž   t g d¢g d¢d�}t g d¢g d¢d�}tjg d¢tj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   ©ÚdtyperE   r   r=   ©Únamer4   rG   r>   ©r@   rB   )	r   r   Úarrayr(   r   r   r   r$   r%   )r*   r7   r8   r9   r,   r+   r   r   r   Útest_crosstab_non_alignedn   s    ý

z&TestCrosstab.test_crosstab_non_alignedc                 C   sb  t j d¡jdddd�}t j d¡jdddd�}t j d¡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	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   r   é   r2   r3   r4   r1   r6   r7   r:   T)r;   r<   Úmargins©r7   r8   r9   ©ÚAllÚ Úi8rU   rL   rF   )r   r   r   r?   r   r   r@   rA   rB   r!   r"   r'   r   Úlenr   r   r   rM   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 d¡jdddd�}t j d¡jdddd�}t j d¡jdddd�}t|||dœƒ}t|||gd	gd
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	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  �qrd S )Nr   r   rQ   r2   r3   r4   r1   r6   r7   r:   TÚTOTAL)r;   r<   rR   Úmargins_namerS   r8   r9   )rb   rV   rW   rL   rF   z&margins_name argument must be a stringiš  ©Úmatch)r   r   r   r?   r   r   r@   rA   rB   r!   r"   r'   r   rX   r   r   r   rM   r$   rY   rZ   r[   r&   r(   ÚpytestÚraisesÚ
ValueError)r*   r7   r8   r9   r   r+   r\   r]   r^   r_   r`   Úmsgrc   r   r   r   Ú%test_crosstab_margins_set_margin_namež   sL    ú	
úz2TestCrosstab.test_crosstab_margins_set_margin_namec                 C   s°   t j d¡jdddd�}t j d¡jdddd�}t j d¡jdddd�}t j d¡ d¡}t||g||dd	d
gdgd�}t||||dœƒ}|jdd	d
gddd�}t 	||¡ d S )Nr   r   rQ   r2   r3   r4   r1   Úsumr	   r
   Úbaz)Úaggfuncr;   r<   )r	   r
   rl   Úvaluesrn   )r@   rB   rm   )
r   r   r   r?   r   r   r   Zpivot_tabler$   r%   )r*   r7   r8   r9   rn   Ú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	   rJ   )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   rO   Ú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   r   r4   rF   )rG   r1   é   r(   r=   ©rK   rM   r>   rN   )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   r   ©r4   r4   rG   rG   rG   rG   ©r7   r8   T©rR   rs   ©rE   r   rE   )rE   r4   rG   )r   r4   r1   ©ç      ð?ç       @rU   r7   rL   ©r4   rG   rU   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   r   r4   rG   r�   Tr‚   rƒ   rD   ©rE   rE   r   r„   r7   rL   )ç      @ç      @rU   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   r   r€   r�   Tr‚   rƒ   rD   rŒ   r„   r7   rL   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	¢d
dtjgg d¢gƒ}tddtjdgdd�|_tg d¢dd�|_t	 
||¡ d S )NrE   r   r€   r�   TFr‚   ©rE   r   r…   )rE   r4   rŽ   r   )r   rG   ç      @r…   r†   rU   r7   rL   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
¢dddtjgg d¢gƒ}tddtjdgdd�|_tddtjdgdd�|_t	 
||¡ d S )NrE   r   r4   rG   r�   TFr‚   )rE   r   r   r…   )r   rE   r   r…   r   )rE   rG   r   r’   r…   r†   rU   r7   rL   r�   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ddddt jt jdg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¢ddt jddt jdggddgd�}tg d¢g d¢ddt jgg d¢g d¢ddt jg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 )%Nrq   rJ   r   r   rr   r7   r8   r9   TF)r;   r<   rR   rs   rU   )r   r   r   r   r   r   rV   rt   )rE   r   rE   r   r   r   r   )r   r   rE   rE   r   rE   r1   )r4   r   r   rE   r   r   rQ   )rB   ©r
   r	   rU   rL   )r
   r
   r
   r	   r	   r	   rU   rV   r‘   r   )r   r   r†   )rE   rE   r†   rE   )r1   r   g      @rF   )r   r   rU   )r
   r
   r	   r	   rU   )r   r   r   r   rV   rƒ   )r   r   r   rŒ   )r1   rE   rz   )r   rO   ru   r‰   r   r   Úfrom_arraysr   r   r@   r$   r%   rB   )r*   r7   r8   r9   r~   rx   r,   r   r   r   Útest_margin_dropna66  sl    ÿÿþûþÿþû

ù	öÿþ"ÿ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   r   r   r   r   ©r4   r4   rG   rG   rG   rE   r6   r   r7   rL   r4   rG   r8   çš™™™™™É?r   ç333333ã?rN   r…   ç      Ð?ç      è?ç      à?Úall©Ú	normalizeTr@   rB   çš™™™™™Ù?©rE   r   rU   ru   ©rM   rK   )rž   r   rš   )rž   r…   çš™™™™™é?r‡   )rš   r   rš   )rš   r›   r¥   ©r¢   r›   rE   ©r¡   rR   )	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_normalizeu  sV    ÿþ ÿýýýÿÿÿz$TestCrosstab.test_crosstab_normalizec              	   C   sp  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�}d}t	jt|d��, t|j|j|jtjddd�}W d   ƒ n1 �sV0    Y  t	 
||¡ d S )Nr˜   r™   rE   r6   )rE   rE   r   r   )rE   r   rE   r   )rœ   r   rœ   )rœ   rž   r�   )rž   rž   rE   r£   r7   ru   r¤   r‡   r8   rL   rN   ÚcountrŸ   T)rm   r¡   rR   r   rG   r4   )r   r   ç        r¦   úusing DataFrameGroupBy.sumrd   )r   r   r‰   r   rO   r   r7   r8   r9   r$   r%   Úassert_produces_warningÚFutureWarningrk   )r*   r   Znorm_countsZ	test_caseZnorm_sumri   r   r   r   Útest_crosstab_normalize_arrays¨  s:    ÿ&ÿýÿÿýÿ&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   r   r7   r(   r¤   r4   rG   r8   rL   rN   )Tr@   rB   rª   )rn   rm   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.rd   )rn   z%aggfunc cannot be used without values)rm   zNot a valid normalize argumentZ42r    é*   zNot a valid margins argumentrŸ   r§   )r   r   r‰   rf   rg   rh   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¹   rL   F)Ú
categoriesÚorderedrM   )r   r   r   )r   r   rE   ©r   rE   r   rN   )	r   r'   ÚcatZset_categoriesr   r   r   r$   r%   )r*   r   rÀ   r+   Úexpected_indexÚexpected_columnsÚexpected_datar,   r   r   r   Ú%test_crosstab_with_categorial_columns  s"    þÿÿÿz2TestCrosstab.test_crosstab_with_categorial_columnsc                 C   s:  t g d¢d g d¢d g d¢d tj d¡ d¡tj d¡ 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�}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   Úthreerz   r.   é   ©r	   r	   r	   r
   r
   r
   rG   r   é   ©r   r   r   r   r   r   r   r   Tr   )r@   rB   rR   rm   rn   )rU   r   rÉ   r   )rV   r   r   r   )
rE   rE   rE   r   r   r   r4   r4   r4   r   )
rE   r   r4   rE   r   r4   rE   r   r4   r   ©ZlevelsÚcodesrA   r•   rL   )r†   r†   rŽ   r†   )ç      (@rÐ   g      8@rN   rU   r(   )r   r   r   r   r   r   r"   r   r   rO   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	   rL   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_namesK  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   rL   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_nameg  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�   rL   )r9   rH   r(   rJ   rN   )	r   rÓ   r   r   Úeyer   r   r$   r%   )r*   r|   r}   r,   r+   r   r   r   Útest_crosstab_both_tuple_namesr  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   r   )r1   rG   rz   )r8   r7   ©r   r   r   rF   r.   r=   rL   ))rE   rG   )r   rz   )r4   r1   r8   r7   rt   )rE   r   r   rÂ   )r   r   rE   rN   )
r   r   r@   r8   r7   r   r   rv   r$   r%   )r*   r   r+   Ze_idxZ	e_columnsr,   r   r   r   Útest_crosstab_unsorted_order  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	œƒ}d
}tjt|d��2 t|j|jg|j|jt	j
ddd�}W d   ƒ n1 s‚0    Y  t t	jdgd dg td� dd¡tg d¢dd�tjg d¢ddgd�d�}t ||¡ d S )NrÈ   rz   r.   rÊ   rË   rG   r   rÌ   rÍ   r¬   rd   T)rn   rm   r¡   rR   é   rE   rJ   r5   r4   r•   r   rL   )
)r   r   )r   r   )r   r   )rÉ   r   )rÉ   r   )rÉ   r   )r   r   )r   r   )r   r   rT   r   r   rt   )rB   r@   )r   r$   r­   r®   r   r   r   r   r   r   rk   rO   ÚfloatZreshaper   r   rv   r%   )r*   r   ri   r+   r,   r   r   r   Ú(test_crosstab_normalize_multiple_columns‰  s6    


ûÿ

ú$ óý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�|_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�|_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�|_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   r   r   r4   r4   rG   r1   rz   rQ   ©	r   rG   r1   r1   rz   rz   rÊ   é	   rå   rÍ   Tú	Sub-Totalr   )rR   rc   r¡   rž   g]QJVUå?çF]kïSUÕ?rE   ç³Ñ9?ÅqÜ?ç'c`Çá?)ræ   r
   r	   ©rV   r   r   )rE   rE   r   r   r   ©rE   r   rE   r   r   r   r   rÎ   râ   rá   r   rL   )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´  sp    ñÿÿ ÿýÿüÿýÿûÿ	ý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   rR   rc   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   r   rë   r   r   rÎ   r   )r   r   r   r   r   r   rB   r@   rM   r$   r%   r)   r   r   r   Ú&test_margin_normalize_multiple_columns  s:    ñÿ
ûýúýz3TestCrosstab.test_margin_normalize_multiple_columnsc                 C   s˜   t g d¢g d¢g d¢dœdd�}t|d |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d�tg d¢ddd�dd�}t ||¡ d S )N)rE   r   r   rE   )r4   r4   rG   r1   )ç      ð¿ç      $@r…   ró   r.   ZFloat64rJ   r   r   r   rk   T)rn   rm   rR   rò   ró   ç      "@r…   g      &@)rô   r…   ró   g      4@r„   ru   r{   )r�   rŽ   g      @rU   )r@   rB   rK   )r   r   r   ZNAr   r$   r%   r)   r   r   r   Útest_margin_support_Float.  s*    þûýø
z&TestCrosstab.test_margin_support_Floatc                 C   sº   t g d¢g d¢dœƒ}|d  tdd�¡|d< g d¢}|d j |¡|d< t|d |d dd	�}tg d
¢dd�}tg d¢dd�}g d¢g d¢g d¢g d¢g}t |||d�}t ||¡ d S )N)r   r   r   r   r   r   )r   r   r   r   r   r   )ÚFirstÚSecondrö   T)rÁ   rÙ   r÷   )rR   )r   r   r   rU   rL   )r   r   r   rU   )rE   rE   r   r   rí   )r   rE   r   r4   )rE   r4   r   rz   rN   )	r   r'   r   rÃ   Zreorder_categoriesr   r   r$   r%   )r*   r   Zcustomized_categories_orderr+   rÄ   rÅ   rÆ   r,   r   r   r   Ú+test_margin_with_ordered_categorical_columnH  s     þÿÿz8TestCrosstab.test_margin_with_ordered_categorical_columnN)(Ú__name__Ú
__module__Ú__qualname__r-   r/   rf   ÚmarkÚparametrizer   rO   ÚlistÚtuplerC   rP   ra   rj   rp   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   r   r    E   s@   
2

?3& -


+M-r    Ú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tƒ}
|
rÜ| ¡ jd dksÜJ ‚t||ddd�}g d¢g d¢g d¢g d¢g}t|||ƒ}	|
�s:|	jg d¢ }	|	d  d¡|	d< t	 
||	¡ d S )Nr   r   r4   r2   r3   TFr‚   )r   rE   rU   ru   r>   r{   )r   rE   r   rU   r=   )r5   é   é   )é   é   é'   )é   r  é!   )é2   r	  r2   rE   )r   r   r   )é(   é    éH   )r   r   rU   rU   r(   )r   r   r   r   r?   r'   r   r   r   r$   r%   rZ   Ú
isinstancerK   r   Zvalue_counts)r   r  Úgr7   r8   r+   rB   r@   rn   r,   Za_is_catr   r   r   Útest_categoricals^  s&    r  )Únumpyr   rf   Zpandasr   r   r   r   r   r   r   r   Zpandas._testingZ_testingr$   Zfixturer   r    rü   rý   r  r   r   r   r   Ú<module>   s    $	
3      