U
    `»{j�^  ã                   @   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                   @   s0  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d1d2„ Zej d3d4e d5d6giƒie d7d8giej!d9�fd4e d:d5giƒie d;d8giej!d9�fe d:d6giƒd5d<œe d7d8giej!d9�fe d:d6giƒd5d=œe d>d8giej!d9�fg¡d?d@„ ƒZ"dAdB„ Z#dCdD„ Z$dEdF„ Z%dGdH„ Z&dIdJ„ Z'dKdL„ Z(dMdN„ Z)dOdP„ Z*ej dQdRdSg¡dTdU„ ƒZ+ej d
dRdSg¡dVdW„ ƒZ,dXdY„ Z-dZd[„ Z.ej d\d]g¡d^d_„ ƒZ/dS )`ÚTestGetDummiesc                 C   s"   t dddgdddgdddgdœƒS )NÚaÚbÚcé   é   é   )ÚAÚBÚC)r   )Úself© r   úd/var/www/html/bwave/python/venv/lib/python3.8/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 krt jS |S r   )r   r   )r   r   r   r   r   Úeffective_dtype&   s    zTestGetDummies.effective_dtypec              	   C   s.   d}t jt|d�� t|dd� W 5 Q R X 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dddgdddgdddgdœ|  |¡d�}|r\|jtdd�}t|||d	�}t ||¡ t|||d	�}t ||¡ t dƒ|_	t|||d	�}t ||¡ d S )
NÚabcÚABCr   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dddddgdddddgdddddgd	œƒ}tdddgdddgdddgd	œ|  |¡t dƒd
�}|r¢t|ƒr‚d}n|tkr�d}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   ÚcolumnsFr/   r0   r2   )r>   r!   r   zSparse[z, ú]é   c                 S   s   g | ]}t |ƒ‘qS r   ©Ústr©Ú.0Úir   r   r   Ú
<listcomp>i   s     z?TestGetDummies.test_get_dummies_basic_types.<locals>.<listcomp>r   )Úint64r%   c                 S   s   g | ]}t |ƒ‘qS r   rA   rC   r   r   r   rF   s   s     )r3   r   r   r"   r   Úboolr4   r   r   r5   r6   r>   ÚnameZdtypesZvalue_countsr7   Zassert_series_equalÚgetÚ
sort_index)r   r!   r   r8   r9   Zs_dfr;   r1   r<   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sLt‚|jsVt‚|js`t‚|j ¡ dgkstt‚|j ¡ dgksˆt‚|j ¡ dgksœt‚d S )Nr   ©r7   ©r!   r   )r   Únanr   r   ÚemptyÚAssertionErrorr7   Ú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dddgdddgdœ|  |¡d�}|rP|jtdd	�}t ||¡ t|d
||d�}tt jdddgddddgddddg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   r2   r   r   )r   r   r&   r/   r0   T©Údummy_nar!   r   ©ZaxisrM   ©r>   r   )r   rO   r   r   r"   r4   r   r5   r6   Úreindexr>   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ˆ   s4     ÿ"þ  ÿz*TestGetDummies.test_get_dummies_include_nac                 C   sx   dd l }d}| d¡}|||g}t|d|d�}tddddgd|› �dddgitjd	�}|rh|jtdd
�}t 	||¡ d S )Nr   ÚezLATIN SMALL LETTER E WITH ACUTEÚletter©Úprefixr!   Zletter_er   Zletter_r&   r0   )
ÚunicodedataÚlookupr   r   r   r   r4   r   r5   r6   )r   r!   rf   rb   ÚeacuterZ   r[   r\   r   r   r   Útest_get_dummies_unicode¥   s    

 ÿz'TestGetDummies.test_get_dummies_unicodec                 C   s¦   |ddg }t ||d�}tdddgdddgdddgdddgdœtjd�}|r–ttdddgdd�tdddgdd�tdddgdd�tdddgdd�dœƒ}t ||¡ d S )	Nr   r   rN   r   r   ©ÚA_aÚA_bÚB_bÚB_cr&   r   )r   r   r   r   r   r5   r6   ©r   r   r!   r<   r;   r   r   r   Útest_dataframe_dummies_all_obj´   s    $þüÿ	z-TestGetDummies.test_dataframe_dummies_all_objc                 C   sd   |ddg }|  dddœ¡}t|ƒ}tdddgdddgdddgdddgdœtjd	�}t ||¡ d S )
Nr   r   r%   Ústring©r   r   r   r   rj   r&   )Úastyper   r   r   r   r5   r6   ©r   r   r<   r;   r   r   r   Ú#test_dataframe_dummies_string_dtypeÇ   s    üù	z2TestGetDummies.test_dataframe_dummies_string_dtypec              	   C   s    t |||d�}|r"t}t|dƒ}n
tj}|}tdddg|dddg|d�|dddg|d�|dddg|d�|dddg|d�dœƒ}|dd	d
ddg }t ||¡ d S )Nr2   r   r   r   r   r&   )r   rk   rl   rm   rn   r   rk   rl   rm   rn   )r   r   r	   r   Úarrayr   r5   r6   ©r   r   r!   r   r<   ZarrÚtypr;   r   r   r   Ú"test_dataframe_dummies_mix_default×   s     ûÿ	z1TestGetDummies.test_dataframe_dummies_mix_defaultc                    s®   ddg}t |||d�}tdddgdddgdddgdddgdddgdœtjd	�}|d
g |d
g< ddddg}|d
g|  }|r€tnt‰ ||  ‡ fdd„¡||< t ||¡ d S )NÚfrom_AÚfrom_Brd   r   r   r   r   ©r   Úfrom_A_aÚfrom_A_bÚfrom_B_bÚfrom_B_cr&   r   r}   r~   r   r€   c                    s   ˆ | ƒS r   r   )Úx©rx   r   r   Ú<lambda>ý   ó    zCTestGetDummies.test_dataframe_dummies_prefix_list.<locals>.<lambda>)	r   r   r   r   r   r   r4   r5   r6   )r   r   r!   Úprefixesr<   r;   Úcolsr   r‚   r   Ú"test_dataframe_dummies_prefix_listë   s"    ûø
z1TestGetDummies.test_dataframe_dummies_prefix_listc              
   C   sÞ   t |d|d�}ddddg}tdddddgdddddgd	ddddggd
g| tjd�}| d
tji¡}|rÎtjtddd	gd
d�tdddgddd�tdddgddd�tdddgddd�tdddgddd�gdd�}t	 
||¡ d S )NÚbadrd   Zbad_aZbad_bZbad_cr   r   r   r   r   rW   )rI   zSparse[uint8])rI   r   rV   )r   r   r   r   rs   rG   ÚpdÚconcatr   r5   r6   )r   r   r!   r<   Zbad_columnsr;   r   r   r   Ú!test_dataframe_dummies_prefix_str   s&    &ýûøz0TestGetDummies.test_dataframe_dummies_prefix_strc                 C   s¬   t |dgdg|d�}tdddgdddgdd	dgd	dd	gd
œƒ}|j}||dd …   tj¡||dd … < |dg |dg< |rœddg}||  tdd	ƒ¡||< t ||¡ d S )Nrz   r   )re   r>   r!   r   r   r   r   r   r   )r   r   r}   r~   r   r}   r~   r   )	r   r   r>   rs   r   r   r	   r5   r6   ©r   r   r!   r<   r;   r†   r   r   r   Útest_dataframe_dummies_subset  s    üÿ$z,TestGetDummies.test_dataframe_dummies_subsetc                 C   sð   t |d|d�}tdddgdddgdddgdddgdddgdœtjd�}|d	g |d	g< |d	d
dddg }|r�d
dddg}||  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   r   r   r   )r   úA..aúA..búB..búB..cr&   r   r�   r‘   r’   r“   r   Ú__ZB__bZB__c)r’   r“   ©r>   rr   )	r   r   r   r   rs   r	   r5   r6   ÚrenamerŒ   r   r   r   Ú!test_dataframe_dummies_prefix_sep,  s*    ûø
z0TestGetDummies.test_dataframe_dummies_prefix_sepc              	   C   s8   t  d¡}tjt|d�� t|dg|d� W 5 Q R X d S )NzPLength of 'prefix' (1) did not match the length of the columns being encoded (2)r#   ztoo fewrd   ©ÚreÚescaper'   r(   r)   r   ©r   r   r!   r*   r   r   r   Ú(test_dataframe_dummies_prefix_bad_lengthG  s
    ÿz7TestGetDummies.test_dataframe_dummies_prefix_bad_lengthc              	   C   s8   t  d¡}tjt|d�� t|dg|d� W 5 Q R X 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_lengthO  s
    ÿz;TestGetDummies.test_dataframe_dummies_prefix_sep_bad_lengthc                 C   s¸   dddœ}t dddgdddgddd	gd
œƒ}t|||d�}t dddgdddgdddgdddgdddgdœƒ}ddddg}||  tj¡||< |r¨||  tddƒ¡||< t ||¡ d S )Nrz   r{   rr   r   r   r   r   r   r   )r   r   r   rd   r   r|   r}   r~   r   r€   r   )r   r   rs   r   r   r	   r5   r6   )r   r!   r…   r   r<   r;   r>   r   r   r   Ú"test_dataframe_dummies_prefix_dictW  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|ddddg|d�|ddddg|d�|ddddg|d�|ddddg|d�|ddddg|d�|ddddg|d�d	œƒjdd�}t	 
||¡ t|d
||d�}|dddddg }t	 
||¡ d S )Nr   TrT   r   rV   r   r   r&   )r   rk   rl   ÚA_nanrm   rn   ÚB_nanFr   rk   rl   rm   rn   )r   rO   Úlocr   rK   r   r	   rv   r   r5   r6   rw   r   r   r   Útest_dataframe_dummies_with_nam  s2    ÿùÿ
öz-TestGetDummies.test_dataframe_dummies_with_nac                 C   sÐ   t dddgƒ|d< t|||d�jdd�}|r<t}t|dƒ}n
tj}|}tddd	g|dddg|d
�|dddg|d
�|dddg|d
�|dddg|d
�|dddg|d
�|dddg|d
�dœƒjdd�}t 	||¡ d S )Nr�   ÚyÚcatr2   r   rV   r   r   r   r&   )r   rk   rl   rm   rn   Zcat_xÚcat_y)
r   r   rK   r   r	   r   rv   r   r5   r6   rw   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§   re   )r§   r�   u   xÃ¤ac                 C   s   t f |Ž}t ||¡ d S r   )r   r5   r6   )r   Zget_dummies_kwargsr;   r<   r   r   r   Útest_dataframe_dummies_unicode¤  s    
z-TestGetDummies.test_dataframe_dummies_unicodec                 C   s¬   t dƒ}t|ƒ}t|t dƒƒ}tdddgdddgdœtjd�}t|d|d�}|r^|jtdd	�}t 	||¡ t|d|d�}t 	||¡ t dƒ|_
t|d|d�}t 	||¡ d S )
Nr,   r-   r   r   )r   r   r&   T©Ú
drop_firstr!   r0   )r3   r   r   r   r   r   r4   r   r5   r6   r7   ©r   r!   r8   r9   r:   r;   r<   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aaar-   r   rM   Trª   )r3   r   r   r   Úaranger   r5   r6   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dddgit jd�}|rD|jtdd�}t ||¡ t|dd|d	�}tddddgt jdddg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ª   r   r   r&   r0   ©rU   r«   r!   rV   rM   )r   rO   r   r   r   r4   r   r5   r6   rX   r®   )	r   r!   Zs_NAr[   r\   r]   r^   r_   r`   r   r   r   Ú$test_get_dummies_basic_drop_first_NAæ  s,    $ ÿ   ÿz3TestGetDummies.test_get_dummies_basic_drop_first_NAc                 C   s\   |ddg }t |d|d�}tdddgdddgdœtjd�}|rL|jtdd	�}t ||¡ d S )
Nr   r   Trª   r   r   )rl   rn   r&   r0   )r   r   r   r   r4   r   r5   r6   ro   r   r   r   Ú!test_dataframe_dummies_drop_firstþ  s     z0TestGetDummies.test_dataframe_dummies_drop_firstc                 C   s¦   t dddgƒ|d< t|d|d�}tdddgd	dd	gd	d	dgd	ddgd
œƒ}dddg}||  tj¡||< |ddddg }|r–|D ]}t|| ƒ||< q€t ||¡ d S )Nr�   r£   r¤   Trª   r   r   r   r   )r   rl   rn   r¥   rl   rn   r¥   r   )	r   r   r   rs   r   r   r   r5   r6   )r   r   r!   r   r<   r;   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ddddgddddgddddgddddgdœƒ}d	d
ddg}||  t j¡||< |jdd�}|r¾|D ]}t|| ƒ||< q¨t	 
||¡ t|dd|d�}|dd	dg }t	 
||¡ d S )Nr   Tr°   r   rV   r   r   )r   rl   rŸ   rn   r    rl   rŸ   rn   r    Fr   )r   rO   r¡   r   rK   r   rs   r   r   r5   r6   )r   r   r!   r<   r;   r†   r³   r   r   r   Ú)test_dataframe_dummies_drop_first_with_na  s6       ÿþ



