
    |och                        d 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mZmZ ddlmZ ddlmZ d Zd Zej*                  j,                  ej*                  j/                  ddd	g      ej*                  j/                  d
ddg      ej*                  j/                  dddg      ej*                  j/                  dddddgge      ej*                  j/                  ddddgge      ej*                  j/                  ddd	g      ej*                  j/                  dddg      ej*                  j/                  ddd	g      ej*                  j/                  ddd	g      ej*                  j/                  ddd	g      d                                                                              Zej*                  j/                  ddd	g      d        Zej*                  j/                  dd d!gg d"g      d#        Zej*                  j/                  dd d!gg d"g      d$        Zd% Zd& Zej>                  d'        Z d( Z!d) Z"d* Z#d+ Z$ej*                  j/                  d,g d-      ej*                  j/                  dddg      ej*                  j/                  d.g d/      ej*                  j/                  d0dd	g      ej*                  j/                  d1dd	g      d2                                    Z%ej*                  j/                  d3dd	g      ej*                  j/                  d4d	dg d5g d6g d7fdd	g d8g d9g d:fddg d;g d<g d=fg      d>               Z&ej>                  d?        Z'ej*                  j/                  d@d	dd	dAg dBg dCfddd	dAg dDg dEfdd	d	dAg dFg dGfdd	ddHg dIg dGfg      dJ        Z(ej>                  dK        Z)ej*                  j/                  dLd	d	g dMg dNfd	dg dOg dPfdd	g dQg dRfddg dSg dTfg      dU        Z*ej>                  dV        Z+ej*                  j/                  dWddXdXg e
jX                  g dYg dZ[      fd	g d\ e
 e	dXg       e	g d]       e	d^d_ejZ                  g      gg d`g dag dbgg dZc      fg      ej*                  j/                  dddg      dd               Z.ej*                  j/                  d0d	dg      ej*                  j/                  ded	dg      ej*                  j/                  dfd	dA ej^                  g dgej`                  h      fddH ej^                  g di      fg      dj                      Z1dk Z2ej*                  j/                  d0dd	g      ej*                  j/                  dfd	dA ej^                  g dgej`                  h      fddH ej^                  g di      fg      dl               Z3ej*                  j/                  d0dd	g      ej*                  j/                  dfd	dA ej^                  g dmej`                  h      fddH ej^                  g dn      fg      do               Z4ej*                  j/                  d0dd	g      ej*                  j/                  dpd	g dqfdg drfg      ej*                  j/                  dfd	dA ej^                  g dsej`                  h      fddH ej^                  g dt      fg      du                      Z5ej*                  j/                  d0d	dg      ej*                  j/                  ded	dg      ej*                  j/                  dfd	dA ej^                  g dgej`                  h      fddH ej^                  g di      fg      dv                      Z6ej*                  j/                  dwd	dAg dxfddHg dTfg      dy        Z7ej*                  j/                  dzd{ e8d|      g d}fd~ e8d      dgz   g dfg      ej*                  j/                  d0d	dg      d               Z9ej*                  j/                  dddg      d        Z:d Z;d Z<d Z=d Z>d Z?ej*                  j/                  ddd	g      d        Z@d ZAej*                  j/                  ddd	g      ej*                  j/                  d3dd	g      d               ZBej*                  j/                  ddd	g      ej*                  j/                  d3dd	g      d               ZCy)z
these are systematically testing all of the args to value_counts
with different size combinations. This is to ensure stability of the sorting
and proper parameter handling
    N)	CategoricalCategoricalIndex	DataFrameGrouperIndex
MultiIndexSeries
date_rangeto_datetime)Versionc                  \   t        dgdgd      } | d   j                  d      | d<   | j                  d      d   j                         }t        ddggddg      }|d   j                  d      |d<   t	        j
                  |      }t        dg|d	
      }t        j                  ||       y )NfemaleUS)gendercountryr   categoryr   columns   countindexname)	r   astypegroupbyvalue_countsr   
from_framer	   tmassert_series_equal)dfresultdf_mi_expectedmi_expectedexpecteds        }/mnt/ACDE16A4DE16673C/PROJECTS/MIS_PORTAL/venv/lib/python3.12/site-packages/pandas/tests/groupby/methods/test_value_counts.py.tests_value_counts_index_names_category_columnr&      s    	jv	

