U
    b8                     @   s  d dl Zd dlZd dlmZmZmZmZmZ d dl	m
Z ejdd Zdd Zdd Zd	d
 Zdd Zejddddgejdddgejddddgejdddgejdddgdd Zejdddgejdddd dddd gdddddgdddddgfddd dddd gdddddgdddddgfddd dddd gdddddgdddddgfgd!d" Zejd#d$ Zejd%ddddddgd&d'd(gfddddddgd&d)d(gfddddddgd&d*d+gfdddd,d-d-gd&d*d+gfgd.d/ Zejd0d1 Zejd2ddd ddd3d4d5d6dd g	d,d,d7d-d-d-d-d7d7g	fddd ddd3dd gd,d,d7d7d7d7gfddd dd3d4d5d6gd,d,d-d-d-d-gfddd dd3gd,d,d7gfgd8d9 Zejd:d; Zejd<dddgejd=d>d?gd@dAdBgdCfdddddgeedgedDdEdFgedGdHejggd d d d gd dddgdd ddggd@dAdBgdIfgejdddgdJdK ZejdddgejdLddMdNdOdPdQdRdSdTdUdVdWdXgfddMdNdOdSdTgfgejdYdejdddd d d ddd d d d gejdZfded,d-d-d[d[d[d,d,d[d[d[d[gfgd\d] Z ejd^dd_dddgfdd`d,d,d7gfgdadb Z!ejdcdddeddfdgdgdhgfdideddfdgdjdkgfgejdddgdldm Z"dndo Z#dS )p    N)CategoricalIndex	DataFrameIndex
MultiIndexSeriesc                	   C   s4   t ddddddgddddddgddddddgdS )	NmalefemalelowmediumhighUSFR)gender	educationcountryr    r   r   P/tmp/pip-unpacked-wheel-ck39h295/pandas/tests/groupby/test_frame_value_counts.pyeducation_df   s    r   c              	   C   s4   | j ddd}tjtdd |  W 5 Q R X d S )Nr      axisr   match)groupbypytestraisesNotImplementedErrorvalue_countsr   gpr   r   r   	test_axis   s    r!   c              	   C   s6   |  d}tjtdd |jdgd W 5 Q R X d S )Nr   subsetr   )r"   )r   r   r   
ValueErrorr   r   r   r   r   test_bad_subset   s    
r$   c                 C   sZ   |  dddg jdd}tdddddgtjdd	d
ddgdddgdd}t|| d S )Nr   r   r   T	normalize      ?      ?r   r   r	   r   r   r   r   r   r
   r   r   r   r   r   r	   namesdataindex)r   r   r   r   from_tuplestmassert_series_equal)r   resultexpectedr   r   r   
test_basic%   s     r8   c                 C   s   | | j |||dS )Nr&   sort	ascending)r   )dfkeysr&   r:   r;   r   r   r   _frame_value_counts:   s    r>   r   columnarrayfunctionr&   TFzsort, ascending)FN)TT)TFas_indexframec                    s  d d j  fddd| } j||d}|ddg j|||d}	|r|tddg|||}
|rrt|	|
 n|rzd	nd
}|
 jd|idd}
|dkr|
jddidd}
t	
|
d dd|
d< n0|dkr|
d dk|
d< nt	
|
d dd|
d< t|	|
 n d d  d   d< |d j|||d}
d |
_|r|
jjdd}|d jdjd|d< |d jdjd|d< |d= |jdd idd}t||
_t|	|
 nV|
dd|
d jdjd |
dd|
d jdjd |
d= t|	|
 d S )Nr   c                    s    d |  dkS )Nr   r   r   )xr   r   r   <lambda>X       z6test_against_frame_and_seriesgroupby.<locals>.<lambda>)r?   r@   rA   )byrB   r   r   r9   
proportioncountr   r   r   r?   level_0r   r   rA   -ZbothFr2      )valuesr   r   applyr>   r4   r5   reset_indexrenamenpwhereassert_frame_equalnamer2   Zto_framestrsplitgetr   
from_frameinsert)r   r   r&   r:   r;   rB   rC   rH   r    r6   r7   rV   Zindex_framer   rE   r   $test_against_frame_and_seriesgroupby>   sd    
        ""r\   zCsort, ascending, expected_rows, expected_count, expected_group_sizer   rN         c           
         s   j ddgddd}|d j|||d}t }	dD ]  fdd	|D |	 < q2|rn||	d
< |	d
  |  < n||	d< t||	 d S )Nr   r   F)rB   r:   r   r9   )r   r   r   c                    s   g | ]}  | qS r   r   .0rowr?   r   r   r   
