o
    Ti                     @   s2  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dgejdddgejdddgejd	ddgejd
dgddggdd Zdd Zdd Zdd Zdd Zejdg dedeedgdedgejdgddddfg ded ddeed ddgdedgejdgddddfg d!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$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sortFTdropnaas_indexwith_nankeysjoejimc                 C   sb  d}d}t ddd}ttjdtt|tjd||tjdd||d}|rh|	dt
i}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< | }	|j||| d}
|
d j|d}|j||| d}
|
d jtj|d}|s|jdd}|rtj||dd ntj||dd t||	 d S )Nd   
   z
2015-08-23)Zperiods   r   )r   r   julier         r      %   r            	   )r   r	   r
   T)dropF)Zcheck_names)r   r   nprandomZdefault_rngchoicelistr   Zintegersastypefloatloccopygroupbynuniqueapplyr   Zreset_indextmassert_series_equalassert_frame_equal)r	   r
   r   r   r   nmdaysdfZoriginal_dfgrleftright r3   a/var/www/html/evchargy.com/venv/lib/python3.10/site-packages/pandas/tests/groupby/test_nunique.pytest_series_groupby_nunique   s6   r5   c                  C   s  t tdtdtdd} t tdg dg d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abc)r   r   r   )r   r   r   r6   F)r   columnsxr   r   r   )r7   r8   )index)
r   r!   r&   r'   r)   r+   r=   namer   replace)r/   expectedresultr3   r3   r4   test_nunique;   s   
"rB   c                  C   sz   t g dg dg dg dg dgg dd} | dd	gd
  }t| j| jg}tdgd d
|d}t	|| d S )N)r   r   ZAlice)   r   ZBob)i,  r   ZCharlie)ip   ZDan)i     ZEdith)amountidr>   r:   rG   rF   r>   r   rE   )r>   r=   )
r   r&   r'   r   Zfrom_arraysrG   rF   r   r)   r*   )datarA   r=   r@   r3   r3   r4   test_nunique_with_objectT   s   rI   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*   )rH   rA   r@   r3   r3   r4   test_nunique_with_empty_seriesg   s   rN   c                  C   sr   t tdtdtdgg d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)timerH   rR   h)freqrH   )r   r   Z	set_indexr&   pdZGrouperr'   r(   r   r)   r*   testrA   r@   r3   r3   r4   test_nunique_with_timegroupero   s   	
rX   zkey, data, dropna, expected)r<   r<   r<   z
2019-01-01r   r<   keyr>   rH   )r=   r>   i  )r<   r<   r<   yr[   r   r[   )r<   r<   r<   r<   r[   c                 C   s6   t | |d}|dgd j|d}t|| d S )N)rY   rH   rY   rH   r   )r   r&   r'   r)   r*   )rY   rH   r
   r@   r/   rA   r3   r3   r4   test_nunique_with_NaT   s   r\   c                  C   sX   t g dtjdgddd} | g d }t dgtdg| jd	}t	|| d S )
N)r   r   r   r6   Zlevel_0rZ   r:   )r   r   r   r   r   )r=   r;   )
r   rU   Indexr&   r'   r   arrayr;   r)   r+   rV   r3   r3   r4   )test_nunique_preserves_column_level_names   s   r_   c                  C   sL   t tdddgd} | g dd d}tg ddd}t|| d S )	Nz
2008-12-31z
2009-01-02dater:   )r   r   r   r'   )r   r   r   rZ   )r   r   r&   	transformr   r)   r*   )r/   rA   r@   r3   r3   r4   $test_nunique_transform_with_datetime   s   rb   c                 C   sn   t dgd}|d d }|j|| d}| }| r't g |d d dd}nt dg|dd}t|| d S )Nr   categoryr   )observedrL   )r=   rJ   )r   r"   r&   r'   r)   r*   )rd   catZsergbrA   r@   r3   r3   r4   test_empty_categorical   s   rg   ) datetimedtstringr   numpyr   ZpytestZpandasrU   r   r   r   r   r   r   Zpandas._testingZ_testingr)   markZslowZparametrizer5   rB   rI   rN   rX   r]   r`   r\   r_   rb   rg   r3   r3   r3   r4   <module>   s\     "**
