U
    ùQ”i2  ã                   @   s4  d dl Zd dlmZ d dlZd dlZd dlZd dlm	Z	m
Z
mZmZmZmZ d dlmZ ejjej dde dd¡ ¡ej ddd	d
g¡ej dddg¡ej dddg¡dd„ ƒƒƒƒƒZdd„ Zdd„ Zdd„ Zdd„ Zej ddddgedƒeedƒgdedgejdgdd�dd �fdddge d!dd¡ee d!dd¡gdedgejdgdd�dd �fdddd"d"ge d!dd¡ee d!dd¡ee d!dd¡gdeddgejdd"gdd�dd �fddddd"ge d!dd¡ee d!dd¡ee d!dd¡gdeddgejdd"gdd�dd �fg¡d#d$„ ƒZd%d&„ Zd'd(„ Zd)d*„ Z dS )+é    N)Úascii_lowercase)Ú	DataFrameÚ
MultiIndexÚNaTÚSeriesÚ	TimestampÚ
date_rangeÚné
   é   é   Úméd   iè  ÚsortFTÚdropnac                    s  d‡ ‡fdd„	}t ddd�}ttj ttƒ| ¡tj || ¡tj d|| ¡dœƒ}||d	gƒ ||d	d
gƒ d |jdd d…d	f< d |jdd d…d
f< d |jdd d…df< d |jdd d…df< d |jdd d…df< ||d	gƒ ||d	d
gƒ ||d	gdd� ||d	d
gdd� d S )NTc                    s’   |   ¡ }| j||ˆd�}|d jˆ d�}| j||ˆd�}|d jtjˆ d�}|s\|jdd�}|rrtj||dd� ntj||dd� t | |¡ d S )N)Úas_indexr   Újulie©r   T)ÚdropF)Zcheck_names)	ÚcopyÚgroupbyÚnuniqueÚapplyr   Zreset_indexÚtmÚassert_series_equalÚassert_frame_equal)ÚdfÚkeysr   Zoriginal_dfZgrÚleftÚright©r   r   © úE/tmp/pip-unpacked-wheel-58ppya8e/pandas/tests/groupby/test_nunique.pyÚcheck_nunique   s    z2test_series_groupby_nunique.<locals>.check_nuniquez
2015-08-23r
   )Zperiodsr   )ÚjimÚjoer   r$   r%   é   é   é   é%   é   é   r   é   é	   F©r   )T)	r   r   ÚnpÚrandomÚchoiceÚlistr   ÚrandintÚloc)r	   r   r   r   r#   ÚdaysÚframer!   r    r"   Útest_series_groupby_nunique   s&    ýÿr7   c                  C   s  t tdƒtdƒtdƒdœƒ} t tdƒdddgdddgdœƒ}| jdd	d
� ¡ }t ||¡ tdƒ|_d|j_|jdd�}|  d¡ ¡ }t ||¡ |  	dd i¡ d¡jd	d�}t ||¡ t dgd dgd dœtdƒd�}d|j_|  	dd i¡ d¡ ¡ }t ||¡ d S )NZabbaccZabxaccZabbacx)ÚAÚBÚCÚabcr&   r   r8   Fr.   ©ÚcolumnsÚxr   r(   )r9   r:   )Úindex)
r   r2   r   r   r   r   r?   Únamer   Úreplace)r   ÚexpectedÚresultr!   r!   r"   Útest_nuniqueB   s     
"rD   c                  C   s†   t dddgdddgddd	gd
ddgdddggdddgd�} |  ddg¡d  ¡ }t | j| jg¡}tdgd d|d�}t 	||¡ d S )Nr   r&   ZAliceéÈ   r   ZBobi,  r(   ZCharlieipþÿÿé   ZDaniô  é   ZEdithÚamountÚidr@   r<   )r@   r?   )
r   r   r   r   Zfrom_arraysrI   rH   r   r   r   )ÚdatarC   r?   rB   r!   r!   r"   Útest_nunique_with_object[   s    ûørK   c                  C   s8   t dtd�} | jdd� ¡ }t ddd�}t ||¡ d S )Nr@   )r@   Údtyper   )ÚlevelÚint64)r   Úobjectr   r   r   r   )rJ   rC   rB   r!   r!   r"   Útest_nunique_with_empty_seriesn   s    rP   c                  C   st   t tdƒtdƒtdƒgdddgdœƒ d¡} |  tjd	d
�¡d  ¡ }|  tjd	d
�¡d  tj¡}t	 
||¡ d S )Nz2016-06-28 09:35:35z2016-06-28 16:09:30z2016-06-28 16:46:28Ú1Ú2Ú3)ÚtimerJ   rT   Úh)ÚfreqrJ   )r   r   Z	set_indexr   ÚpdZGrouperr   r   r   r   r   ©ÚtestrC   rB   r!   r!   r"   Útest_nunique_with_timegrouperv   s    ýúÿ	÷
rZ   zkey, data, dropna, expectedr>   z
2019-01-01r&   Úkey©r@   rJ   )r?   r@   iã  Úyc                 C   s6   t | |dœƒ}| dg¡d j|d�}t ||¡ d S )N)r[   rJ   r[   rJ   r   )r   r   r   r   r   )r[   rJ   r   rB   r   rC   r!   r!   r"   Útest_nunique_with_NaT‡   s    r^   c                  C   s\   t dddgtjdgdd�d�} |  dddg¡ ¡ }t dgt dg¡| jd�}t 	||¡ d S )	Nr&   r   r8   Zlevel_0r\   r<   r   )r?   r=   )
r   rW   ÚIndexr   r   r/   Úarrayr=   r   r   rX   r!   r!   r"   Ú)test_nunique_preserves_column_level_names«   s    ra   c                  C   sP   t tddƒdgd�} |  dddg¡d  d¡}tdddgdd	�}t ||¡ d S )
Nz
2008-12-31z
2009-01-02Údater<   r   r&   r   r   r\   )r   r   r   Z	transformr   r   r   )r   rC   rB   r!   r!   r"   Ú$test_nunique_transform_with_datetime³   s    rc   c                 C   sn   t dgƒ d¡}|d d… }|j|| d�}| ¡ }| rNt g |d d… dd�}nt dg|dd�}t ||¡ d S )Nr&   Úcategoryr   )ÚobservedrN   )r?   rL   )r   Zastyper   r   r   r   )re   ÚcatZserÚgbrC   rB   r!   r!   r"   Útest_empty_categorical»   s    rh   )!ÚdatetimeÚdtÚstringr   Znumpyr/   ZpytestZpandasrW   r   r   r   r   r   r   Zpandas._testingZ_testingr   ÚmarkZslowZparametrizeZaranger7   rD   rK   rP   rZ   r_   rb   r^   ra   rc   rh   r!   r!   r!   r"   Ú<module>   sX    *üü*ü*üíþ
