a
    é´«jÕ[  ã                   @   s‚  d dl Zd dlZd dlmZ d dlmZ d dlZd dl	m
Z d dlmZ ej ddddgddggd	d
gd	dgd	dgdœfdddgdejgddggg d¢g d¢g d¢dœfg¡dd„ ƒZej ddddgddggdd
gddgddgdœfdddgdejgddgejdggg d¢g d¢g d¢dœfg¡dd„ ƒZej ddddgd
d	gdd	gdd	gdœfdddejgg d¢g d¢g d¢dœfg¡dd „ ƒZej d!dd"d"d#ejgejd$d$gd"d#gd%�fdd"d"d#ejgejg d&¢d"d#ejgd%�fg¡d'd(„ ƒZej d)dejd*d+gd"d#gd,d-�fdejg d.¢d"d#ejgd,d-�fg¡d/d0„ ƒZej d1d2¡d3d4„ ƒZej d5e d d6¡ed7ƒejjd8d9gd:d;gd<�g¡d=d>„ ƒZej ddddgddggd	d
gddgddgdœfdddgdejgddggg d¢g d?¢g d@¢dœfg¡dAdB„ ƒZejjej dCe dD¡e dE¡fe  dF¡e  dG¡fe !dD¡e !dE¡fg¡ej dHddId$gfdg dJ¢fg¡dKdL„ ƒƒƒZ"ej dMej#dd"d"d#ejgg dN¢dOœdPg dQ¢id"d#ejgdRdS�ej#dd"d"d#ejgg dN¢dOœdPg dT¢iddUdS�ej#dg dV¢g dN¢dOœdPg dQ¢iddWdS�ej#dg dV¢g dN¢dOœdPg dQ¢iddXdS�g¡dYdZ„ ƒZ$ej d[dd"gd"d#gg¡ej d\d"gd"d#gg¡ej d]ddg¡d^d_„ ƒƒƒZ%d`da„ Z&dbdc„ Z'ej dde(deƒ¡ej dfddgdhdidjdkdldmdndodndpdqdrej#dsejj)edtdu�dv�dwdxdyg¡ej dzddg¡d{d|„ ƒƒƒZ*ej dzddg¡ej dfe+dg¡d}d~„ ƒƒZ,ej dg d€¢¡d�d‚„ ƒZ-dƒd„„ Z.ej d…d†d‡g¡dˆd‰„ ƒZ/dŠd‹„ Z0dŒd�„ Z1dS )Žé    N)Úpa_version_under10p1)Úna_value_for_dtype)Úget_groupby_method_argszdropna, tuples, outputsTÚAÚBç      *@ç…ëQ¸Î^@ç     À^@ç      ð?©ÚcÚdÚeF)r   çš™™™™™(@r   )r   ç      m@r	   )r   ç      (@r
   c           	      C   s–   g d¢d|dddgg d¢g d¢g}t j|g d¢d	�}|jd
dg| d� ¡ }t jj|tdƒd�}| sx|jddtj	gdd�}t j||d�}t
 ||¡ d S )N©r   r   é   r   r   r   r   r   r   ©r   r   r   é{   é   ©r   r   r   r   r
   ©ÚaÚbr   r   r   ©Úcolumnsr   r   ©ÚdropnaÚab©Únamesr   ©Úlevel©Úindex©ÚpdÚ	DataFrameÚgroupbyÚsumÚ
MultiIndexÚfrom_tuplesÚlistÚ
set_levelsÚnpÚnanÚtmÚassert_frame_equal)	r   ÚtuplesÚoutputsÚnulls_fixtureÚdf_listÚdfÚgroupedÚmiÚexpected© r;   úg/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/pandas/tests/groupby/test_groupby_dropna.pyÚ:test_groupby_dropna_multi_index_dataframe_nan_in_one_group   s    ür=   r   )r   gš™™™™™*@r   r
   )r   g     @m@r	   r
   )r   r   r
   r
   c           
   	   C   s°   g d¢d|dddgg d¢|dddd	gd|ddd	gg}t j|g d
