a
    oÝEbª\  ã                   @   sv   d dl Z d dlZd dlZd dlmZ d dlZd dlmZm	Z	m
Z
mZmZ d dlmZ d dlmZmZ G dd„ dƒZdS )é    N)Úis_integer_dtype)ÚCategoricalÚCategoricalIndexÚ	DataFrameÚSeriesÚget_dummies)ÚSparseArrayÚSparseDtypec                   @   s(  e Zd Zejdd„ ƒZejddejedgd�dd„ ƒZ	ejd	d
gd�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/d0„ Zej d1d2ed3d4giƒied5d6giej d7�fd2ed8d3giƒied9d6giej d7�fed8d4giƒd3d:œed5d6giej d7�fed8d4giƒd3d;œed<d6giej d7�fg¡d=d>„ ƒZ!d?d@„ Z"dAdB„ Z#dCdD„ Z$dEdF„ Z%dGdH„ Z&dIdJ„ Z'dKdL„ Z(dMdN„ Z)ej dOdPdQg¡dRdS„ ƒZ*ej d
dPdQg¡dTdU„ ƒZ+dVdW„ Z,dXdY„ Z-ej dZd[g¡d\d]„ ƒZ.dS )^ÚTestGetDummiesc                 C   s   t g d¢g d¢g d¢dœƒS )N©ÚaÚbr   ©r   r   Úc©é   é   é   )ÚAÚBÚC)r   )Úself© r   úe/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/pandas/tests/reshape/test_get_dummies.pyÚdf   s    zTestGetDummies.dfÚuint8Úi8N)Úparamsc                 C   s   t  |j¡S ©N)ÚnpÚdtypeÚparam©r   Úrequestr   r   r   r       s    zTestGetDummies.dtypeZdenseÚsparsec                 C   s
   |j dkS )Nr$   )r!   r"   r   r   r   r$       s    zTestGetDummies.sparsec                 C   s   |d u rt jS |S r   )r   r   )r   r    r   r   r   Úeffective_dtype&   s    zTestGetDummies.effective_dtypec                 C   sB   d}t jt|d�� t|dd� W d   ƒ n1 s40    Y  d S )Nz1dtype=object is not a valid dtype for get_dummies©ÚmatchÚobject©r    )ÚpytestÚraisesÚ
ValueErrorr   )r   r   Úmsgr   r   r   Ú'test_get_dummies_raises_on_dtype_object+   s    z6TestGetDummies.test_get_dummies_raises_on_dtype_objectc                 C   s²   t dƒ}t|ƒ}t|t dƒƒ}tg d¢g d¢g d¢dœ|  |¡d�}|rV|jtdd	�}t|||d
�}t ||¡ t|||d
�}t ||¡ t dƒ|_	t|||d
�}t ||¡ d S )NÚabcÚABC©r   r   r   ©r   r   r   ©r   r   r   ©r   r   r   r)   ç        ©Ú
fill_value©r$   r    )
Úlistr   r   r%   Úapplyr   r   ÚtmÚassert_frame_equalÚindex)r   r$   r    Ús_listÚs_seriesÚs_series_indexÚexpectedÚresultr   r   r   Útest_get_dummies_basic0   s     þ
z%TestGetDummies.test_get_dummies_basicc                 C   s   t dƒ}t|ƒ}tg d¢g d¢g d¢dœƒ}tg d¢g d¢g d¢dœ|  |¡t dƒd	�}|rŠt|ƒrjd
}n|tkrxd}nd}|jt|d�}t|||d�}t	 
||¡ t|||d�}t	 
||¡ t||j||d�}|rðd|  |¡j› d|› d�}	n|  |¡j}	t|	diƒ}|j ¡ }dd„ |jD ƒ|_t	 ||¡ t|dg||d�}dddœ}
d|
 |	d
