o
    _~#g[                     @   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dd Z-dd Z.ejdddgdd Z/dd Z0dd 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}| s<|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;   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/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}| sI|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   sj   g dg dg dg dg}t j|g dd}|jd| d }t j|t j|d	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   objectdtypenamer$   )r'   r(   r)   r*   Indexr1   r2   )r   idxr4   r6   r7   r8   r:   r;   r;   r<   *test_groupby_dropna_normal_index_dataframed   s   rF   zdropna, idx, expectedr   r      r$   )rG   rG   rG   c                 C   s4   t jg d|d}|jd| d }t|| d S )N)r      rG   rG   r$   r   )r#   r   )r'   Seriesr)   r*   r1   assert_series_equal)r   rE   r:   serresultr;   r;   r<    test_groupby_dropna_series_level   s   rM   zdropna, expected     @j@     u@	Max Speedr%   rC   )rN   rO         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@rO   g      >@rR   )FalconrS   ParrotrT   rP   rQ   r   r   r   )r'   rI   r)   r/   r0   meanr1   rJ   )r   r:   rK   rL   r;   r;   r<   test_groupby_dropna_series_by   s   rV   r   )FTc                 C   s:   t g dg dd}|jd| d}|jj| ksJ d S )Nr   r   r   Nr   rH   rG   Nr   r   r   r   )r'   r(   r)   _grouperr   )r   r7   gbr;   r;   r<   test_grouper_dropna_propagation   s   r\   r%      abcd)r   rH   )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   rH   r   rW   rX   rY   r$   r   r   rQ   )r/   r0   r'   r(   r)   	transformlenr1   r2   rI   rJ   )r   r%   expected_datar7   r[   rL   r:   r;   r;   r<   +test_groupby_dataframe_slice_then_transform   s   

re   )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   agg_dictr8   r9   r:   r;   r;   r<   -test_groupby_dropna_multi_index_dataframe_agg   s   rj   zdatetime1, datetime2z
2020-01-01z
2020-02-01z-2 daysz-1 dayszdropna, valuesr   )r   rG      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   rH   rG   r]      rk   )valuesdtrn   r   rm   r*   rC   r$   )	r'   r(   r/   r0   r)   rh   rD   r1   r2   )
r   rm   	datetime1	datetime2unique_nulls_fixtureunique_nulls_fixture2r7   indexesr8   r:   r;   r;   r<   &test_groupby_dropna_datetime_like_data   s"   
ru   z#dropna, data, selected_data, levels)
   rv         )groupsrm   rm   )r   r   r   r   dropna_false_has_nan)id)r   r   r   dropna_true_has_nan)r   r   r   r   dropna_false_no_nandropna_true_no_nanc                 C   s   t |}|jd| d}d}tjt|d |dd }W d    n1 s'w   Y  tt|d |d }t j	j
|dd gd}	| sL|rL|	j|dd	}	t j||	d
}
t||
 d S )Nry   r   z7DataFrameGroupBy.apply operated on the grouping columnsmatchc                 S   s   t dtt| iS )Nrm   )r'   r(   rangerc   )grpr;   r;   r<   <lambda>I  s    z@test_groupby_apply_with_dropna_for_multi_index.<locals>.<lambda>rm   r    r"   r$   )r'   r(   r)   r1   assert_produces_warningDeprecationWarningapplytuplezipr+   r,   r.   r2   )r   dataselected_datalevelsr7   r[   msgrL   	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}||}|r|d }n| ddgkr,|dgkr,|dg }| d ur5|| }|j|dd	}|rB|d }| }t|| d S )