¢d�}|jddg| d� ¡ }t jj|tdƒd�}| s’| ddtj	gddtj	gg¡}t j||d�}	t
 ||	¡ d S )Nr   r   r   r   r   r   r   r   r
   r   r   r   r   r   r   r    r$   r&   )
r   r3   r4   r5   Únulls_fixture2r6   r7   r8   r9   r:   r;   r;   r<   Ú;test_groupby_dropna_multi_index_dataframe_nan_in_two_groups8   s    ûr?   zdropna, idx, outputs)r   r   r   )r   r   r   )r	   r   r   )r
   r   r   c                 C   sh   g d¢g d¢g d¢g d¢g}t j|g d¢d�}|jd| d� ¡ }t j|t j|dd	�d
�}t ||¡ d S )N)r   r   r   r   )Nr   r   r   )r   r   r   r   )r   r   r   r
   )r   r   r   r   r   r   r   ©Únamer$   )r'   r(   r)   r*   ÚIndexr1   r2   )r   Úidxr4   r6   r7   r8   r:   r;   r;   r<   Ú*test_groupby_dropna_normal_index_dataframed   s    ürD   zdropna, idx, expectedr   r   é   r$   )rE   rE   rE   c                 C   s4   t jg d¢|d�}|jd| d� ¡ }t ||¡ d S )N)r   é   rE   rE   r$   r   )r#   r   )r'   ÚSeriesr)   r*   r1   Úassert_series_equal)r   rC   r:   ÚserÚresultr;   r;   r<   Ú test_groupby_dropna_series_levelƒ   s    rK   zdropna, expectedç     @j@ç     àu@ú	Max Speed©r%   rA   )rL   rM   ç      4@c                 C   sD   t jg d¢g d¢dd�}|jdddtjg| d� ¡ }t ||¡ d S )N)g     `x@rM   g      >@rP   )ÚFalconrQ   ÚParrotrR   rN   rO   r   r   r   )r'   rG   r)   r/   r0   Úmeanr1   rH   )r   r:   rI   rJ   r;   r;   r<   Útest_groupby_dropna_series_by•   s    ýrT   r   )FTc                 C   s:   t  g d¢g d¢dœ¡}|jd| d�}|jj| ks6J ‚d S )N©r   r   r   N©r   rF   rE   N©r   r   r   r   )r'   r(   r)   Ú_grouperr   )r   r7   Úgbr;   r;   r<   Útest_grouper_dropna_propagationª   s    rZ   r%   é   Úabcd)r   rF   )ÚRr   ÚnumÚcolr    c                 C   sÄ   dddd| rt jndgi}tjg d¢g d¢dœ|d�}|jd| d	�}| t¡}tj||d�}t ||¡ |dg  t¡}tj||d�}t ||¡ |d  t¡}tj	|d |dd
�}t 
||¡ d S )Nr   rF   r   rU   rV   rW   r$   r   r   rO   )r/   r0   r'   r(   r)   Ú	transformÚlenr1   r2   rG   rH   )r   r%   Zexpected_datar7   rY   rJ   r:   r;   r;   r<   Ú+test_groupby_dataframe_slice_then_transform²   s    

rb   )r   r   r	   )r
   r   r
   c           	      C   sž   g d¢g d¢g d¢g d¢g}t j|g d¢d�}ddd	d
œ}|jddg| d� |¡}t jj|tdƒd�}| s€|jddtj	gdd�}t j||d�}t
 ||¡ d S )Nr   )r   Nr   r   r   r   r   r   r   r*   ÚmaxÚminr   r   r   r   r   r    r   r   r"   r$   )r'   r(   r)   Úaggr+   r,   r-   r.   r/   r0   r1   r2   )	r   r3   r4   r6   r7   Zagg_dictr8   r9   r:   r;   r;   r<   Ú-test_groupby_dropna_multi_index_dataframe_aggÎ   s    ürf   zdatetime1, datetime2z
2020-01-01z
2020-02-01z-2 daysz-1 dayszdropna, valuesr   )r   rE   é   c           
   	   C   s~   t  g d¢||||||gdœ¡}| r.||g}n||tjg}|jd| d� ddi¡}t jd|it j|dd�d�}	t ||	¡ d S )	N)r   rF   rE   r[   é   rg   )ÚvaluesÚdtrj   r   ri   r*   r@   r$   )	r'   r(   r/   r0   r)   re   rB   r1   r2   )
r   ri   Z	datetime1Z	datetime2Zunique_nulls_fixtureZunique_nulls_fixture2r7   Zindexesr8   r:   r;   r;   r<   Ú&test_groupby_dropna_datetime_like_dataø   s"    úþÿ
rk   z#dropna, data, selected_data, levels)é
   rl   é   é   )Úgroupsri   ri   )r   r   r   r   Zdropna_false_has_nan)Úid)r   r   r   Zdropna_true_has_nan)r   r   r   r   Zdropna_false_no_nanZdropna_true_no_nanc                 C   s¶   t  |¡}|jd| d�}d}tjt|d�� | dd„ ¡}W d   ƒ n1 sN0    Y  tt|d |d ƒƒ}t j	j
|dd gd�}	| s˜|r˜|	j|dd	�}	t j||	d
�}
t ||
¡ d S )Nro   r   z7DataFrameGroupBy.apply operated on the grouping columns©Úmatchc                 S   s   t  dtt| ƒƒi¡S )Nri   )r'   r(   Úrangera   )Úgrpr;   r;   r<   Ú<lambda>I  ó    z@test_groupby_apply_with_dropna_for_multi_index.<locals>.<lambda>ri   r    r"   r$   )r'   r(   r)   r1   Úassert_produces_warningÚFutureWarningÚapplyÚtupleÚzipr+   r,   r.   r2   )r   ÚdataZselected_dataZlevelsr7   rY   ÚmsgrJ   Z	mi_tuplesr9   r:   r;   r;   r<   Ú.test_groupby_apply_with_dropna_for_multi_index  s    &
,r~   Úinput_indexÚkeysÚseriesc                 C   sœ   t  dtjgddgddgdœ¡}| |¡}|r8|d }n | ddgkrX|dgkrX|dg }| d urj| | ¡}|j|dd	�}|r„|d }| ¡ }t ||¡ d S )
Nr   rF   rE   ©r   r   r   r   r   r   Fr   )	r'   r(   r/   r0   Ú	set_indexr)   r*   r1   Úassert_equal)r   r€   r�   Úobjr:   rY   rJ   r;   r;   r<   Ú)test_groupby_dropna_with_multiindex_inputV  s$    ýÿ



r†   c               	   C   sà   dt jddt jgg d¢dœ} t | ¡}|jddd�}|j}t j}dt jdd	g|d
�dt jdg|d
�t jt jddg|d
�i}t| 	¡ | 	¡ ƒD ]\}}t
 ||¡ qŒt  t| ¡ ƒd	 ¡s¼J ‚t| ¡ ƒdd	… ddgksÜJ ‚d S )NÚg1Úg2)r   r   rF   rE   r[   )Úgroupr   r‰   Fr   r   rF   ©ÚdtyperE   r   r[   )r/   r0   r'   r(   r)   ÚindicesZintpÚarrayr{   ri   r1   Zassert_numpy_array_equalÚisnanr-   r€   )r|   r7   r8   rJ   r‹   r:   Zresult_valuesZexpected_valuesr;   r;   r<   Útest_groupby_nan_includedt  s    
ýr�   c                  C   sT   t jtjddggg d¢d�} |  ddg¡} | jddgdd� ¡ }| }t ||¡ d S )	Nr   r   r‚   r   r   r   Fr   )	r'   r(   r/   r0   rƒ   r)   Úfirstr1   r2   )r7   rJ   r:   r;   r;   r<   Ú&test_groupby_drop_nan_with_multi_index†  s
    r‘   Úsequence_indexéQ   r‹   ZUInt8ZInt8ZUInt16ZInt16ZUInt32ZInt32ZUInt64ZInt64ZFloat32ZFloat64ÚcategoryÚstringústring[pyarrow]zpyarrow is not installed)Úreason)Zmarksúdatetime64[ns]ú	period[d]zSparse[float]Útest_seriesc                    sÒ  d  ‡ fdd„tdƒD ƒ¡}|dv r4ddtjdœ‰n&|d	v rLd
dtjdœ‰nddtjdœ‰t tj‡fdd„|D ƒ|d�g d¢dœ¡}|jddd|dd�}|r¦|d }| 	¡ }i }t
|ƒD ]\}	}
| |
d¡|	 ||
< qº|dk�r
tj‡fdd„|D ƒ|d jjdd�}n^t|tƒ�rJ| d¡�rJtjtj‡fdd„|D ƒ|d�dd�}ntj‡fdd„|D ƒ|dd�}tj| ¡ |dd d�}|�sŒ| ¡ }|�sÂ| ¡ }|d u�rÂ| d¡�rÂ|d  |¡|d< t ||¡ d S )NÚ c                    s(   g | ] }d dddœˆ d|  d  ‘qS )ÚxÚyÚz)r   r   rF   rE   r;   )Ú.0Úk)r’   r;   r<   Ú
<listcomp>´  rv   z(test_no_sort_keep_na.<locals>.<listcomp>r[   )r•   r–   rœ   r�   )rœ   r�   rž   )r˜   r™   z
2016-01-01z
2017-01-01r   rF   c                    s   g | ]}ˆ | ‘qS r;   r;   ©rŸ   Úlabel©Úuniquesr;   r<   r¡   Á  rv   rŠ   )r   r   rF   rE   )Úkeyr   r¦   F)r   ÚsortÚas_indexÚobservedr   r   r”   c                    s   g | ]}ˆ | ‘qS r;   r;   ©rŸ   r   r¤   r;   r<   r¡   Ñ  rv   r@   ZSparsec                    s   g | ]}ˆ | ‘qS r;   r;   r¢   r¤   r;   r<   r¡   ×  rv   c                    s   g | ]}ˆ | ‘qS r;   r;   r¢   r¤   r;   r<   r¡   Ú  rv   )r‹   rA   )r%   rA   r‹   )Újoinrs   r'   ZNAr/   r0   r(   rG   r)   r*   Ú	enumerateÚgetZCategoricalIndexÚcatÚ
categoriesÚ
isinstanceÚstrÚ
startswithrB   r�   ri   Zto_frameÚreset_indexÚastyper1   r„   )r’   r‹   rš   r¨   Úsequencer7   rY   rJ   ZsummedrC   r£   r%   r:   r;   )r’   r¥   r<   Útest_no_sort_keep_na�  sN    #ÿþÿ

ýÿr¶   c                 C   s˜   t  dddgi¡}t j||g|d�}|r0|d n|}|j|d| d�}| ¡ }	t  t|jƒg¡}
t jddgi|
d�}|rˆt 	|	|d ¡ nt 
|	|¡ d S )	Nr   r   rF   rŠ   F)r   r§   rE   r$   )r'   r(   rG   r)   r*   rB   r   r‹   r1   rH   r2   )r§   r‹   r5   r>   rš   r7   ro   r…   rY   rJ   r%   r:   r;   r;   r<   Útest_null_is_null_for_dtypeæ  s    r·   Ú
index_kind)rs   ÚsingleÚmultic                 C   sR  t  t j d¡jg d¢dd�d ¡}t tj|g d¢d�tdƒdœ¡}| 	¡ }tj|g d	¢d� 
d
¡|d< |dkrxdg}n`|dkrœdg}| d¡}| d¡}n<ddg}|d |d< | ddg¡}|d |d< | ddg¡}t| |ƒ}	t| |ƒ}
| dk�r$|dk�r$|	d j|d�f}	|
d j|d�f}
|j|d|||d�}|�sŠ| dv �rŠtjtdd�� t|| ƒ|	Ž  W d   ƒ n1 �s|0    Y  d S |j|||dd�}t|| ƒ|
Ž  ¡ }|d j d
g¡|d< |dk�rä|d j d
g¡|d< |�r|dk�r| ddg¡}n
| d¡}n6|dk�rF| dk�rF|jdd�}|dk�rF|jdd�}| dv �r®|dk�r®|d j ¡ }|dk�r˜dd„ |D ƒ}tj|g d¢d�|d< ndd„ |D ƒ}||d< | dk�rÜ|jddid�}|�rÜ|d  d ¡}|�sö|dk�sö| dk�rüd }nt}d }tj||d�� t|| ƒ|	Ž }W d   ƒ n1 �s80    Y  t ||¡ d S )!NrF   ©r   rF   Né   ©Úsize©r   rF   rE   ©r¯   rm   ©rœ   r�   )r   rF   rE   r[   r[   rœ   rs   r¹   Zx2Zcorrwithr   r   F©r   r©   r§   r¨   )ÚidxminÚidxmaxz(empty group due to unobserved categoriesrq   T)r©   r§   r¨   rº   r¾   )rÄ   rÃ   r�   c                 S   s   g | ]}|d krt jn|‘qS )r[   ©r/   r0   rª   r;   r;   r<   r¡   6  rv   z-test_categorical_reducers.<locals>.<listcomp>c                 S   s$   g | ]}|d krt jt jfn|‘qS ))r[   r[   rÅ   rª   r;   r;   r<   r¡   9  rv   z*A grouping .* was excluded from the result)r/   ÚappendÚrandomÚdefault_rngÚchoicer'   r(   ÚCategoricalrs   ÚcopyÚfillnarƒ   r   Zdropr)   ÚpytestZraisesÚ
ValueErrorÚgetattrr³   r®   Zremove_categoriesri   ÚtolistÚrenamerx   r1   rw   r„   )Zreduction_funcr©   r§   r¨   r¸   ri   r7   Z	df_filledr€   ÚargsZargs_filledÚ	gb_keepnaZ	gb_filledr:   Úwarnr}   rJ   r;   r;   r<   Útest_categorical_reducersù  s|    "ÿ



