o
    _~#gB                     @   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/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/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&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 sw   Y  qd 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 sw   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 sw   Y  d}tjt|d t|j|jddd W d    d S 1 sw   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]kSU?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      