¡ |
|	< t|
ƒ ¡ }|j ¡ }dd„ |jD ƒ|_| ¡ }t	 ||¡ d S )Nr/   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   r4   r1   r2   r3   )r    Úcolumnsr   Fr5   r6   r8   )rD   r$   r    zSparse[z, ú]é   c                 S   s   g | ]}t |ƒ‘qS r   ©Ústr©Ú.0Úir   r   r   Ú
<listcomp>i   ó    z?TestGetDummies.test_get_dummies_basic_types.<locals>.<listcomp>r   r   )Úint64r(   r   c                 S   s   g | ]}t |ƒ‘qS r   rG   rI   r   r   r   rL   s   rM   )r9   r   r   r%   r   Úboolr:   r   r   r;   r<   rD   ÚnameZdtypesZvalue_countsr=   Zassert_series_equalÚgetÚ
sort_index)r   r$   r    r>   r?   Zs_dfrA   r7   rB   Z
dtype_nameZexpected_countsr   r   r   Útest_get_dummies_basic_typesE   sJ    ÿý


z+TestGetDummies.test_get_dummies_basic_typesc                 C   s    t jg}t|ƒ}t|dgd�}t||d�}t||d�}t||d�}|jsLJ ‚|jsVJ ‚|js`J ‚|j ¡ dgkstJ ‚|j ¡ dgksˆJ ‚|j ¡ dgksœJ ‚d S )Nr   ©r=   ©r$   r   )r   Únanr   r   Úemptyr=   Útolist)r   r$   Zjust_na_listZjust_na_seriesZjust_na_series_indexZres_listZ
res_seriesZres_series_indexr   r   r   Útest_get_dummies_just_naw   s    


z'TestGetDummies.test_get_dummies_just_nac           
      C   s  ddt jg}t|||d�}tg d¢g d¢dœ|  |¡d�}|rL|jtdd	�}t ||¡ t|d
||d�}tt jg d¢dg d¢dg d¢i|  |¡d�}|j	ddt jgdd�}|j
|_
|rÄ|jtdd	�}t ||¡ tt jgd
||d�}ttddgd�t jg|  |¡d�}	t |j|	j¡ d S )Nr   r   r8   r1   r2   )r   r   r)   r5   r6   T©Údummy_nar$   r    r3   r   ©Zaxisr   rT   ©rD   r    )r   rV   r   r   r%   r:   r   r;   r<   ÚreindexrD   r   Zassert_numpy_array_equalÚvalues)
r   r$   r    ÚsÚresÚexpÚres_naÚexp_naÚres_just_naÚexp_just_nar   r   r   Útest_get_dummies_include_naˆ   s.    ÿþÿz*TestGetDummies.test_get_dummies_include_nac                 C   st   dd l }d}| d¡}|||g}t|d|d�}tdg d¢d|› �g d	¢itjd
�}|rd|jtdd�}t 	||¡ d S )Nr   ÚezLATIN SMALL LETTER E WITH ACUTEÚletter©Úprefixr$   Zletter_er1   Zletter_©r   r   r   r)   r6   )
ÚunicodedataÚlookupr   r   r   r   r:   r   r;   r<   )r   r$   rm   rh   Úeacuter`   ra   rb   r   r   r   Útest_get_dummies_unicode¥   s    