B h<&&z2BxLZZ	"8,99;F x 01Ix;PQN-h7>>zJN8''7Kqc7;H68,    c           	         t        dd      }t        t        j                  j	                  d      j                  t        d      |      t        j                  j	                  d      j                  ||      t        j                  j	                  d      j                  d|dz   |      d      }| r|d   j                  d	      |d<   t        j                  |j                  dd d
df<   t        j                  |j                  dd ddf<   t        j                  |j                  dd ddf<   t        j                  |j                  dd ddf<   t        j                  |j                  dd ddf<   |S )Nz
2015-08-24
   )periods   abcdr   )1st2nd3rdr/   float   r-         r.            	   )r
   r   nprandomdefault_rngchoicelistintegersr   nanloc)	seed_nansnmdaysframes        r%   seed_dfrE   .   s2   lB/D99((+224<C99((+224;99((+44QAqA	
E U|**73e"$&&		!%R%,"$&&		!%R%,"$&&		!%R%,"$&&		!%R%,"$&&		!%R%,Lr'   r@   TFnum_rowsr)   2   max_int      keysr-   r.   )idsbinsisortznormalize, name)T
proportion)Fr   sort	ascendingdropnac                    t        | ||      }d }|||	|
|d}|j                  ||      } |d   j                  di |}|j                  ||      } |d   j                  t        j                  fi |}|j
                  j                  d d dgz   |j
                  _        |j                  |      }t        |||f      \  }}t        j                  |j                         |j                                y )Nc                     t        t        | j                  j                  t	        | j                  j
                                    }t        j                  || j                  j                        | _        | S )Nnames)	r<   mapr   get_level_valuesrangenlevelsr   from_arraysrV   )r    arrs     r%   rebuild_indexz7test_series_groupby_value_counts.<locals>.rebuild_index_   sM    3rxx00%8H8H2IJK))#RXX^^D	r'   )	normalizerP   rQ   rR   rM   rP   r/    )rE   r   r   applyr	   r   rV   renamerW   r   r   
sort_index)r@   rF   rH   rK   rM   rN   r^   r   rP   rQ   rR   r    r]   kwargsgrleftrights                    r%    test_series_groupby_value_countsri   E   s    0 
Hg	.B F 
Du	%B!2e9!!+F+D	Du	%BBuIOOF//:6:E))#2.%8EKKLLE mdE]3KD%4??,e.>.>.@Ar'   utcc                    t        g dg dd      j                  dg      }t        |d   | d      |d<   |j                  t	        d	d
            }|d   j                         j                         }|d   j                  t        j
                        j                         }|j                  j                  |j                  _
        |j                  d      }t        j                  ||       y )NiGI]i)J]iJ]iK]i)<M]iU=M]iN]applern   bananaro   orangerp   pear	TimestampFoodr2   rs   srj   unitDatetime1Dfreqkeyrt   r   )r   dropr   r   r   r   rd   rb   r	   r   rV   rc   r   r   )rj   r    dfgr!   r$   s        r%   -test_series_groupby_value_counts_with_grouperr   z   s     
 W	

 dA3i  !KcDBzN
**W$J7
8C [%%'224F6{  !4!45@@BH!<<--HNNw'H68,r'   r   AB)r   r   Cc                    t        |       }|j                  | d d       }|| d      j                         }t        g |j                  d      }t        j                  g gt        |       z  |       |_        t        j                  ||       y )Nr   r`   r   )dtyper   rU   )r   r   r   r	   r   r   r[   lenr   r   r   r   r    r~   r!   r$   s        r%   &test_series_groupby_value_counts_emptyr      sz     
7	#B
**WSb\
"C**,Fb7;H++RD3w<,?wOHN68,r'   c                     t        t        t        |             g|       }|j                  | d d       }|| d      j	                         }|j	                         }t        j                  ||       y )N)datar   r`   )r   rY   r   r   r   r   r   r   s        r%   (test_series_groupby_value_counts_one_rowr      sc     
s7|,-w	?B
**WSb\
"C**,F H68,r'   c                  8   t        t        dgddg            } | j                  dg      j                         }t        ddgt	        j
                  t        j                  ddg      t        ddgddgdd      g      d	
      }t        j                  ||       y )Nab)