ÿÿ.




.rÕ   c                 C   sX  |dkr"d}|   tjj|dd�¡ t tj d¡jg d¢dd�d ¡}t	 
t	j|g d	¢d
�tdƒdœ¡}t||ƒ}||d  ¡  d }	|dkržttt|	ƒƒƒ}
nx|dk�r|rÜ|rÆ|d jdd�d }qø|d jdd�d }n|jd |	jd … d  ¡ }t|	ƒ|g }
nt|	|ƒ|Ž }
t	 
d|
i¡}|jdd|||d�}|jdd||d�}d}|dk�r˜tjt|d�� t|dƒ|Ž }W d   ƒ n1 �sŒ0    Y  nt||ƒ|Ž }t||ƒ|Ž }t||d  ¡  j ¡ |j ¡ ƒD ]0\}}|jdk�rö||j|< n||j|df< �qÖ|dk�r4||d  ¡ | |¡@   d7  < |dv�rH|  d¡}t !||¡ d S )NrÌ   zBGH#49651 fillna may incorrectly reorders results when dropna=FalseF)r—   ÚstrictrF   r»   r¼   r½   r¿   rÀ   rm   rÁ   rœ   r�   ZcumcountZngroupr   r   r   rÂ   T)r   r©   r§   zLThe default fill_method='ffill' in DataFrameGroupBy.pct_change is deprecatedÚ
pct_changerq   )ZrankÚdiffr×   ÚshiftZint64)"ZapplymarkerrÍ   ÚmarkZxfailr/   rÆ   rÇ   rÈ   rÉ   r'   r(   rÊ   rs   r   Zisnullr-   ra   ZnuniqueÚilocr%   rÏ   r)   r1   rw   rx   r{   rÐ   ri   ZravelÚndimZnotnullÚger´   r„   )ÚrequestZtransformation_funcr©   r§   r¨   r}   ri   r7   rÒ   Znull_group_valuesZnull_group_dataZna_groupZnull_group_resultrÓ   Z	gb_dropnarJ   r:   rÛ   Úvaluer;   r;   r<   Útest_categorical_transformersM  sR    "ÿ


