U
    ÃmœdÆ8  ã                   @   sÖ   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„ dƒZG d	d
„ d
eƒZG dd„ deƒZdd„ Zdd„ Ze	jjdd„ ƒZe	jjdd„ ƒZdd„ ZdS )é    )Úassert_frame_equalÚassert_series_equalN)Úassert_equal)Úsparse)Údummy_sparseÚGroupingÚGroupÚcombine_indicesÚ
group_sums)ÚgrunfeldÚanes96c                   @   s\   e Zd Zejjdd„ ƒZdd„ Zdd„ Zdd„ Z	d	d
„ Z
dd„ Zejjdd„ ƒZdd„ ZdS )ÚCheckGroupingc                 C   s   | j  | j j¡ d S ©N)ÚgroupingZreindexÚindex©Úself© r   ú`/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/tools/tests/test_grouputils.pyÚtest_reindex   s    zCheckGrouping.test_reindexc                 C   s&   | j jdd� tj | j j| j¡ d S )Nr   ©Úlevel)r   Zcount_categoriesÚnpÚtestingr   ÚcountsÚexpected_countsr   r   r   r   Útest_count_categories   s    z#CheckGrouping.test_count_categoriesc                 C   sX  | j  | j¡\}}| j ¡ }t||ƒ tj t|t	j
ƒ¡ tj | | j j¡ ¡ t|dƒrrtj | | j¡ ¡ | j  | jj¡\}}tj ||j¡ tj t|tjƒ¡ | j| jjd  }| j  |¡\}}| ¡ }t||ƒ tj t|t	jƒ¡ t|dƒ�rtj | |¡ ¡ |j}| j  |¡\}}| ¡ j}tj ||¡ tj t|tjƒ¡ d S )NÚequalsr   )r   ÚsortÚdataZ
sort_indexr   r   r   Zassert_Ú
isinstanceÚpdZ	DataFramer   r   ÚhasattrÚvaluesÚassert_array_equalZndarrayÚcolumnsr   ÚSeries)r   Zsorted_datar   Zexpected_sorted_dataZseriesÚarrayr   r   r   Ú	test_sort   s0    


ÿ

zCheckGrouping.test_sortc                 C   s  | j jj}| jj| j dd„ dd�}|d gt| j jƒ }| j  ¡ |  |d ¡}|| j j j	dd�}| 
dd„ ¡}tj ||j¡ t|ƒdk�r| jj| j dd„ dd�}|d gt| j jƒ }| j  ¡ |  |d ¡}|j	dd�}| 
dd„ ¡| j j }tj ||j¡ d S )	Nc                 S   s   |   ¡ S r   ©Úmean©Úxr   r   r   Ú<lambda>A   ó    z8CheckGrouping.test_transform_dataframe.<locals>.<lambda>r   r   c                 S   s   |   ¡ S r   r)   r+   r   r   r   r-   F   r.   é   c                 S   s   |   ¡ S r   r)   r+   r   r   r   r-   L   r.   c                 S   s   |   ¡ S r   r)   r+   r   r   r   r-   Q   r.   )r   r   Únamesr   Ztransform_dataframeÚlistr%   Úreset_indexÚ	set_indexÚgroupbyÚapplyr   r   Úassert_allcloser#   Úlen)r   r0   Ztransformed_dataframeÚcolsÚdfÚgroupedÚexpectedr   r   r   Útest_transform_dataframe=   s4    
ýÿ þÿz&CheckGrouping.test_transform_dataframec                 C   s  | j jj}| jj| j jdd„ dd�}|d gt| j jƒ }| j  ¡ |  	|d ¡}|| j j j
dd�}| dd„ ¡}tj ||j¡ t|ƒdk�r| jj| j jdd„ dd�}|d gt| j jƒ }| j  ¡ |  	|d ¡}|| j j j
dd�}| dd„ ¡| j j }tj ||j¡ d S )	Nc                 S   s   |   ¡ S r   r)   r+   r   r   r   r-   Y   r.   z4CheckGrouping.test_transform_array.<locals>.<lambda>r   r   c                 S   s   |   ¡ S r   r)   r+   r   r   r   r-   ^   r.   r/   c                 S   s   |   ¡ S r   r)   r+   r   r   r   r-   e   r.   c                 S   s   |   ¡ S r   r)   r+   r   r   r   r-   i   r.   )r   r   r0   r   Ztransform_arrayr#   r1   r%   r2   r3   r4   r5   r   r   r6   r7   )r   r0   Ztransformed_arrayr8   r9   r:   r;   r   r   r   Útest_transform_arrayU   s4    
ýÿ þÿz"CheckGrouping.test_transform_arrayc                 C   sº   | j jj}| jj| j jdd„ dd�}| j  ¡  |d ¡| j j  	¡ }t
jj||jddd� t|ƒdkr¶| jj| j jd	d„ dd�}| j  ¡  |d ¡| j j  	¡ }t
jj||jddd� d S )
Nc                 S   s
   |   d¡S ©Nr   r)   ©r,   Úidxr   r   r   r-   r   r.   z5CheckGrouping.test_transform_slices.<locals>.<lambda>r   r   gê-�™—q=gÙ}ÚõÐò¾:)ZrtolZatolr/   c                 S   s
   |   d¡S r>   r)   r?   r   r   r   r-   |   r.   )r   r   r0   r   Ztransform_slicesr#   r2   r4   r%   r*   r   r   r6   r7   )r   r0   Ztransformed_slicesr;   r   r   r   Útest_transform_slicesn   s<    
ý
ÿÿ ÿý
ÿÿ ÿz#CheckGrouping.test_transform_slicesc                 C   s,   | j  ¡  t| j jƒdkr(| j jdd� d S )Nr/   r   )r   Zdummies_groupsr7   Úgroup_namesr   r   r   r   Útest_dummies_groupsƒ   s    
z!CheckGrouping.test_dummies_groupsc                 C   sª   | j }| j ¡  |j d¡j}tjtj|dd�dd�}t	j
 | jj ¡ |¡ t| jjƒdkr¦| jjdd� |j d¡j}tjtj|dd�dd�}t	j
 | jj ¡ |¡ d S )Nr   Úcategory©ZdtypeF)Z
drop_firstr/   r   )r   r   r   r   Úget_level_valuesr#   r!   Zget_dummiesr&   r   r   r   Z_dummiesZtoarrayr7   rB   )r   r   r#   r;   r   r   r   Útest_dummy_sparse‹   s     
ÿÿÿzCheckGrouping.test_dummy_sparseN)Ú__name__Ú
__module__Ú__qualname__ÚpytestÚmarkÚsmoker   r   r(   r<   r=   rA   rC   rG   r   r   r   r   r      s   
%
r   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestMultiIndexGroupingc                 C   s>   t  ¡ j}| ddg¡}|j}t|ƒ| _|| _dgd | _d S )NÚfirmÚyearé   é   ©r   Úload_pandasr   r3   r   r   r   r   )ÚclsÚ	grun_dataZmulti_index_dataÚmulti_index_panelr   r   r   Úsetup_class�   s    

z"TestMultiIndexGrouping.setup_classN©rH   rI   rJ   ÚclassmethodrX   r   r   r   r   rN   œ   s   rN   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestIndexGroupingc                 C   s<   t  ¡ j}| dg¡}|j}t|ƒ| _|| _dgd | _d S )NrO   rQ   rR   rS   )rU   rV   Z
index_dataÚindex_groupr   r   r   rX   ©   s    

zTestIndexGrouping.setup_classNrY   r   r   r   r   r[   ¨   s   r[   c            	   à   C   sB  t  ¡ j} |  ddg¡j}t|ƒ}tj |j	ddg¡ tj |j
d¡ tj |jddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd	d	d	d	d	d	d	d	d	d	d	d	d	d	d	d	d	d	d	d	d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
d
ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddgÜdddddddd	dd
dddddddddddddddddd	dd
dddddddddddddddddd	dd
dddddddddddddddddd	dd
dddddddddddddddddd	dd
dddddddddddddddddd	dd
dddddddddddddddddd	dd
dddddddddddddddddd	dd
dddddddddddddddddd	dd
dddddddddddddddddd	dd
dddddddddddddddddd	dd
ddddddddddgÜg¡ t|ddgd�}tj |j	ddg¡ t ¡ j}| dddg¡j}t|ƒ}tj |j	dddg¡ tj |j
d¡ | ¡ }t|ddgd�}tj |j	ddg¡ tj |j
d¡ | ¡ }t|dddgd�}tj |j	dddg¡ tj |j
d¡ | d¡}t|ƒ}tj |j	dg¡ tj |j
d¡ | d¡ ¡ }t|ƒ}tj |j	dg¡ tj |j
d ¡ t|ƒ}tj |j	dd!d"g¡ d S )#NrO   rP   )rR   rQ   é   é   é   é   r/   é   é	   é
   é   é   r   rR   é   é   é   é   é   é   é   é   Zfirms)r0   ZeducZincomeZTVnews)ra   é   r^   )éÜ   Úgroup0ro   Úgroup1Zgroup2)r   rT   r   r3   r   r   r   r   r$   rB   Zindex_shapeÚlabelsr   ÚtolistrF   )	rV   rW   r   Z	anes_dataZmulti_index_groupsZ
list_panelZlist_groupsr\   Z
list_groupr   r   r   Útest_init_api´   s†   

"                                                                                                                                                                                               ô"                                                                                                                                                                                               ôóÿ
ÿ
ÿ
ÿ

ÿrt   c            	      C   sü   t j d¡ t jjdddd�} t| dd�\}}}}t| dd	dd
�\}}}}t  ddg¡| d d …df  }t  ddg¡| d d …df  }t||fdd	dd
�\}}}}t||fdddd
�\}}}}t  |¡| }t jddddddddddg
dd�}t||ƒ d S )Ni	 r   r`   )rc   r`   )ÚsizeT)Úreturn_labelszg1,g2=ú,)ÚprefixÚseprv   Zsector0Zsector1Zregion0Zregion1r/   zsector,region=Ú Ú.zsector1.region0zsector0.region1zsector0.region0zsector1.region1z|U15rE   )r   ÚrandomÚseedÚrandintr	   r'   r   )	ÚgroupsZuvZuxÚuÚlabelrp   rq   Zgroup_jointZgroup_joint_expectedr   r   r   Útest_combine_indices  s<    ÿýÿ    üûr‚   c               
   C   sÆ   t  ddddddddg¡} tt  t| ƒd d ¡ t| ƒdd¡| dd�j tt  t| ƒd d ¡ t| ƒdd¡d d …d d …df | ƒ tt  t| ƒd d ¡ t| ƒdd¡d d …d d …df | ƒ d S )Nr   r/   r`   re   F)Zuse_bincount)r   r'   r
   Úaranger7   ÚreshapeÚT)Úgr   r   r   Útest_group_sums   s    &ÿ<r‡   c               
   C   s`   t  ddddddddg¡} t  t| ƒd ¡jt| ƒddd�}t| ƒ}|j | |¡ | ¡  d S )Nr   r/   r`   re   ÚF)Úorder)	r   r'   rƒ   r7   r„   r   Z	group_intr
   rr   )r†   r,   Zmygroupr   r   r   Útest_group_class+  s    "
rŠ   c               
   C   sþ   t  dddddddg¡} t| ƒ}t|tjƒs0t‚| ¡ }t jdddgdddgdddgdddgdddgdddgdddggt j	d�}t
||ƒ t  ddddddg¡} t| ƒ}| ¡ }t jdddgdddgdddgdddgdddgdddggt j	d�}t
||ƒ d S )Nr   r`   r/   rE   )r   r'   r   r    r   Z
csr_matrixÚAssertionErrorZtodenseÚmatrixZint8r   )r†   ZindiÚresultr;   r   r   r   rG   8  s8    úú
ûûrG   )Zstatsmodels.compat.pandasr   r   Únumpyr   Znumpy.testingr   Zpandasr!   rK   Zscipyr   Zstatsmodels.tools.grouputilsr   r   r   r	   r
   Zstatsmodels.datasetsr   r   r   rN   r[   rt   r‚   rL   rM   r‡   rŠ   rG   r   r   r   r   Ú<module>   s$    R