categoriesr   r   Fr   )r   orderedr   r   r   r   r   )r	   r   r   r   r   r[   r8   arrayr   r   r   )ru   r!   r$   s      r%   /test_series_groupby_value_counts_on_categoricalr      s     	{C5c3Z89AYYs^((*FV$$!Q  #JC:uJ
 H$ 68,r'   c                     t        g dg dg dd      } | j                  ddgd      d	   }|j                  d      }t        d
dgddgg dgg dg dg dgg d      }t	        g d|d      }t        j                  ||       y )Nmaler   r   r   r   r   lowmediumhighr   r   r   r   FRr   r   r   r   r   	educationr   r   r   Fr_   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   levelscodesrV   r   r   r   r+   r   r   r   )r   r   r   r   r	   r   r   )r    gbr!   r   r$   s        r%   (test_series_groupby_value_counts_no_sortr      s    	JH;	

B 
Y)	6{	CB__%_(Ftvx02KLA0E
 oUAH68,r'   c                  ,    t        g dg dg dd      S )Nr   r   r   r   r   ra   r'   r%   education_dfr      s    JH;	
 r'   c                    d}t        j                  t        |      5  | j                  dd      }d d d        t	        j
                  t        d      5  j                          d d d        y # 1 sw Y   >xY w# 1 sw Y   y xY w)Nz+DataFrame.groupby with axis=1 is deprecatedmatchr   r   axisr   )r   assert_produces_warningFutureWarningr   pytestraisesNotImplementedErrorr   )r   msggps      r%   	test_axisr      st    
7C		#	#M	= 5!!)!!45	*&	9 
 5 5 s   A/A;/A8;Bc                     | j                  d      }t        j                  t        d      5  |j	                  dg       d d d        y # 1 sw Y   y xY w)Nr   subsetr   r   )r   r   r   
ValueErrorr   )r   r   s     r%   test_bad_subsetr      sE    			i	(B	z	2 ,
	{+, , ,s   A

Ac                 x   t        t        j                        t        d      k\  r0|j                  t        j
                  j                  dd             | j                  d      ddg   j                  d	      }t        g d
t        j                  g dg d      d      }t        j                  ||       y )N1.25Ypandas default unstable sorting of duplicatesissue with numpy>=1.25 with AVX instructionsFreasonstrictr   r   r   Tr^   )      ?      ?r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rU   rO   r   )r   r8   __version__applymarkerr   markxfailr   r   r	   r   from_tuplesr   r   )r   requestr!   r$   s       r%   
test_basicr      s    r~~'&/1KKC   	
 !!),h-DERR S F ($$ 5	
 H 68,r'   c                 0    | |   j                  |||      S )Nr^   rP   rQ   )r   )r    rK   r^   rP   rQ   s        r%   _frame_value_countsr     s    d8  949 UUr'   r   columnr   functionzsort, ascending))FN)TT)TFas_indexrD   c
                     t        t        j                        t        d      k\  r6|r4|r2|r0|j                  t        j
                  j                  dd             d d   j                   fdd|   }
 j                  |
|      }|d	d
g   j                  |||      }|r	|dk(  rt        nd }d}t        j                  ||      5  |j                  t        d	d
g|||      }d d d        |rt        j                  |       y |rdnd}j!                         j#                  d|id      }|dk(  r3|j#                  ddid      }t        j$                  |d   dd      |d<   n.|dk(  r|d   dk(  |d<   nt        j$                  |d   dd      |d<   t        j&                  ||       y  d	   dz    d
   z    d<   |d   j                  |||      }||_        |r"|j*                  j-                  d      }|d   j.                  j1                  d      j.                  j3                  d      |d	<   |d   j.                  j1                  d      j.                  j3                  d      |d
