o
    Û­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)Úignore_index)r   ÚnpÚrandomÚdefault_rngÚstandard_normalÚpdÚconcat)Údf© r   ú_/var/www/html/CropPilot/venv/lib/python3.10/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Úcr8   ©r9   r:   )ÚrownamesÚcolnamesr9   r:   )r=   r<   Úrow_0Úcol_0)r   r   r   Úintegersr   r   r%   r&   ÚindexÚnamesÚcolumns)r+   r1   r8   r9   r:   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   é   rF   r7   ©rA   )r5   é   r5   rH   r5   )r8   r9   r:   ÚdÚf)r5   rH   r5   ©ÚdtyperF   r   r>   ©Únamer5   rH   r?   ©rA   rC   )	r   r   Úarrayr)   r   r   r   r%   r&   )r+   r8   r9   r:   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sJJ ‚|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   é   r3   r4   r5   r2   r7   r8   r;   T)r<   r=   Úmargins©r8   r9   r:   ©ÚAllÚ Úi8rV   rM   rG   )r   r   r   r@   r   r   rA   rB   rC   r"   r#   r(   r   Úlenr   r   r   rN   r%   Úassert_series_equalÚlocÚreindexr'   r)   )r+   r8   r9   r:   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sAJ ‚|jjddgksKJ ‚|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 ]&}tjt|d�� t|||gd	gd