ÿz'TestGetDummies.test_get_dummies_unicodec                 C   s–   |ddg }t ||d�}tg d¢g d¢g d¢g d¢dœtjd	�}|r†ttg d¢d
d	�tg d¢d
d	�tg d¢d
d	�tg d¢d
d	�dœƒ}t ||¡ d S )Nr   r   rU   ©r   r   r   r2   ©r   r   r   r3   )ÚA_aÚA_bÚB_bÚB_cr)   r   )r   r   r   r   r   r;   r<   ©r   r   r$   rB   rA   r   r   r   Útest_dataframe_dummies_all_obj´   s    þüÿ	z-TestGetDummies.test_dataframe_dummies_all_objc              	   C   s�   t |||d�}|r"t}t|dƒ}n
tj}|}tg d¢|g d¢|d�|g d¢|d�|g d¢|d�|g d¢|d�d	œƒ}|g d	¢ }t ||¡ d S )
Nr8   r   r   rq   r)   r2   rr   r3   ©r   rs   rt   ru   rv   )r   r   r	   r   Úarrayr   r;   r<   ©r   r   r$   r    rB   ZarrÚtyprA   r   r   r   Ú"test_dataframe_dummies_mix_defaultÇ   s     ûÿ	z1TestGetDummies.test_dataframe_dummies_mix_defaultc                    s    ddg}t |||d�}tg d¢g d¢g d¢g d¢g d¢d	œtjd
�}|dg |dg< g d¢}|dg|  }|rrtnt‰ ||  ‡ fdd„¡||< t ||¡ d S )NÚfrom_AÚfrom_Brj   r   rq   r2   rr   r3   ©r   Úfrom_A_aÚfrom_A_bÚfrom_B_bÚfrom_B_cr)   r   ©r�   r‚   rƒ   r„   c                    s   ˆ | ƒS r   r   )Úx©r|   r   r   Ú<lambda>í   rM   zCTestGetDummies.test_dataframe_dummies_prefix_list.<locals>.<lambda>)	r   r   r   r   r   r   r:   r;   r<   )r   r   r$   ÚprefixesrB   rA   Úcolsr   r‡   r   Ú"test_dataframe_dummies_prefix_listÛ   s"    ûø
z1TestGetDummies.test_dataframe_dummies_prefix_listc              
   C   s¾   t |d|d�}g d¢}tg d¢g d¢g d¢gdg| tjd�}| dtji¡}|r®tjtg d	¢dd
�tg d¢ddd�tg d¢ddd�tg d¢ddd�tg d¢ddd�gdd�}t	 
||¡ d S )NÚbadrj   )Úbad_aÚbad_brŽ   Úbad_c©r   r   r   r   r   ©r   r   r   r   r   ©r   r   r   r   r   r   r]   r   )rP   rq   r�   zSparse[uint8])rP   r    r2   rŽ   rr   r3   r�   r   r\   )r   r   r   r   ÚastyperN   ÚpdÚconcatr   r;   r<   )r   r   r$   rB   Zbad_columnsrA   r   r   r   Ú!test_dataframe_dummies_prefix_strð   s&    ýûøz0TestGetDummies.test_dataframe_dummies_prefix_strc                 C   s¤   t |dgdg|d�}tg d¢g d¢g d¢g d¢dœƒ}|j}||d	d …   tj¡||d	d … < |d
g |d
g< |r”ddg}||  tddƒ¡||< t ||¡ d S )Nr~   r   )rk   rD   r$   r   r   rq   r2   )r   r   r�   r‚   r   r   r�   r‚   r   r   )	r   r   rD   r“   r   r   r	   r;   r<   ©r   r   r$   rB   rA   rŠ   r   r   r   Útest_dataframe_dummies_subset
  s    üÿ$z,TestGetDummies.test_dataframe_dummies_subsetc                 C   sÜ   t |d|d�}tg d¢g d¢g d¢g d¢g d¢dœtjd	�}|d
g |d
g< |g d¢ }|r|g d¢}||  tddƒ¡||< t ||¡ t |ddg|d�}|jdddœd�}t ||¡ t |dddœ|d�}t ||¡ d S )Nz..©Ú
prefix_sepr$   r   rq   r2   rr   r3   )r   úA..aúA..búB..búB..cr)   r   )r›   rœ   r�   rž   r   r   Ú__ZB__bZB__c)r�   rž   ©rD   ©r   r   )	r   r   r   r   r“   r	   r;   r<   Úrenamer—   r   r   r   Ú!test_dataframe_dummies_prefix_sep  s*    ûø
z0TestGetDummies.test_dataframe_dummies_prefix_sepc                 C   sL   t  d¡}tjt|d��  t|dg|d� W d   ƒ n1 s>0    Y  d S )NzPLength of 'prefix' (1) did not match the length of the columns being encoded (2)r&   ztoo fewrj   ©ÚreÚescaper*   r+   r,   r   ©r   r   r$   r-   r   r   r   Ú(test_dataframe_dummies_prefix_bad_length7  s
    ÿz7TestGetDummies.test_dataframe_dummies_prefix_bad_lengthc                 C   sL   t  d¡}tjt|d��  t|dg|d� W d   ƒ n1 s>0    Y  d S )NzTLength of 'prefix_sep' (1) did not match the length of the columns being encoded (2)r&   rŒ   r™   r¤   r§   r   r   r   Ú,test_dataframe_dummies_prefix_sep_bad_length?  s
    ÿz;TestGetDummies.test_dataframe_dummies_prefix_sep_bad_lengthc                 C   s¤   dddœ}t g d¢g d¢g d¢dœƒ}t|||d�}t g d¢g d	¢g d