<   |d= |j#                  dd id      }t5        j6                  |      |_        |j8                  j;                         d   r,d g|j*                  j<                  dd  z   |j*                  _        t        j                  ||       y |j?                  dd	|d   j.                  j1                  d      j.                  j3                  d             |j?                  dd
|d   j.                  j1                  d      j.                  j3                  d             |	r|jA                  ddd      }|d= t        j&                  ||       y # 1 sw Y   xY w)Nr   r   Fr   r   c                     d   |    dk(  S )Nr   r   ra   )xr   s    r%   <lambda>z6test_against_frame_and_seriesgroupby.<locals>.<lambda>K  s    l95a8D@ r'   r   )byr   r   r   r   r   z7DataFrameGroupBy.apply operated on the grouping columnsr   rO   r   r   r   r   level_0r   r   r   -bothr   r+   str)r   r   )!r   r8   r   r   r   r   r   valuesr   r   r   r   r   rb   r   r   reset_indexrc   whereassert_frame_equalr   r   to_framer   splitgetr   r   r   isnarV   insertr   )r   r   r^   r   rP   rQ   r   rD   r   using_infer_stringr   r   r!   warnr   r$   index_frameindex_frame2s   `                 r%   $test_against_frame_and_seriesgroupbyr     s   @ r~~'&/1eKKC   	
 i(//@
 	
B 
		h		7B;'(55$) 6 F  '8 3}G''C8 	xx#h%<iyH	
 ""684#,<'D++-44aYQ4GH("#??Iy+A?J&(hhx	/BD$&O#J&&.y&9Q&>#&(hhx	/BD$&O#!!&(3  ,H5;l;>WWVf:**di + 
 "..111>K$/$7$;$;$A$A#$F$J$J$N$Nq$QK!'26':'>'>'D'DS'I'M'M'Q'QRS'TK$F#&--q$ia-@L'22<@HN##((*1- )-v0D0DQR0H'H$""684OOAx&)9)=)=)C)CC)H)L)L)P)PQR)STOOA{HV,<,@,@,F,Fs,K,O,O,S,STU,VW!#??e%+PQ !!&(3[	 	s   OOr^   zCsort, ascending, expected_rows, expected_count, expected_group_size)r   r   r+   r2      r   )r   r2   r   r2   r   )r2   r   r   r+   r   )r+   r   r   r   r   )r2   r   r2   r   r   )r   r   r+   r   r2   )r   r   r   r   r+   )r   r2   r   r   r2   c	                    |}	| j                  |	      } | j                  j                  |	      | _        | j                  ddgdd      }
|
d   j                  |||      }t	               }dD ]L  }|D cg c]
  }| |   |    c}||<   |j                  |	      }|j                  j                  |	      |_        N |r.||d<   |dxx   |z  cc<   |	d	k(  r7|d   j                         |d<   n ||d
<   |	d	k(  r|d
   j                         |d
<   |r|	t        k(  r|j                  dddd      }t        j                  ||       y c c}w )Nr   r   Fr   rP   r   r   r   rO   zstring[pyarrow]r   r   )	r   r   r   r   r   convert_dtypesobjectr   r   )r   r^   rP   rQ   expected_rowsexpected_countexpected_group_sizeany_string_dtyper   r   r   r!   r$   r   rows                  r%   test_compoundr     sq   ( E&&u-L'//66u=L			y(3e%		PB_))$) * F {H4 :ANO#L05O??5)#++2259: !/"55%%%-l%;%J%J%LH\"*%% ( 1 @ @ BHWevo??UC
 &(+% Ps   4Ec                  4    t        g dg dg ddg d      S )Nr   r   r   r   )r+   r   r      )r+   r   r   r   r|   num_legs	num_wings)falcondogcatantr   r   ra   r'   r%   
animals_dfr    s    ,\R- r'   z?sort, ascending, normalize, name, expected_data, 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   r+   r   )r   r+   r   rO   )r   r   r   c                    | j                  |||      }t        |t        j                  |g d      |      }t	        j
                  ||       | j                  d      j                  |||      }	t	        j
                  |	|       y )N)rP   rQ   r^   r   rU   r   r|   )r   r	   r   r[   r   r   r   )
r  rP   rQ   r^   r   expected_dataexpected_indexresult_framer$   result_frame_groupbys
             r%   test_data_frame_value_countsr    s    * **Y) + L $$"B
 H <2%--e4AAY) B  /:r'   c                      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   r   r2   r+   rI   r6   r4   )r   r   r   D)r8   r>   r   )rA   s    r%   nulls_dfr    su    
AQ1aAq!,Q1aAq!,Q1aAq!,Q1aAq!,		
 r'   z:group_dropna, count_dropna, expected_rows, expected_values)	r   r   r2   rI   r4   r   r6   r+   r   )	r   r         ?r   r   r   r   r  r  )r   r   r2   rI   r+   r   )r   r   r  r  r  r  )r   r   rI   r4   r   r6   )r   r   r   r   r   r   )r   r   rI   )r   r   r  c                    t        t        j                        t        d      k\  r2|s0|j                  t        j
                  j                  dd             | j                  ddg|      }|j                  dd|	      }t               }| j                  D ]  }	|D 