Nr   rH   rG   r   r   r   r   r   r   Fr   )	r'   r(   r/   r0   	set_indexr)   r*   r1   assert_equal)r   r   r   objr:   r[   rL   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
|| qFt t| d	 s^J t| dd	 ddgksnJ d S )Ng1g2)r   r   rH   rG   r]   )groupr   r   Fr   r   rH   rB   rG   r   r]   )r/   r0   r'   r(   r)   indicesintparrayr   rm   r1   assert_numpy_array_equalisnanr-   r   )r   r7   r8   rL   rB   r:   result_values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   rL   r:   r;   r;   r<   &test_groupby_drop_nan_with_multi_index  s
   r   sequence_indexQ   rB   UInt8Int8UInt16Int16UInt32Int32UInt64Int64Float32Float64categorystringstring[pyarrow]zpyarrow is not installed)reason)marksdatetime64[ns]	period[d]zSparse[float]test_seriesc                    s  d  fddtdD }|dv rddtjdn|d	v r&d
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}|rS|d }|	 }i }t
|D ]\}	}
||
d|	 ||
< q]|dkrtjfdd|D |d jjdd}n-t|tr|drt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   rH   rG   r;   ).0k)r   r;   r<   
<listcomp>  s   ( 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   rH   c                       g | ]} | qS r;   r;   r   labeluniquesr;   r<   r         r   )r   r   rH   rG   )keyr   r   F)r   sortas_indexobservedr   r   r   c                    r   r;   r;   r   r   r   r;   r<   r     r   ro   Sparsec                    r   r;   r;   r   r   r;   r<   r     r   c                    r   r;   r;   r   r   r;   r<   r     r   rA   )r%   rC   rB   )joinr   r'   NAr/   r0   r(   rI   r)   r*   	enumerategetCategoricalIndexcat
categories
isinstancestr
startswithrD   r   rm   to_framereset_indexastyper1   r   )r   rB   r   r   sequencer7   r[   rL   summedrE   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}|r|d n|}|j|d| d}| }	t t|jg}
t jddgi|
d}|rEt	|	|d  d S t
|	| d S )	Nr   r   rH   r   F)r   r   rG   r$   )r'   r(   rI   r)   r*   rD   r   rB   r1   rJ   r2   )r   rB   r5   r>   r   r7   ry   r   r[   rL   r%   r:   r;   r;   r<   test_null_is_null_for_dtype  s   r   
index_kind)r   singlemultic                 C   sF  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r<dg}n0|dkrNd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 rtjtdd t|| |	  W d    d S 1 sw   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}n|dkr| dkr|jdd}|dkr|jdd}| dv rQ|dkrQ|d j }|dkrFdd |D }tj|g dd|d< ndd |D }||d< | dkrh|jddid}|rh|d d }|su|dksu| dkrxd }nt}d }tj||d t|| |	 }W d    n	1 sw   Y  t|| d S )!NrH   r   rH   N   sizer   rH   rG   r   rw   r   r   )r   rH   rG   r]   r]   r   r   r   x2corrwithr   r   Fr   r   r   r   )idxminidxmaxz(empty group due to unobserved categoriesr   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  s    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  s   $ z*A grouping .* was excluded from the result)r/   appendrandomdefault_rngchoicer'   r(   Categoricalr   copyfillnar   r   dropr)   pytestraises
ValueErrorgetattrr   r   remove_categoriesrm   tolistrenameFutureWarningr1   r   r   )reduction_funcr   r   r   r   rm   r7   	df_filledr   argsargs_filled	gb_keepna	gb_filledr:   warnr   rL   r;   r;   r<   test_categorical_reducers  s   "







r  c                 C   sN  |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rOttt|	}
n;|dkr|rm|rb|d jddd }n|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rtjt|d t|d| }W d    n1 sw   Y  nt||| }t||| }t||d   j |j D ]\}}|jdkr||j|< q||j|df< q|dkr||d  ||@   d7  < |dvr| d}t!|| d S )Nr   zBGH#49651 fillna may incorrectly reorders results when dropna=FalseF)r   strictrH   r   r   r   r   r   rw   r   r   r   cumcountngroupr   r   r   r   T)r   r   r   zLThe default fill_method='ffill' in DataFrameGroupBy.pct_change is deprecated
pct_changer   )rankdiffr  shiftint64)"applymarkerr   markxfailr/   r   r   r   r   r'   r(   r   r   r   isnullr-   rc   nuniqueilocr%   r   r)   r1   r   r   r   r   rm   ravelndimnotnullger   r   )requesttransformation_funcr   r   r   r   rm   r7   r   null_group_valuesnull_group_datana_groupnull_group_resultr  	gb_dropnarL   r:   r  valuer;   r;   r<   test_categorical_transformersM  sV   "



"

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r:|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ri|d d d }|| }	t||	 d S )NrH   r   rx   r   r   r   r   Fr   r"  r   rl   )r/   r   r   r   r'   r(   r   r   rc   r)   r   cumsumr1   r2   )
r   r   r   r   rm   r7   r[   rL   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 )NrH   r   rx   r   r   r   r   Fr   r   c                 S      |   S Nr*   r   r;   r;   r<   r         z&test_categorical_agg.<locals>.<lambda>)r/   r   r   r   r'   r(   r   r   rc   r)   rh   r*   r1   r2   rm   r7   r[   rL   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 )NrH   r   rx   r   r   r   r   Fr'  c                 S   r(  r)  r*  r+  r;   r;   r<   r     r,  z,test_categorical_transform.<locals>.<lambda>r*   )r/   r   r   r   r'   r(   r   r   rc   r)   rb   r1   r2   r-  r;   r;   r<   test_categorical_transform  s   
r/  )2numpyr/   r   pandas.compat.pyarrowr   pandas.core.dtypes.missingr   pandasr'   pandas._testing_testingr1   pandas.tests.groupbyr   r  parametrizer0   r=   r?   rF   rI   rM   rV   r\   
RangeIndexr-   r+   from_productre   rj   arm_slow	Timestamp	TimedeltaPeriodru   paramr   r   r   r   r   skipifr   r@   r   r  r  r&  r.  r/  r;   r;   r;   r<   <module>   st   

 

$






 





#
8
S<