¢g d¢g d¢dœƒ}g d¢}||  tj¡||< |r”||  tddƒ¡||< t ||¡ d S )Nr~   r   r¡   r   r   r   )r   r   r   rj   rq   r2   rr   r3   r€   r…   r   r   )r   r   r“   r   r   r	   r;   r<   )r   r$   r‰   r   rB   rA   rD   r   r   r   Ú"test_dataframe_dummies_prefix_dictG  s     
ûÿ
z1TestGetDummies.test_dataframe_dummies_prefix_dictc                 C   sþ   t jt jt jg|jdd d …f< t|d||d�jdd�}|rJt}t|dƒ}n
t j}|}tdddt jg|g d¢|d	�|g d
¢|d	�|g d¢|d	�|g d¢|d	�|g d¢|d	�|g d¢|d	�dœƒjdd�}t	 
||¡ t|d||d�}|g d¢ }t	 
||¡ d S )Nr   TrZ   r   r\   r   r   )r   r   r   r   r)   ©r   r   r   r   ©r   r   r   r   )r   r   r   r   ©r   r   r   r   )r   rs   rt   ÚA_nanru   rv   ÚB_nanFry   )r   rV   Úlocr   rR   r   r	   rz   r   r;   r<   r{   r   r   r   Útest_dataframe_dummies_with_na]  s2    ÿùÿ
öz-TestGetDummies.test_dataframe_dummies_with_nac                 C   sÀ   t g d¢ƒ|d< t|||d�jdd�}|r:t}t|dƒ}n
tj}|}tg d¢|g d¢|d	�|g d
¢|d	�|g d¢|d	�|g d¢|d	�|g d¢|d	�|g d¢|d	�dœƒjdd�}t 	||¡ d S )N©r†   Úyr³   Úcatr8   r   r\   r   r   rq   r)   r2   rr   r3   r1   rl   )r   rs   rt   ru   rv   Zcat_xÚcat_y)
r   r   rR   r   r	   r   rz   r   r;   r<   r{   r   r   r   Ú'test_dataframe_dummies_with_categorical|  s(    ùÿ
öz6TestGetDummies.test_dataframe_dummies_with_categoricalzget_dummies_kwargs,expectedÚdataõ   Ã¤r   u   Ã¤_ar   r)   r†   u   x_Ã¤)r·   rk   )r·   rš   u   xÃ¤ac                 C   s   t f i |¤Ž}t ||¡ d S r   )r   r;   r<   )r   Zget_dummies_kwargsrA   rB   r   r   r   Útest_dataframe_dummies_unicode”  s    z-TestGetDummies.test_dataframe_dummies_unicodec                 C   s¨   t dƒ}t|ƒ}t|t dƒƒ}tg d¢g d¢dœtjd�}t|d|d�}|rZ|jtd	d
�}t 	||¡ t|d|d�}t 	||¡ t dƒ|_
t|d|d�}t 	||¡ d S )Nr/   r0   r2   r3   )r   r   r)   T©Ú
drop_firstr$   r   r6   )r9   r   r   r   r   r   r:   r   r;   r<   r=   ©r   r$   r>   r?   r@   rA   rB   r   r   r   Ú!test_get_dummies_basic_drop_first¯  s    
z0TestGetDummies.test_get_dummies_basic_drop_firstc                 C   sŽ   t dƒ}t|ƒ}t|t dƒƒ}tt d¡d�}t|d|d�}t ||¡ t|d|d�}t ||¡ tt dƒd�}t|d|d�}t ||¡ d S )NZaaar0   r   rT   Trº   )r9   r   r   r   Úaranger   r;   r<   r¼   r   r   r   Ú+test_get_dummies_basic_drop_first_one_levelÄ  s    z:TestGetDummies.test_get_dummies_basic_drop_first_one_levelc           	      C   sà   ddt jg}t|d|d�}tdg d¢it jd�}|rB|jtdd�}t ||¡ t|dd|d	�}tdg d¢t jg d
¢it jd�j	dt jgdd�}|r |jtdd�}t ||¡ tt jgdd|d	�}tt  
d¡d�}t ||¡ d S )Nr   r   Trº   r2   r)   r   r6   ©r[   r»   r$   r3   r   r\   rT   )r   rV   r   r   r   r:   r   r;   r<   r^   r¾   )	r   r$   Zs_NAra   rb   rc   rd   re   rf   r   r   r   Ú$test_get_dummies_basic_drop_first_NAÖ  s$     
ÿÿz3TestGetDummies.test_get_dummies_basic_drop_first_NAc                 C   sX   |ddg }t |d|d�}tg d¢g d¢dœtjd�}|rH|jtd	d
�}t ||¡ d S )Nr   r   Trº   r2   r3   )rt   rv   r)   r   r6   )r   r   r   r   r:   r   r;   r<   rw   r   r   r   Ú!test_dataframe_dummies_drop_firstî  s    z0TestGetDummies.test_dataframe_dummies_drop_firstc                 C   s–   t g d¢ƒ|d< t|d|d�}tg d¢g d¢g d¢g d¢d	œƒ}g d
¢}||  tj¡||< |g d	¢ }|r†|D ]}t|| ƒ||< qpt ||¡ d S )Nr²   r´   Trº   r   r2   r3   rl   )r   rt   rv   rµ   )rt   rv   rµ   )	r   r   r   r“   r   r   r   r;   r<   )r   r   r$   r    rB   rA   rŠ   Úcolr   r   r   Ú2test_dataframe_dummies_drop_first_with_categoricalö  s    ÿzATestGetDummies.test_dataframe_dummies_drop_first_with_categoricalc                 C   sâ   t jt jt jg|jdd d …f< t|dd|d�jdd�}tdddt jgg d¢g d¢g d	¢g d¢d
œƒ}g d¢}||  t j¡||< |jdd�}|rª|D ]}t|| ƒ||< q”t	 
||¡ t|dd|d�}|g d¢ }t	 
||¡ d S )Nr   TrÀ   r   r\   r   r«   r¬   r­   )r   rt   r®   rv   r¯   )rt   r®   rv   r¯   F)r   rt   rv   )r   rV   r°   r   rR   r   r“   r   r   r;   r<   )r   r   r$   rB   rA   rŠ   rÃ   r   r   r   Ú)test_dataframe_dummies_drop_first_with_na  s0    ÿþûÿ	z8TestGetDummies.test_dataframe_dummies_drop_first_with_nac                 C   s˜   t g d¢ƒ}t|ƒ}tddgddgddggddgtjd�}t ||¡ t tg d¢ƒƒ}t|ƒ}tddgddgddggtddgƒtjd�}t ||¡ d S )	N©r   r   r   r   r   r   r]   r   r   r   )r   r   r   r   r   r;   r<   r   )r   r·   rB   rA   r   r   r   Útest_get_dummies_int_int  s    &"ÿz'TestGetDummies.test_get_dummies_int_intc                 C   s�   t g d¢tg d¢ƒg d¢g d¢dœƒ}g d¢}t g d¢g d¢g d¢g|d�}||d	d …   |¡||d	d … < t|d
dg|d�}t ||¡ d S )NrÆ   r   )ç      ð?ç       @rÈ   )r   r   r   ÚD)r   rÊ   ÚA_1ÚA_2ZB_aru   )r   rÈ   r   r   r   r   )r   rÉ   r   r   r   r   r    r   r   r   r]   )r   r   r“   r   r;   r<   )r   r    r·   rD   rA   rB   r   r   r   Útest_get_dummies_int_df,  s    
üÿþ"z&TestGetDummies.test_get_dummies_int_dfÚorderedTFc                 C   sx   t tdƒtdƒ|d�}t||d�}tjg d¢g d¢g|  |¡d�}t|j|j|d�}t|||  |¡d�}t	 
||¡ d S )NZxyZxyz)Ú
categoriesrÎ   r)   r1   r2   r]   )r   r9   r   r   rz   r%   r   rÏ   r   r;   r<   )r   r    rÎ   r´   rB   r·   rŠ   rA   r   r   r   Ú1test_dataframe_dummies_preserve_categorical_dtype>  s     
ÿz@TestGetDummies.test_dataframe_dummies_preserve_categorical_dtypec                 C   sL   t  ddgddgdœ¡}t|dg|d�}|jdgd	�}t |dg |¡ d S )
Nr   r   ZABZCD)ÚGDPÚNationrÒ   ©rD   r$   rÑ   r    )r   Ú	from_dictr   r^   r;   r<   )r   r$   r   Zdf2r   r   r   Ú*test_get_dummies_dont_sparsify_all_columnsL  s    z9TestGetDummies.test_get_dummies_dont_sparsify_all_columnsc                 C   sh   g d¢|_ t|ƒjdd�}tg d¢g d¢g d¢gg d¢tjd�jdd�}| d	tji¡}t 	||¡ d S )
N)r   r   r   r   r\   r�   r‘   r’   )r   rs   rt   rt   ZA_cr]   r   )
rD   r   rR   r   r   r   r“   rN   r;   r<   )r   r   rB   rA   r   r   r   Ú"test_get_dummies_duplicate_columnsU  s    
ýüz1TestGetDummies.test_get_dummies_duplicate_columnsc                 C   s`   t dddgiƒ}t|dgdd�}tddƒ}t tddg|d�tddg|d�d	œƒ}t ||¡ d S )
Nr   r   r   TrÓ   r   r   r)   )rË   rÌ   )r   r   r	   r   r;   r<   )r   r   rB   r    rA   r   r   r   Útest_get_dummies_all_sparsed  s    
þÿz*TestGetDummies.test_get_dummies_all_sparser_   Úbazc                 C   sd   t g d¢g d¢g d¢g d¢dœƒ}d}tjt|d�� t||d� W d   ƒ n1 sV0    Y  d S )	N)r   r   r   é   é   é   )ÚonerÜ   rÜ   ÚtworÝ   rÝ   )r   r   r   r   r   r   )r†   r³   ÚzÚqÚwÚt)ÚbarZfoorØ   Zzooz1Input must be a list-like for parameter `columns`r&   r    )r   r*   r+   Ú	TypeErrorr   )r   r_   r   r-   r   r   r   Ú#test_get_dummies_with_string_valuesp  s    üÿ	z2TestGetDummies.test_get_dummies_with_string_values)/Ú__name__Ú
__module__Ú__qualname__r*   Zfixturer   r   Zfloat64rO   r    r$   r%   r.   rC   rS   rY   rg   rp   rx   r}   r‹   r–   r˜   r£   r¨   r©   rª   r±   r¶   ÚmarkZparametrizer   r   r¹   r½   r¿   rÁ   rÂ   rÄ   rÅ   rÇ   rÍ   rÐ   rÕ   rÖ   r×   rä   r   r   r   r   r
      sr   


2þþþþóþ


r
   )r¥   Únumpyr   r*   Zpandas.core.dtypes.commonr   Zpandasr”   r   r   r   r   r   Zpandas._testingZ_testingr;   Zpandas.core.arrays.sparser   r	   r
   r   r   r   r   Ú<module>   s   