cg c]
  }
| |	   |
    c}
||	<    t        j                  |      }t        ||d
      }t        j                  ||       y c c}
w )Nr   r   Fr   r   r   )rR   T)r^   rP   rR   rO   r   )r   r8   r   r   r   r   r   r   r   r   r   r   r   r	   r   r   )r  group_dropnacount_dropnar   expected_valuesr   r   r!   r   r   r   r   r$   s                r%   test_dropna_combinationsr    s    " r~~'&/1,KKC   	
 
		3*\		:B__t$|_LFkG"" K<IJS8F+C0JK!!'*E?%lKH68, Ks   C/c                 0    t        g dg dd| | dgd      S )Nr   )JohnAnner  BethSmithLouiser|   
first_namemiddle_namer   )nulls_fixtures    r%   names_with_nulls_dfr"    s&    :#]M8L	
 r'   z%dropna, expected_data, expected_indexr   )r   r   )r  r  )r  r  r  rU   r   )r  r  r  r  r  )r   r   r   r   )r   r   r+   r+   )r+   r   r   r+   r   c                    | j                  ||      }t        |||      }|r|t        t        |            z  }t	        j
                  ||       | j                  d      j                  ||      }t	        j
                  ||       y )N)rR   r^   r   r|   )r   r	   r0   r   r   r   r   )	r"  rR   r^   r   r
  r  r  r$   r  s	            r%   #test_data_frame_value_counts_dropnar%  &  s    B '336Y3WLH
 E#m,--<2.66u=JJ K  /:r'   observedznormalize, name, expected_data)r+   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r           r(  r(  r   r   r(  r(  r(  r(  c                    t        t        j                        t        d      k\  r0|j                  t        j
                  j                  dd             | j                  d      j                  d||      }|j                  |      }t        j                  g d	g d
      }	t        ||	|      }
t        d      D ]D  }|
j                  j                  t!        |
j                  j"                  |         |      |
_        F |rt%        j&                  ||
       y |
j)                  |rdnd      }t%        j*                  ||       y )Nr   r   Fr   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   r   r   r   r   rU   r   r2   levelrO   r   r   )r   r8   r   r   r   r   r   r   r   r   r   r   r	   rY   r   
set_levelsr   r   r   r   r   r   r   r   r&  r^   r   r
  r   r   r!   r  expected_seriesir$   s                r%   =test_categorical_single_grouper_with_only_observed_categoriesr:  Y  sE   , r~~'&/1KKC   	
 
		Z	(	0	0Hx 
1 
B __y_1F++	
 1N$ O
 1X 
 / 5 5 @ @_2299!<=Q !A !


 
v7"..!* / 
 	fh/r'   c                    | j                         j                  d      } | d   j                  j                  dg      | d<   | j	                  d||      }|j                  |      }t        |t        j                  |g d      |      }	t        d	      D ]s  }
t        |	j                  j                  |
         }|
d
k(  r(|j                  | d   j                  j                        }|	j                  j                  ||
      |	_        u |rt!        j"                  ||	       y |	j%                  |      }t!        j&                  ||       y )Nr   r   ASIAr*  r   r   rU   r   r2   r   r3  r5  )copyr   r  add_categoriesr   r   r	   r   r   rY   r   r   r   set_categoriesr   r6  r   r   r   r   )r   r   r&  r  r^   r   r
  r   r!   r8  r9  index_levelr$   s                r%   !assert_categorical_single_grouperrA    sD     $$&--j9L +9599HH&RL			i(X		NB__y_1F$$4
 O 1X W&'<'<'C'CA'FG6%44Y'++66K !0 5 5 @ @TU @ VW 
v7"..D.9
fh/r'   c           	          t        t        j                        t        d      k\  r0|j                  t        j
                  j                  dd             g d}t        | |d||||       y )Nr   r   Fr   r+  Tr   r   r&  r  r^   r   r
  r   r8   r   r   r   r   r   rA  r   r   r^   r   r
  r   r  s          r%   -test_categorical_single_grouper_observed_truerF    so    * r~~'&/1KKC   	