ûÿ	z8TestGetDummies.test_dataframe_dummies_drop_first_with_nac                 C   sœ   t dddgƒ}t|ƒ}tddgddgddggddgtjd�}t ||¡ t tdddgƒƒ}t|ƒ}tddgddgddggtddgƒtjd�}t ||¡ d S )Nr   r   r   rW   r   r   )r   r   r   r   r   r5   r6   r   )r   r§   r<   r;   r   r   r   Útest_get_dummies_int_int/  s    & 
 ÿz'TestGetDummies.test_get_dummies_int_intc              	   C   s¸   t dddgtdddgƒdddgdddgdœƒ}dd	d
dddg}t ddddddgddddddgddddddgg|d�}||dd …   |¡||dd … < t|ddg|d�}t ||¡ d S )Nr   r   r   r   g      ð?g       @)r   r   r   ÚDr   r·   ÚA_1ÚA_2ZB_arm   r   r•   r   r   rW   )r   r   rs   r   r5   r6   )r   r   r§   r>   r;   r<   r   r   r   Útest_get_dummies_int_df<  s    üÿ,þ"z&TestGetDummies.test_get_dummies_int_dfÚorderedTFc                 C   s|   t tdƒtdƒ|d�}t||d�}tjdddgdddgg|  |¡d�}t|j|j|d�}t|||  |¡d�}t	 
||¡ d S )NZxyZxyz)Ú
categoriesr»   r&   r   r   rW   )r   r3   r   r   rv   r"   r   r¼   r   r5   r6   )r   r   r»   r¤   r<   r§   r†   r;   r   r   r   Ú1test_dataframe_dummies_preserve_categorical_dtypeN  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¿   ©r>   r!   r¾   r•   )r   Ú	from_dictr   rX   r5   r6   )r   r!   r   Zdf2r   r   r   Ú*test_get_dummies_dont_sparsify_all_columns\  s    z9TestGetDummies.test_get_dummies_dont_sparsify_all_columnsc                 C   s‚   dddg|_ t|ƒjdd�}tdddddgdddddgdddddggddddd	gtjd
�jdd�}| dtji¡}t 	||¡ d S )Nr   r   rV   r   r   r   rk   rl   ZA_crW   )
r>   r   rK   r   r   r   rs   rG   r5   r6   rt   r   r   r   Ú"test_get_dummies_duplicate_columnse  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   r5   r6   )r   r   r<   r   r;   r   r   r   Útest_get_dummies_all_sparset  s    
þÿz*TestGetDummies.test_get_dummies_all_sparserY   Úbazc              
   C   sp   t ddddddgddddddgd	d
dd	d
dgddddddgdœƒ}d}tjt|d�� t||d� W 5 Q R X d S )Nr   r   r   é   é   é   ÚoneÚtwor   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   rY   r   r*   r   r   r   Ú#test_get_dummies_with_string_values€  s    üÿ	z2TestGetDummies.test_get_dummies_with_string_values)0Ú__name__Ú
__module__Ú__qualname__r'   Zfixturer   r   Zfloat64rH   r   r!   r"   r+   r=   rL   rS   ra   ri   rp   ru   ry   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
      st   


2þþþþóþ


r
   )r™   Únumpyr   r'   Zpandas.core.dtypes.commonr   Zpandasr‰   r   r   r   r   r   Zpandas._testingZ_testingr5   Zpandas.core.arrays.sparser   r	   r
   r   r   r   r   Ú<module>   s   