o
    dw                     @   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 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)is_categorical_dtype)CategoricalIndex	DataFrameIndex
MultiIndexSeriescrosstabc               	   C   sL   t g dg dg dtjdtjdtj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randnpdconcat)df r   g/var/www/html/visualizacion-main/env/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&dAS )B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_singleG   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_multipleL   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cr6   r7   r8   )rownamescolnamesr7   r8   )r;   r:   row_0col_0)
r   r   randintr   r   r#   r$   indexnamescolumns)r)   r/   r6   r7   r8   r   r*   r+   r   r   r   test_crosstab_ndarrayW   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      rD   r5   r?   )r3      r3   rF   r3   )r6   r7   r8   df)r3   rF   r3   dtyperD   r   r<   namer3   rF   r=   r?   rA   )	r   r   arrayr'   r   r   r   r#   r$   )r)   r6   r7   r8   r+   r*   r   r   r   test_crosstab_non_alignedo   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s7J |jjddgksAJ |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      r1   r2   r3   r0   r5   r6   r9   T)r:   r;   marginsr6   r7   r8   All i8rT   rK   rE   )r   r   r>   r   r   r?   r@   rA   r    r!   r&   r   lenr   r   r   rL   r#   assert_series_equallocreindexr%   r'   )r)   r6   r7   r8   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s8J |jjddgksBJ |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 sw   Y  qd S )Nr   rP   r1   r2   r3   r0   r5   r6   r9   TTOTAL)r:   r;   rQ   margins_namerR   r7   r8   )ra   rU   rV   rK   rE   z&margins_name argument must be a stringi  match)r   r   r>   r   r   r?   r@   rA   r    r!   r&   r   rW   r   r   r   rL   r#   rX   rY   rZ   r%   r'   pytestraises
ValueError)r)   r6   r7   r8   r   r*   r[   r\   r]   r^   r_   msgrb   r   r   r   %test_crosstab_margins_set_margin_name   sR   	
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   rP   r1   r2   r3   r0   r	   r
   baz)aggfuncr:   r;   )r	   r
   rj   valuesrl   )r?   rA   rk   )
r   r   r>   r   r   sumr   pivot_tabler#   r$   )r)   r6   r7   r8   rl   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	   rI   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r6   r7   r8   F)r:   r;   dropna))r   r   )r   r   )r   r   )r   r   r@   )	r   rN   objectr   r   from_tuplesr#   assert_index_equalrA   )r)   r6   r7   r8   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)rD      r3   rE   )rF   r0      r'   r<   rJ   rL   r=   rM   )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 )NrD   r{   r3   r3   rF   rF   rF   rF   r6   r7   TrQ   rs   rD   r   rD   rD   r3   rF   )r{   r3   r0         ?       @rT   r6   rK   r3   rF   rT   r7   r   r   nanr   r6   r7   r   r?   rA   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 )NrD   r{   r3   rF   r   Tr   r   rC   rD   rD   r{   r   r6   rK         @      @rT   r7   r   r   r   r   r   test_margin_dropna2
     *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 )NrD   r{   r   r   Tr   r   rC   r   r   r6   rK   r   r7   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 )NrD   r{   r   r   TFr   r   r   )r{   rF   r|   r   r6   rK   r   r7   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 )NrD   r{   r3   rF   r   TFr   r   rC   )rD   rF   r|   r   r6   rK   r   r7   r   r   r   r   r   test_margin_dropna5)  r   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 )Nrq   rI   r   r   rr   r6   r7   r8   TF)r:   r;   rQ   rs   )r   r   r   r   rT   )r   r   r   r   rU   rt   )rD   r   rD   r   r{   )r{   r   rD   rD   r0   )r3   r   r{   rD   rP   )rA   r
   r	   rT   rK   )r
   r
   r	   r	   rT   )r   r   r   r   rU   r   )r{   r   r{   r   )r0   r{   rP   rE   )r   r   rT   )r0   rD   r|   )r   rN   ru   r   r   r   from_arraysr   r   r?   r#   r$   rA   )r)   r6   r7   r8   r   ry   r+   r   r   r   test_margin_dropna63  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rD   r{   r{   r{   r{   r3   r3   rF   rF   rF   rD   r5   r{   r6   rK   r3   rF   r7   皙?r   333333?rM   r         ?      ?      ?all	normalizeTr?   rA   皙?rD   r{   rT   ru   rL   rJ   )r   r   r   )r   r   皙?r   )r   r   r   )r   r   r   r   r   rD   r   rQ   )	r   r   r   r   r#   r$   r   r6   r7   )