N &!%#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(  r(  r(  r(  r(  r(  r(  r(  r(  r(  c           	          t        t        j                        t        d      k\  r0|j                  t        j
                  j                  dd             g d}t        | |d||||       y )Nr   r   Fr   )r   r   r   r,  r-  r.  r   r   r/  r0  r1  r2  )r<  r   r   )r<  r   r   )r<  r   r   )r<  r   r   )r<  r   r   )r<  r   r   rC  rD  rE  s          r%   .test_categorical_single_grouper_observed_falserH    sp    X r~~'&/1KKC   	
N* &!%#r'   zobserved, expected_index)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   r   r   )r   r   r   )r   r   r   )rI  rJ  rK  rL  rM  )r   r   r+   r   r   r   r   r   r   r   r   r   )r  r(  r  r(  r  r(  r  r(  r  r(  r(  r(  c                 \   | j                         } | d   j                  d      | d<   | d   j                  d      | d<   | j                  ddg||      }|j                  |      }t	        |r||dkD     n|t        j                  |g d      |	      }	t        d
      D ]D  }
|	j                  j                  t        |	j                  j                  |
         |
      |	_        F |rt        j                  ||	       y |	j                  |rdnd      }t        j                  ||       y )Nr   r   r   r*  r   r(  )r   r   r   rU   r   r+   r3  rO   r   r5  )r=  r   r   r   r	   r   r   rY   r   r6  r   r   r   r   r   r   )r   r   r&  r  r^   r   r
  r   r!   r8  r9  r$   s               r%   "test_categorical_multiple_groupersrO  X  s@   n  $$&L*95<<ZHL ,[ 9 @ @ LL				K 8h 
 
B __y_1F3;]=3./$$4
 O 1X 
 / 5 5 @ @_2299!<=Q !A !


 
v7"..!* / 
 	fh/r'   c                    t        t        j                        t        d      k\  r0|j                  t        j
                  j                  dd             | j                         } | d   j                  d      | d<   | d   j                  d      | d<   | j                  d||	      }|j                  |
      }g d}	t        |t        j                  |	g d      |      }
t        dd      D ]D  }|
j                  j!                  t#        |
j                  j$                  |         |      |
_        F |rt'        j(                  ||
       y |
j+                  |rdnd      }t'        j,                  ||       y )Nr   r   Fr   r   r   r   r   r*  r   r+  r   rU   r   r   r2   r3  rO   r   r5  )r   r8   r   r   r   r   r   r=  r   r   r   r	   r   r   rY   r   r6  r   r   r   r   r   r   r7  s                r%   test_categorical_non_groupersrQ    sw   0 r~~'&/1KKC   	
  $$&L)(3:::FL ,[ 9 @ @ LL			i(X		NB__y_1FN $$4
 O 1a[ 
 / 5 5 @ @_2299!<=Q !A !


 
v7"..!* / 
 	fh/r'   z*normalize, expected_label, expected_valuesr  c                    t        g dg dd      }|j                  g ddd gd      }|j                  d	| 
      }t        dt        j                  g dt
              dg ddg ddg d||i      }t        j                  ||       y )Nr  r   r+   r2   )r   r   )r   rI   r   r   c                     | dk(  rdS dS )Nr   r4   r6   ra   )r9  s    r%   r   z&test_mixed_groupings.<locals>.<lambda>  s    AFq  r'   Fr   TrP   r^   r   )r   r   rI   r'  r  level_2)r6   r6   r4   r   )r   r2   r+   )r   r   r   r8   r   intr   r   )r^   expected_labelr  r    r   r!   r$   s          r%   test_mixed_groupingsrZ    s     
3	4B	Y%ABU	SB__$)_<Frxx	5yO	
H &(+r'   ztest, columns, expected_namesrepeatabbde)r   Ndr   r   er4  r,   level_1)r   Nr]  r   cr_  c                 
   t        g dg dg|      }ddg}dt        j                  ddgt        j                  	      d