ÿ
0ÿ
"

rà   ÚmethodÚheadÚtailc           
      C   sê   t j d¡ g d¢d¡}t tj|g d¢d�tt|ƒƒdœ¡}|j	dd|||d	�}t
|| ƒƒ }| d
krt|d d d… }|dk|dk ¡ dk@ |dk|dk ¡ dk@ B |d k|d k ¡ dk@ B }| d
krÒ|d d d… }|| }	t ||	¡ d S )NrF   r»   rn   r¿   rÀ   rÁ   rœ   FrÂ   rã   éÿÿÿÿr   rh   )r/   rÇ   rÈ   rÉ   r'   r(   rÊ   rs   ra   r)   rÏ   Zcumsumr1   r2   )
rá   r©   r§   r¨   ri   r7   rY   rJ   Úmaskr:   r;   r;   r<   Útest_categorical_head_tail‰  s$    ÿÿýÿræ   c                  C   st   t j d¡ g d¢d¡} t tj| g d¢d�tt| ƒƒdœ¡}|j	dddd	�}| 
d
d„ ¡}| ¡ }t ||¡ d S )NrF   r»   rn   r¿   rÀ   rÁ   rœ   F©r   r©   c                 S   s   |   ¡ S ©N©r*   ©rœ   r;   r;   r<   ru   ª  rv   z&test_categorical_agg.<locals>.<lambda>)r/   rÇ   rÈ   rÉ   r'   r(   rÊ   rs   ra   r)   re   r*   r1   r2   ©ri   r7   rY   rJ   r:   r;   r;   r<   Útest_categorical_agg£  s    ÿrì   c                  C   sv   t j d¡ g d¢d¡} t tj| g d¢d�tt| ƒƒdœ¡}|j	dddd	�}| 
d
d„ ¡}| 
d¡}t ||¡ d S )NrF   r»   rn   r¿   rÀ   rÁ   rœ   Frç   c                 S   s   |   ¡ S rè   ré   rê   r;   r;   r<   ru   ¶  rv   z,test_categorical_transform.<locals>.<lambda>r*   )r/   rÇ   rÈ   rÉ   r'   r(   rÊ   rs   ra   r)   r`   r1   r2   rë   r;   r;   r<   Útest_categorical_transform¯  s    ÿ
rí   )2Únumpyr/   rÍ   Zpandas.compat.pyarrowr   Zpandas.core.dtypes.missingr   Zpandasr'   Zpandas._testingZ_testingr1   Zpandas.tests.groupbyr   rÚ   Zparametrizer0   r=   r?   rD   rG   rK   rT   rZ   Z
RangeIndexr-   r+   Zfrom_productrb   rf   Zarm_slowÚ	TimestampZ	TimedeltaZPeriodrk   Úparamr~   r†   r�   r‘   rs   Zskipifr¶   Úobjectr·   rÕ   rà   ræ   rì   rí   r;   r;   r;   r<   Ú<module>   sr  ýýýúþ
ýýýúþ
 
ýýþþ
$ýþþ
þþþ



ýþ
ýýýúþ
ýþ 

û
û
ú
úéþ#

ÿþéþ8
S<
