
    'YHh8                     2   d dl mZmZ d dlZd dlmZ d dlZd dl	Z	d dl
mZ d dlmZmZmZmZmZ d dlmZmZ  G d d      Z G d	 d
e      Z G d de      Zd Zd Ze	j4                  j6                  d        Ze	j4                  j6                  d        Zd Zy)    )assert_frame_equalassert_series_equalN)assert_equal)sparse)dummy_sparseGroupingGroupcombine_indices
group_sums)grunfeldanes96c                       e Zd Zej                  j
                  d        Zd Zd Zd Z	d Z
d Zej                  j
                  d        Zd Zy	)
CheckGroupingc                 b    | j                   j                  | j                   j                         y N)groupingreindexindexselfs    `/var/www/html/planif/env/lib/python3.12/site-packages/statsmodels/tools/tests/test_grouputils.pytest_reindexzCheckGrouping.test_reindex   s    dmm112    c                     | j                   j                  d       t        j                  j	                  | j                   j
                  | j                         y )Nr   level)r   count_categoriesnptestingr   countsexpected_countsr   s    r   test_count_categoriesz#CheckGrouping.test_count_categories   s;    &&Q&/


 4 4d6J6JKr   c                    | j                   j                  | j                        \  }}| j                  j                         }t	        ||       t
        j                  j                  t        |t        j                               t
        j                  j                  |j                  | j                   j                                t        |d      r9t
        j                  j                  |j                  | j                                | j                   j                  | j                  j                        \  }}t
        j                  j                  ||j                         t
        j                  j                  t        |t
        j                                | j                  | j                  j"                  d      }| j                   j                  |      \  }}|j                         }t%        ||       t
        j                  j                  t        |t        j&                               t        |d      r/t
        j                  j                  |j                  |              |j                  }| j                   j                  |      \  }}|j                         j                  }t
        j                  j                  ||       t
        j                  j                  t        |t
        j                                y )Nequalsr   )r   sortdata
sort_indexr   r   r   assert_
isinstancepd	DataFramer$   r   hasattrvaluesassert_array_equalndarraycolumnsr   Series)r   sorted_datar   expected_sorted_dataseriesarrays         r   	test_sortzCheckGrouping.test_sort   s   !]]//		:U#yy335;(<=


:k2<<@A


u||DMM,?,?@@A ;)JJ;#5#5dii#@@A "]]//		0@0@AU


%%k&:&A&A	C


:k2::>? 499,,Q/0!]]//7U%002K)=>


:k299=>;)JJ;#5#5f#==> !]]//6U%00299


%%k3GH


:k2::>?r   c                    | j                   j                  j                  }| j                  j	                  | j                   d d      }|d   gt        | j                   j                        z   }| j                   j                         |   j                  |d         }|| j                   j                     j                  d      }|j                  d       }t        j                  j                  ||j                         t        |      dkD  r| j                  j	                  | j                   d d      }|d   gt        | j                   j                        z   }| j                   j                         |   j                  |d         }|j                  d      }|j                  d       | j                   j                     }t        j                  j                  ||j                         y y )Nc                 "    | j                         S r   meanxs    r   <lambda>z8CheckGrouping.test_transform_dataframe.<locals>.<lambda>A       qvvx r   r   r   c                 "    | j                         S r   r9   r;   s    r   r=   z8CheckGrouping.test_transform_dataframe.<locals>.<lambda>F   s    AFFH r      c                 "    | j                         S r   r9   r;   s    r   r=   z8CheckGrouping.test_transform_dataframe.<locals>.<lambda>L   s    !&&( r   c                 "    | j                         S r   r9   r;   s    r   r=   z8CheckGrouping.test_transform_dataframe.<locals>.<lambda>Q       qvvx r   )r&   r   namesr   transform_dataframelistr0   reset_index	set_indexgroupbyapplyr   r   assert_allcloser-   len)r   rD   transformed_dataframecolsdfgroupedexpecteds          r   test_transform_dataframez&CheckGrouping.test_transform_dataframe=   s   		%% $ A A,0II,?23 !B !5 azD!2!233YY""$T*44U1X>TYY&&'//a/8==!45


""#8#+??	4 u:>$(MM$E$E,0II7J23 %F %5! !H:TYY%6%6 77D&&(.88qBBjjqj)G}}%789J9JKHJJ&&'<'/8 r   c                 F   | j                   j                  j                  }| j                  j	                  | j                   j
                  d d      }|d   gt        | j                   j                        z   }| j                   j                         |   j                  |d         }|| j                   j                     j                  d      }|j                  d       }t        j                  j                  ||j
                         t        |      dkD  r| j                  j	                  | j                   j
                  d d      }|d   gt        | j                   j                        z   }| j                   j                         |   j                  |d         }|| j                   j                     j                  d      }|j                  d       | j                   j                     }t        j                  j                  ||j
                         y y )Nc                 "    | j                         S r   r9   r;   s    r   r=   z4CheckGrouping.test_transform_array.<locals>.<lambda>Y   r>   r   r   r   c                 "    | j                         S r   r9   r;   s    r   r=   z4CheckGrouping.test_transform_array.<locals>.<lambda>^   s    1668 r   r@   c                 "    | j                         S r   r9   r;   s    r   r=   z4CheckGrouping.test_transform_array.<locals>.<lambda>e   r>   r   c                 "    | j                         S r   r9   r;   s    r   r=   z4CheckGrouping.test_transform_array.<locals>.<lambda>i   rC   r   )r&   r   rD   r   transform_arrayr-   rF   r0   rG   rH   rI   rJ   r   r   rK   rL   )r   rD   transformed_arrayrN   rO   rP   rQ   s          r   test_transform_arrayz"CheckGrouping.test_transform_arrayU   s   		%% MM99,0II,<,<,?23 : 5 azD!2!233YY""$T*44U1X>TYY&&'//a/8==!34


""#4#+??	4 u:> $ = =,0II,<,<,?q !> !J !H:TYY%6%6 77D&&(.88qBB**+33!3<G}}%789J9JKHJJ&&'8'/8 r   c                 &   | j                   j                  j                  }| j                  j	                  | j                   j
                  d d      }| j                   j                         j                  |d         | j                   j                     j                         }t        j                  j                  ||j
                  dd       t        |      dkD  r| j                  j	                  | j                   j
                  d d      }| j                   j                         j                  |d         | j                   j                     j                         }t        j                  j                  ||j
                  dd       y y )	Nc                 $    | j                  d      S Nr   r9   r<   idxs     r   r=   z5CheckGrouping.test_transform_slices.<locals>.<lambda>r       AFF1I r   r   r   g-q=g}:)rtolatolr@   c                 $    | j                  d      S r]   r9   r^   s     r   r=   z5CheckGrouping.test_transform_slices.<locals>.<lambda>|   r`   r   )r&   r   rD   r   transform_slicesr-   rG   rI   r0   r:   r   r   rK   rL   )r   rD   transformed_slicesrQ   s       r   test_transform_slicesz#CheckGrouping.test_transform_slicesn   sP   		%%!]];;,0II,<,<,E23 < 5 99((*22!Hii''))- 	