<listcomp>   s     z!test_compound.<locals>.<listcomp>rI   rJ   )r   r   r   r4   rU   )
r   r&   r:   r;   expected_rowsZexpected_countZexpected_group_sizer    r6   r7   r   rb   r   test_compound   s      re   c                   C   s4   t ddddgddddgddddgdddd	d
gdS )Nr   rN   r^      r   )keynum_legs	num_wingsZfalconZdogcatZantrM   r   r   r   r   r   
animals_df   s    "
rk   z9sort, ascending, normalize, expected_data, expected_index)r   r   r   )rN   r^   rf   )rN   r   r   )rN   rf   r^   )r^   rN   rf   )r   rN   r   r'   r(   c           	      C   s^   | j |||d}t|tj|dddgdd}t|| | dj |||d}t|| d S )N)r:   r;   r&   rg   rh   ri   r.   r0   )r   r   r   from_arraysr4   r5   r   )	rk   r:   r;   r&   expected_dataexpected_indexresult_framer7   result_frame_groupbyr   r   r   test_data_frame_value_counts   s&       
  rq   c                  C   s`   t j} tdd| d| ddddg	ddd| | ddddg	dddddd| d| g	ddddddd| | g	d	S )
Nr   r^   rf   r]   rN            )ABCD)rS   nanr   )nr   r   r   nulls_df   s    r{   z:group_dropna, count_dropna, expected_rows, expected_valuesrr   rt   rf   rs   g      ?c           
         sr   j ddg|d}|jdd|d}t }jD ]  fdd|D | < q.t|}t||d}	t||	 d S )	Nru   rv   )dropnaT)r&   r:   r|   c                    s   g | ]}  | qS r   r   r_   r?   r{   r   r   rc      s     z,test_dropna_combinations.<locals>.<listcomp>r0   )	r   r   r   columnsr   rZ   r   r4   r5   )
r{   Zgroup_dropnaZcount_dropnard   expected_valuesr    r6   r~   r2   r7   r   r}   r   test_dropna_combinations   s    

r   c                 C   s(   t ddddgddddgd| | dgdS )Nr   JohnAnneBethSmithLouise)rg   
first_namemiddle_namer   )Znulls_fixturer   r   r   names_with_nulls_df   s    


r   z%dropna, expected_data, expected_indexr   r   )r   r   )r   r   rg   r   r   r.   r   r   r   r   r   )levelscodesr/   c                 C   s^   | j ||d}t||d}|r.|tt| }t|| | dj ||d}t|| d S )N)r|   r&   r0   rg   )r   r   floatlenr4   r5   r   )r   r|   r&   rm   rn   ro   r7   rp   r   r   r   #test_data_frame_value_counts_dropna  s    !
 r   zobserved, expected_indexr)   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
   znormalize, expected_data)Zdtype        c                 C   s   |  djd||d}|j|d}t|r4||dk n|tj|dddgdd	}td
D ]"}	|jjt	|jj
|	 |	d|_qV|rt|| n |j|rdndd}
t||
 d S )Ncategoryr   )rB   observedr%   r   r   r   r.   r0   r]   )levelrI   rJ   )rV   )Zastyper   r   r   r   r3   ranger2   Z
set_levelsr   r   r4   r5   rQ   rU   )r   rB   r   rn   r&   rm   r    r6   Zexpected_seriesir7   r   r   r   test_categorical7  s0    /
   

r   z*normalize, expected_label, expected_valuesrJ   rI   c                 C   s   t dddgdddgd}|jdddgddd	 gd
d}|jd| d}t ddddgddddgddddgddddg||i}t|| d S )Nr   rN   r]   )ru   rv   r^   rr   ru   c                 S   s   | dkrdS dS )Nr   rt   rs   r   )r   r   r   r   rF     rG   z&test_mixed_groupings.<locals>.<lambda>FrB   T)r:   r&   rK   Zlevel_2rs   rt   rv   )r   r   r   r4   rU   )r&   Zexpected_labelr   r<   r    r6   r7   r   r   r   test_mixed_groupings  s"    	     	r   ztest, expected_namesrepeatadber   clevel_1c              	   C   s   t ddgddgddgddgd	d
gd}| dkr<td|_ntddg |_|r|jdddgdg|d }tdtjddg|dd}t	|| n6t
jtdd" |jdddgdg|d  W 5 Q R X d S )Nr   rN   r]   r^   rr   rf   rt   rs   	   
   )r   r   r   r   r   r   ZabbdeZabcdr   r   r   r   r   r   )r   r   rt   r]   rr   r   )rN   r   rs   r^   rf   r   r.   r0   zcannot insertr   )r   listr~   r   r   r   r   r3   r4   r5   r   r   r#   )testZexpected_namesrB   r<   r6   r7   r   r   r   test_column_name_clashes  s     	(r   c                  C   sX   t dddgi} | ddg}| }tdgtjddggd dgdd}t|| d S )Nr   r   rN   r.   rM   )r   r   r   r   r   r3   r4   r5   )r<   gbr6   r7   r   r   r   test_ambiguous_grouping  s
    "r   )$ZnumpyrS   r   Zpandasr   r   r   r   r   Zpandas._testingZ_testingr4   Zfixturer   r!   r$   r8   r>   markZparametrizer\   re   rk   rq   r{   r   r   rl   ry   r   r@   Zint64r   r   r   r   r   r   r   r   <module>   s  

>***
	

""


	
  * 