d|d� W d   ƒ n1 sÚw   Y  q¹d S )Nr   r   rR   r3   r4   r5   r2   r7   r8   r;   TÚTOTAL)r<   r=   rS   Úmargins_namerT   r9   r:   )rc   rW   rX   rM   rG   z&margins_name argument must be a stringiš  ©Úmatch)r   r   r   r@   r   r   rA   rB   rC   r"   r#   r(   r   rY   r   r   r   rN   r%   rZ   r[   r\   r'   r)   ÚpytestÚraisesÚ
ValueError)r+   r8   r9   r:   r   r,   r]   r^   r_   r`   ra   Úmsgrd   r   r   r    Ú%test_crosstab_margins_set_margin_namež   sR   ú	
úÿ€ÿ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   rR   r3   r4   r5   r2   Úsumr	   r
   Úbaz)Úaggfuncr<   r=   )r	   r
   rm   Úvaluesro   )rA   rC   rn   )
r   r   r   r@   r   r   r   Úpivot_tabler%   r&   )r+   r8   r9   r:   ro   Ú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	   rK   )r   r   r   r   r   r   r   ©r   r   r   r   r   r   r   r8   r9   r:   F)r<   r=   Údropna))r   r   )r   r   )r   r   )r   r   ©rB   )	r   rP   Úobjectr   r   Úfrom_tuplesr%   Úassert_index_equalrC   )r+   r8   r9   r:   Ú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)rF   r   r5   rG   )rH   r2   é   r)   r>   ©rL   rN   r?   rO   )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 )NrF   r   ©r5   r5   rH   rH   rH   rH   ©r8   r9   T©rS   ru   ©rF   r   rF   )rF   r5   rH   )r   r5   r2   ©ç      ð?ç       @rV   r8   rM   ©r5   rH   rV   r9   ©r   r   Únanr   r8   r9   r   rA   rC   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 )NrF   r   r5   rH   r„   Tr…   r†   rE   ©rF   rF   r   r‡   r8   rM   )ç      @ç      @rV   r9   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 )NrF   r   rƒ   r„   Tr…   r†   rE   r�   r‡   r8   rM   rŠ   r9   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 )NrF   r   rƒ   r„   TFr…   ©rF   r   rˆ   )rF   r5   r‘   r   )r   rH   ç      @rˆ   r‰   rV   r8   rM   rŠ   r9   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 )NrF   r   r5   rH   r„   TFr…   )rF   r   r   rˆ   )r   rF   r   rˆ   r   )rF   rH   r   r•   rˆ   r‰   rV   r8   rM   r�   r‘   r9   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 )%Nrs   rK   r   r   rt   r8   r9   r:   TF)r<   r=   rS   ru   rV   )r   r   r   r   r   r   rW   rv   )rF   r   rF   r   r   r   r   )r   r   rF   rF   r   rF   r2   )r5   r   r   rF   r   r   rR   )rC   ©r
   r	   rV   rM   )r
   r
   r
   r	   r	   r	   rV   rW   r”   r   )r   r   r‰   )rF   rF   r‰   rF   )r2   r   g      @rG   )r   r   rV   )r
   r
   r	   r	   rV   )r   r   r   r   rW   r†   )r   r   r   r�   )r2   rF   r}   )r   rP   rw   rŒ   r   r   Úfrom_arraysr   r   rA   r%   r&   rC   )r+   r8   r9   r:   r�   r{   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©rF   r   r   r   r   ©r5   r5   rH   rH   rH   rF   r7   r   r8   rM   r5   rH   r9   çš™™™™™É?r   ç333333ã?rO   rˆ   ç      Ð?ç      è?ç      à?Úall©Ú	normalizeTrA   rC   çš™™™™™Ù?©rF   r   rV   rw   ©rN   rL   )r¡   r   r�   )r¡   rˆ   çš™™™™™é?rŠ   )r�   r   r�   )r�   rž   r¨   ©r¥   rž   rF   ©r¤   rS   )	r   r   rŒ   r   r%   r&   r   r8   r9   )
r+   r   ÚrindexÚcindexÚfull_normalÚ
row_normalÚ
col_normalÚrow_normal_marginsÚcol_normal_marginsÚall_normal_marginsr   r   r    Útest_crosstab_normalizeu  sV   ÿþ ÿýýýÿÿÿz$TestCrosstab.test_crosstab_normalizec              	   C   sn  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 sªw   Y  t	 
||¡ d S )Nr›   rœ   rF   r7   )rF   rF   r   r   )rF   r   rF   r   )rŸ   r   rŸ   )rŸ   r¡   r    )r¡   r¡   rF   r¦   r8   rw   r§   rŠ   r9   rM   rO   Úcountr¢   T)rn   r¤   rS   r   rH   r5   )r   r   ç        r©   úusing DataFrameGroupBy.sumre   )r   r   rŒ   r   rP   r   r8   r9   r:   r%   r&   Úassert_produces_warningÚFutureWarningrl   )r+   r   Únorm_countsÚ	test_caseÚnorm_sumrj   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 	||¡ q2t dtjgddggtddgddd	�td
dgdd�d�}|rm|d
  
d¡|d
< t|j|j|jddd�}t 	||¡ d S )Nr›   rœ   r7   rµ   rF   r   r8   r)   r§   r5   rH   r9   rM   rO   )TrA   rC   r´   )ro   rn   r¤   F)r   r   rŒ   r   r   r8   r9   r:   r%   r&   r(   )r+   Úusing_array_managerr   ÚemptyÚiÚ
calculatedÚ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 s0w   Y  d}tjt|d�� t|j|jtj
d	� W d   ƒ n1 sSw   Y  d
}tjt|d�� t|j|jdd� W d   ƒ n1 suw   Y  tjt|d�� t|j|jdd� W d   ƒ n1 s•w   Y  d}tjt|d�� t|j|jddd� W d   ƒ d S 1 s¹w   Y  d S )Nr›   rœ   rF   r7   z)values cannot be used without an aggfunc.re   )ro   z%aggfunc cannot be used without values)rn   zNot a valid normalize argumentÚ42r£   é*   zNot a valid margins argumentr¢   rª   )r   r   rŒ   rg   rh   ri   r   r8   r9   r:   Úmean)r+   r   Úerrorr   r   r    Útest_crosstab_errorsî  s,   ÿÿÿÿÿ"ÿ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Ê   rM   F)Ú
categoriesÚorderedrN   )r   r   r   )r   r   rF   ©r   rF   r   rO   )	r   r(   ÚcatÚ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   Úthreer}   r/   é   ©r	   r	   r	   r
   r
   r
   rH   r   é   ©r   r   r   r   r   r   r   r   Tr   )rA   rC   rS   rn   ro   )rV   r   rÛ   r   )rW   r   r   r   )
rF   rF   rF   r   r   r   r5   r5   r5   r   )
rF   r   r5   rF   r   r5   rF   r   r5   r   ©ÚlevelsÚcodesrB   r˜   rM   )r‰   r‰   r‘   r‰   )ç      (@rã   g      8@rO   rV   r)   )r   r   r   r   r   r   r#   r   r   rP   rŒ   r(   r%   r&   )r+   r   r,   rÖ   Ú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 )Nr5   r	   rM   rF   rH   r
   Úwaldo)rC   Úaxisr   )rA   rç   )r   Úranger   Úrename_axisr%   r&   )r+   r   Ús2_fooÚs2_barÚs3Úmapperr,   r-   r   r   r    Útest_crosstab_duplicate_namesK  s   
z*TestCrosstab.test_crosstab_duplicate_namesrB   r8   r;   r„   r:   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 )	Nr5   r   rM   rF   rH   rv   rG   )Ú
fill_value)r   rè   r   r™   r$   r   r%   r&   )r+   rB   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 )Nr5   r„   rM   )r:   rI   r)   rK   rO   )	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)r5   rF   r   )r2   rH   r}   )r9   r8   ©r   r   r   rG   r/   r>   rM   ))rF   rH   )r   r}   )r5   r2   r9   r8   rv   )rF   r   r   rÓ   )r   r   rF   rO   )
r   r   rA   r9   r8   r   r   rx   r%   r&   )r+   r   r,   Úe_idxÚ	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�� t|j|jg|j|jt	j
ddd�}W d   ƒ n1 sAw   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Ú   r}   r/   rÜ   rÝ   rH   r   rÞ   rß   r¶   re   T)ro   rn   r¤   rS   é   rF   rK   r6   r5   r˜   r   rM   )
)r   r   )r   r   )r   r   )rÛ   r   )rÛ   r   )rÛ   r   )r   r   )r   r   )r   r   rU   r   r   rv   )rC   rA   )r   r%   r·   r¸   r   r   r   r   r   r   rl   rP   ÚfloatÚreshaper   r   rx   r&   )r+   r   rj   r,   r-   r   r   r    Ú(test_crosstab_normalize_multiple_columns‰  s8   


ûÿ

úÿ	 óý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   ©	rF   r   r   r5   r5   rH   r2   r}   rR   ©	r   rH   r2   r2   r}   r}   rÜ   é	   r  rß   Tú	Sub-Totalr   )rS   rd   r¤   r¡   g]QJVUå?çF]kïSUÕ?rF   ç³Ñ9?ÅqÜ?ç'c`Çá?)r  r
   r	   ©rW   r   r   )rF   rF   r   r   r   ©rF   r   rF   r   r   r   r   rà   r   rÿ   r   rM   )rŸ   r�   ç³Ñ9?ÅqÌ?)r¡   r�   r  )r   r¥   r
  )r   rÿ   r  r
   r	   r   r   )r   r   rF   rF   ©r   rF   r   rF   )ç³Ñ9?Åq¼?r  r
  )r
  r  r  )rµ   r
  r
  )r  g#„GÇá?rF   )r   r   r   r   r   r   rA   r   rC   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)rA   rC   rS   rd   r¤   )r  r  r
  rµ   r  )r  r  r  r
  r  )r
  r
  r  r
  rˆ   )r   rÿ   r  rG   )r
   r	   r  r  )r   r   rF   rF   r   r	  r   r   rà   r   )r   r   r   r   r   r   rC   rA   rN   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)rF   r   r   rF   )r5   r5   rH   r2   )ç      ð¿ç      $@rˆ   r  r/   ÚFloat64rK   r   r   r   rl   T)ro   rn   rS   r  r  ç      "@rˆ   g      &@)r  rˆ   r  g      4@r‡   rw   r~   )r�   r‘   g      @rV   )rA   rC   rL   )r   r   r   Ú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  )rS   )r   r   r   rV   rM   )r   r   r   rV   )rF   rF   r   r   r  )r   rF   r   r5   )rF   r5   r   r}   rO   )	r   r(   r   rÔ   Úreorder_categoriesr   r   r%   r&   )r+   r   Ú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.   r0   rg   ÚmarkÚparametrizer   rP   ÚlistÚtuplerD   rQ   rb   rk   rr   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    r!   E   sB    
2

?3& -


+M-r!   Úa_dtyperÐ   r)   Úb_dtypec                 C   sH  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ƒ}
|
rn| ¡ jd dksnJ ‚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   r5   r3   r4   TFr…   )r   rF   rV   rw   r?   r~   )r   rF   r   rV   r>   )r6   é   é   )é   é   é'   )é   r'  é!   )é2   r+  r3   rF   )r   r   r   )é(   é    éH   )r   r   rV   rV   r)   )r   r   r   r   r@   r(   r   r   r   r%   r&   r[   Ú
isinstancerL   r   Úvalue_counts)r"  r#  Úgr8   r9   r,   rC   rA   ro   r-   Úa_is_catr   r   r    Útest_categoricals^  s&   r3  )Únumpyr   rg   Úpandasr   r   r   r   r   r   r   r   Úpandas._testingÚ_testingr%   Úfixturer   r!   r  r  r3  r   r   r   r    Ú<module>   s"    $	
3      