g}|j	                  ||      j                         }|r:t        dt        j                  ||      d      }t        j                  ||       y |D 	cg c]  }	t        |	      dgz    }}	t        |      }
d|
d<   |
j                  d       t        ||
      }t        j                  ||       y c c}	w )N)r   r2   rI   r4   r7   )r+   r   r   r6   r)   r   )r   r   r4   r2   rI   r7   )r+   r   r6   r   r   r)   r   r   r   r'  r]  rU  r#  rU   r   r   r_  )r   r8   r   int64r   r   r	   r   r   r   r   r<   appendr   )testr   expected_namesr   r    r
  rK   r!   r$   r   expected_columnss              r%   test_column_label_duplicatesrg    s     
O%56	HB')<=M1a&137DZZxZ0==?F(($ 
 	vx04ABScaSBB/'(]4DE
fh/ Cs   #D znormalize, expected_labelc                     t        g dgdd|g      j                  dd      }d| d}t        j                  t        |	      5  |j                  | 
       d d d        y # 1 sw Y   y xY w)NrS  r   r   r   FrU  zColumn label 'z' is duplicate of result columnr   r   )r   r   r   r   r   r   )r^   rY  r   r   s       r%   test_result_label_duplicatesri  6  sr     
I;c>(B	C	K	Ke 
L 
B >**I
JC	z	- -
),- - -s   A""A+c                  ,   t        dddgi      } | j                  t        j                  ddgt        j                              }|j                         }t        dgt        j                  ddggd dg      d      }t        j                  ||       y )Nr   r   r'  r+   rU   r   r   )r   r   r8   r   rb  r   r	   r   r   r   r   )r    r   r!   r$   s       r%   test_ambiguous_groupingrk  G  s}    	C!Q=	!B	BHHaV2884	5B__F	
:))Aq6(4+FWH 68,r'   c                      t        g dg ddg d      } d}t        j                  t        |      5  | j	                  d      j                  dg	       d d d        y # 1 sw Y   y xY w)
Nr   r   r`  r   yro  c1c2r   r   r   r   z;Keys {'c1'} in subset cannot be in the groupby column keys.r   rq  r   r   r   r   r   r   r   r    r   s     r%   "test_subset_overlaps_gb_key_raisesrv  R  sW    	/A	SB
GC	z	- 5


4%%dV%45 5 5   #A  A)c                      t        g dg ddg d      } d}t        j                  t        |      5  | j	                  d      j                  d	g
       d d d        y # 1 sw Y   y xY w)Nrm  rn  rp  rs  r   z4Keys {'c3'} in subset do not exist in the DataFrame.r   rq  c3r   rt  ru  s     r%   !test_subset_doesnt_exist_in_framerz  Z  sW    	/A	SB
@C	z	- 5


4%%dV%45 5 5rw  c                      t        g dg ddg d      } | j                  d      j                  dg	      }t        d
dgt	        j
                  dd
gddggd dg      d      }t        j                  ||       y )Nrm  rn  rp  rs  r   r   r3  rr  r   r   r+   r   ro  rU   r   r   r   r   r   r	   r   r[   r   r   r    r!   r$   s      r%   test_subsetr~  b  sz    	/A	SBZZaZ --dV-<F	
A$$q!fsCj%9$NH
 68,r'   c            	         t        g dg dg dgg dg d      } | j                  d      j                  dg	      }t        d
dgt	        j
                  dd
gddgddggg d      d      }t        j                  ||       y )N)r   r   r   )r   ro  ro  rs  )rq  rr  rr  )r   r   r   r3  rr  r   r   r+   r   ro  )Nrr  rr  rU   r   r   r|  r}  s      r%   test_subset_duplicate_columnsr  n  s    		/?;"
B
 ZZaZ --dV-<F	
A$$Vc3Z#s,4F
 H 68,r'   c                    t        g dg dd      j                  dg      }t        |d   | d      j                  j	                  |      |d<   |j                  t        d	d
            }|j                         }t        g d|       j	                  |      }|d   j                         }t        ||g dgg dt        d      g dgg d      }t        d|d      }t        j                  ||       y )Nrl   rm   rr   r2   rs   ru   rv   rx   ry   rz   )z
2019-08-06z
2019-08-07z
2019-08-09z
2019-08-10)rj   )rn   ro   rp   rq   )r   r   r   r+   r+   r2   r   )r   r   r   r+   r+   r2   )rx   rs   rt   r   r   r   r   )r   r}   r   dtas_unitr   r   r   uniquer   rY   r	   r   r   )	rj   rw   r    r   r!   dates
timestampsr   r$   s	            r%   test_value_counts_time_grouperr    s     
 W	

 dA3i  !KcDGGOOPTUBzN	G:6	7B__F@cgdm 
 K'')Jz#HI!58-?@/E
 au73H68,r'   c                      t        g dg dg dd      } | j                  ddgdd      }|d	   j                         }t        g dg dg ddd
      }t        j                  ||       y )N)r   r   r   )r   r   r]  rm  rS  r   r+   Fr   r2   )r   r+   r2   r   )r   r   r   r   r   )r    r   r!   r$   s       r%   !test_value_counts_integer_columnsr    se    	?O	PB	QFU	7BU!FOaPH &(+r'   vc_sortc                 r   t        g dg dd      }|j                  d|       }|j                  ||      }|rg d}ng d}t        d	d
gddggg dg dgddg      }t	        |||rdnd      }| r|rg d}	n| r|sg d}	n| s|rg d}	ng d}	|j                  |	      }t        j                  ||       y )Nr+   r   r   r   r2   r   r2   r2   r   r   r   r_   rV  )UUUUUU?UUUUUU?r  r  r   r+   r2   r   )r   r   r   )r   r   r   r   r   rO   r   r   )r   r   r+   )r   r+   r   )r+   r   r   )r   r   r   r   r	   taker   r   )
rP   r  r^   r    r   r!   r   r   r$   takers
             r%   test_value_counts_sortr    s     
,7	8B	Cd	#B__'Y_?F$AA	9'=c1XE fE	wWH	gg}}U#H68,r'   c           	         t        g dg ddd      }|j                  d| d      }|j                  ||	      }|rg d
}ng d}|rdnd}t        dt        g d      dt        g d      ||i      j	                  ddg      |   }| r|rg d}	n| r|sg d}	n| s|rg d}	ng d}	|j                  |	      }t        j                  ||       y )Nr  r  r  r   r'  r   T)rP   r&  rV  )r  r  r  r(  )r+   r   r   r   rO   r   )r   r   r+   r+   r   )r2   r   r2   r   )r   r   r+   r2   )r   r+   r   r2   )r+   r2   r   r   )r   r   r   r   	set_indexr  r   r   )
rP   r  r^   r    r   r!   r   r   r$   r  s
             r%   "test_value_counts_sort_categoricalr    s     
,7z	JB	CdT	2B__'Y_?F)$<'D\*{<(&	
 ia$ H 	gg}}U#H68,r'   )D__doc__numpyr8   r   pandasr   r   r   r   r   r   r	   r
   r   pandas._testing_testingr   pandas.util.versionr   r&   rE   r   slowparametrizereprri   r   r   r   r   r   fixturer   r   r   r   r   r   r   r  r  r  r  r"  r[   r>   r%  r   rb  r:  rA  rF  rH  rO  rQ  rZ  r<   rg  ri  rk  rv  rz  r~  r  r  r  r  r  ra   r'   r%   <module>r     s4
    
 
 
  '-(. tUm4b"X.QG,%!?TJ$AT:4-0*-ACS,TU$/tUm4D%=1'B 2 5 0 V 1 ; K - / 5 'BT u.- /-< c3Z$AB	- C	- c3Z$AB- C--6-(  ,-@V $CD*-ACS,TU dE]34-0Y4 1 4 V EY4x tUm4I	oH	uoH	t_oG', 5',T   E	eWi1RS	tUGY0QR	ueWi1RS-	
	 ;! ;0 	 	 @ '=		
 
(*HI	u(*LM	tY0
--.   + F"J""?:	
 1#J238Wbff56
 $\<@:	
4 *-=?S,TU; V56;0 eT]3eT]3$ BHH9J	
 BHHST	
70 4 4"70t 0F dE]3$ BHH9J	
 BHHST	
' 4 'T dE]3$ BHHFbhh	
 BHH	
"%L-M% 4N-` dE]3 	
$ 		
%@ $ BHH9J	
 BHHQR		
 "0!A 4b"0J eT]3eT]3$ BHH9J	
 BHHST		
 90! 4 4$90x 0	#	|_-,," #	4="AB	$v,),.ST eT]30 404 ---55	--$ u.- /-B, T5M2tUm4- 5 3-6 T5M2tUm4- 5 3-r'   