""#5x(-E 	# 	; u:>!%!?!?,0II,<,<,E23 "@ "5 yy,,.66a))++--1TV JJ&&'98??,1 ' ? r   c                     | j                   j                          t        | j                   j                        dkD  r| j                   j                  d       y y )Nr@   r   )r   dummies_groupsrL   group_namesr   s    r   test_dummies_groupsz!CheckGrouping.test_dummies_groups   sE     	$$&t}}(()A-MM((q(1 .r   c                    | j                   }| j                  j                          |j                  j	                  d      j
                  }t        j                  t        j                  |d      d      }t        j                  j                  | j                  j                  j                         |       t        | j                  j                        dkD  r| j                  j                  d       |j                  j	                  d      j
                  }t        j                  t        j                  |d      d      }t        j                  j                  | j                  j                  j                         |       y y )Nr   categorydtypeF)
drop_firstr@   r   )r&   r   r   r   get_level_valuesr-   r*   get_dummiesr1   r   r   r   _dummiestoarrayrL   ri   )r   r&   r-   rQ   s       r   test_dummy_sparsezCheckGrouping.test_dummy_sparse   s   yy""$,,Q/66>>"))F*"E-24


 6 6 > > @(Kt}}(()A-MM&&Q&/ZZ003::F~~biij&I168HJJ##DMM$:$:$B$B$D$,. .r   N)__name__
__module____qualname__pytestmarksmoker   r"   r6   rR   rZ   rf   rj   rt    r   r   r   r      s]    [[3 3L#@J8082?* [[2 2.r   r   c                       e Zd Zed        Zy)TestMultiIndexGroupingc                     t        j                         j                  }|j                  ddg      }|j                  }t        |      | _        || _        dgdz  | _        y )Nfirmyear      r   load_pandasr&   rH   r   r   r   r!   )cls	grun_datamulti_index_datamulti_index_panels       r   setup_classz"TestMultiIndexGrouping.setup_class   sZ    ((*//	$../?@,22 12#!dRir   Nru   rv   rw   classmethodr   r{   r   r   r}   r}          ( (r   r}   c                       e Zd Zed        Zy)TestIndexGroupingc                     t        j                         j                  }|j                  dg      }|j                  }t        |      | _        || _        dgdz  | _        y )Nr   r   r   r   )r   r   
index_dataindex_groups       r   r   zTestIndexGrouping.setup_class   sT    ((*//	((&2
 &&,!dRir   Nr   r{   r   r   r   r      r   r   r   c                  l   t        j                         j                  } | j                  ddg      j                  }t        |      }t        j                  j                  |j                  ddg       t        j                  j                  |j                  d       t        j                  j                  |j                  g dg dg       t        |ddg      }t        j                  j                  |j                  ddg       t        j                         j                  }|j                  g d      j                  }t        |      }t        j                  j                  |j                  g d       t        j                  j                  |j                  d	       |j                         }t        |ddg      }t        j                  j                  |j                  ddg       t        j                  j                  |j                  d       |j                         }t        |g d      }t        j                  j                  |j                  g d       t        j                  j                  |j                  d	       |j                  d
      }t        |      }t        j                  j                  |j                  dg       t        j                  j                  |j                  d       |j                  d
      j                         }t        |      }t        j                  j                  |j                  dg       t        j                  j                  |j                  d       t        |      }t        j                  j                  |j                  g d       y )Nr   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   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   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   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   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   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   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   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   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   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   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   r@   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   firms)rD   )educincomeTVnews)r      r   r   )   group0r   )r   group1group2)r   r   r&   rH   r   r   r   r   r.   ri   index_shapelabelsr   tolistrp   )	r   r   r   	anes_datamulti_index_groups