r)   r   rindexcindexfull_normal
row_normal
col_normalrow_normal_marginscol_normal_marginsall_normal_marginsr   r   r   test_crosstab_normalized  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   rD   r5   )rD   rD   r{   r{   )rD   r{   rD   r{   )r   r   r   )r   r   r   )r   r   rD   r   r6   ru   r   r   r7   rK   rM   countr   T)rk   r   rQ   r   rF   r3   )r   r           r   )r   r   r   r   rN   r   r6   r7   r8   r#   r$   rm   )r)   r   norm_counts	test_case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	|| 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   r5   r   rD   r{   r6   r'   r   r3   rF   r7   rK   rM   )Tr?   rA   r   )rl   rk   r   F)r   r   r   r   r   r6   r7   r8   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 sw   Y  d}tjt|d t|j|jddd W d    d S 1 sw   Y  d S )Nr   r   rD   r5   z)values cannot be used without an aggfunc.rc   )rl   z%aggfunc cannot be used without values)rk   zNot a valid normalize argument42r   *   zNot a valid margins argumentr   r   )r   r   r   re   rf   rg   r   r6   r7   r8   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   rK   F)
categoriesorderedrL   )r{   r   r   )r{   r   rD   r   rD   r   rM   )	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   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
   rF      r   r   r   r   r   r   r   r   Tr   )r?   rA   rQ   rk   rl   )rT   r   r   r   )rU   r   r   r   )
rD   rD   rD   r{   r{   r{   r3   r3   r3   r   )
rD   r{   r3   rD   r{   r3   rD   r{   r3   r   levelscodesr@   r   ru   r}   )r   r   r   r   )      (@r   g      8@rM   rT   r'   )r   r   r   r   r   r!   r   r   rN   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 )Nr3   r	   rK   rD   rF   r
   waldo)rA   axisr   )r?   r   )r   ranger   rename_axisr#   r$   )r)   r~   s2_foos2_bars3mapperr*   r+   r   r   r   test_crosstab_duplicate_names8  s   
z*TestCrosstab.test_crosstab_duplicate_namesr@   r6   r9   r   r8   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 )	Nr3   r   rK   rD   rF   rt   rE   )
fill_value)r   r   r   r   r"   r   r#   r$   )r)   r@   r~   r   mir+   r*   r   r   r   test_crosstab_tuple_nameT  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 )Nr3   r   rK   )r8   rG   r'   rI   rM   )	r   r   r   r   eyer   r   r#   r$   )r)   r~   r   r+   r*   r   r   r   test_crosstab_both_tuple_names_  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)r3   rD   r{   )r0   rF   r|   )r7   r6   )r   r   r   rE   r-   r<   rK   ))rD   rF   )r{   r|   )r3   r0   r7   r6   rt   )rD   r   r   r   )r   r   rD   rM   )
r   r   r?   r7   r6   r   r   rv   r#   r$   )r)   r   r*   e_idx	e_columnsr+   r   r   r   test_crosstab_unsorted_orderl  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   rF   r   r   r   T)rl   rk   r   rQ      rD   rI   r4   r3   r   ru   r   r}   )
)r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   rS   r   r   rt   )rA   r?   )r   r   r   r   r   r   r   rm   rN   floatreshaper   r   rv   r#   r$   r(   r   r   r   (test_crosstab_normalize_multiple_columnsv  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   	rD   r{   r{   r3   r3   rF   r0   r|   rP   	r{   rF   r0   r0   r|   r|   r   	   r   r   T	Sub-Totalr   )rQ   rb   r   r   g]QJVU?F]kSU?rD   9?q?'c`?)r   r
   r	   rU   r   r   )rD   rD   r{   r{   r   rD   r{   rD   r{   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   rD   rD   )r   rD   r   rD   )9?q?r  r  )r  r  r  )r   r  r  )r  g#G?rD   )r   r   r   r   r   r   r?   r   rA   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?   rA   rQ   rb   r   )r  r  r  r   r  )r  r  r  r  r  )r  r  r  r  r   )r   r   r	  rE   )r
   r	   r	  r  )r   r   rD   rD   r{   r  r   r   r   r   )r   r   r   r   r   r   rA   r?   rL   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)rD   r{   r{   rD   )r3   r3   rF   r0   )            $@r   r  r-   Float64rI   r   r   r   rm   T)rl   rk   rQ   r  r        "@r   g      &@)r  r   r  g      4@r   ru   r}   )r   r   g      @rT   )r?   rA   rJ   )r   r   r   NAr   r#   r$   r(   r   r   r   test_margin_support_Float  s*   
z&TestCrosstab.test_margin_support_FloatN)'__name__
__module____qualname__r,   r.   re   markparametrizer   rN   listtuplerB   rO   r`   ri   rp   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@    
2


13$ -


(Q-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}
|
rm| jd dksmJ t||d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	
||	 d S )Nivr   r3   r1   r2   r{   TFr   )r   rD   rT   ru   r=   r}   )r   rD   r{   rT   r<   )      "   )r  r      )4   0   r1   rD   )r   r   r   )r  r  B   )r   r{   rT   rT   r'   )r   r   RandomStater   r>   r&   r   r   r   r#   r$   rY   r   rJ   value_countsrepr)r  r  gr6   r7   r*   rA   r?   rl   r+   a_is_catr   r   r   test_categoricals7  s,   
r&  )numpyr   re   pandas.core.dtypes.commonr   pandasr   r   r   r   r   r   r   pandas._testing_testingr#   fixturer   r   r  r  r&  r   r   r   r   <module>   s"     
3     v