list_panellist_groupsr   
list_groups	            r   test_init_apir      s   $$&++I!++VV,<=CC)*HJJ!!("6"68HIJJ!!("6"6AJJ!!(//9CDE6 )'61BCHJJ!!("6"6&8IJ ""$))I",, .8 99> *+HJJ!!("6"6">@JJ!!("6"6
C #))+J
7F*;<HJJ!!("6"6&8IJJJ!!("6"6A %++-K+GHHJJ!!("6"6">@JJ!!("6"6
C $44Q7K$HJJ!!("6"6	BJJ!!("6"6? #33A6==?J
#HJJ!!("6"6
CJJ!!("6"6> $HJJ!!("6"6"@Br   c                  <   t         j                  j                  d       t         j                  j                  ddd      } t	        | d      \  }}}}t	        | dd	d
      \  }}}}t        j
                  ddg      | d d df      }t        j
                  ddg      | d d df      }t	        ||fdd	d
      \  }}}}t	        ||fddd
      \  }}}}t        j
                  |      |j                     }t        j
                  g dd      }t        ||       y )Ni	 r   r   )r   r   )sizeT)return_labelszg1,g2=,)prefixsepr   sector0sector1region0region1r@   zsector,region= .)
sector1.region0sector0.region1sector0.region0r   zsector1.region1r   r   r   r   r   z|U15rm   )r   randomseedrandintr
   r5   flatr   )	groupsuvuxulabelr   r   group_jointgroup_joint_expecteds	            r   test_combine_indicesr     s#   IINN6YYq!'2F&vTBBAu&vhC59;BAu XXy),-fQTl;FXXy),-fQTl;F&'7.>+.59;BAu ''759;BAu((5/"''*K88 %K
 +12 23r   c                  "   t        j                  g d      } t        t        j                  t	        |       dz  dz        j                  t	        |       dd      | d      j                   t        t        j                  t	        |       dz  dz        j                  t	        |       dd      d d d d df   |        t        t        j                  t	        |       dz  dz        j                  t	        |       dd      d d d d df   |        y )Nr   r   r@   r   r@   r@   r   r   r   r   F)use_bincountr   r@   )r   r5   r   arangerL   reshapeT)gs    r   test_group_sumsr      s     	)*AryyQ!$,,SVQ:A!##$1ryyQ!$,,SVQ:1a7CQGryyQ!$,,SVQ:1a7CQGr   c                     t        j                  g d      } t        j                  t        |       dz        j	                  t        |       dd      }t        |       }|j                   |j                  |       |j                          y )Nr   r   F)order)	r   r5   r   rL   r   r	   	group_intr   r   )r   r<   mygroups      r   test_group_classr   +  si     	)*A
		#a&(##CFAS#9AAhGqNNr   c            
         t        j                  g d      } t        |       }t        |t        j
                        sJ |j                         }t        j                  g dg dg dg dg dg dg dgt         j                        }t        ||       t        j                  g d      } t        |       }|j                         }t        j                  g dg dg dg dg dg dgt         j                        }t        ||       y )N)r   r   r   r@   r@   r   r   )r@   r   r   )r   r   r@   )r   r@   r   rm   )r   r   r   r   r   r   )
r   r5   r   r)   r   
csr_matrixtodensematrixint8r   )r   indiresultrQ   s       r   rt   rt   8  s     	&'A?DdF--...\\^Fyy)""""""$ ,.774H " 	#$A?D\\^Fyy)"""""$
 ,.774H "r   )statsmodels.compat.pandasr   r   numpyr   numpy.testingr   pandasr*   rx   scipyr   statsmodels.tools.grouputilsr   r   r	   r
   r   statsmodels.datasetsr   r   r   r}   r   r   r   ry   rz   r   r   rt   r{   r   r   <module>r      s    M  &   G G 1K. K.\	(] 	(	( 	(OBd44 H H 	 	#r   