o
    dX                     @   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_under7p0)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;   m/var/www/html/visualizacion-main/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}tt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   minr   r   r   r   r   r    r   r   r"   r$   )r'   r(   r*   maxr)   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ti}t jd|it j|ddd}	t	||	 d S )N)r   rH   rG   r]      rk   )valuesdtrn   r   rm   rC   r$   )
r'   r(   r/   r0   r)   rh   r*   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d }tt|d |d }t jj|dd gd}| s3|r3|j|dd}t j||d}	t	
||	 d S )	Nry   r   c                 S   s   t dtt| iS )Nrm   )r'   r(   rangerc   )grpr;   r;   r<   <lambda>G  s    z@test_groupby_apply_with_dropna_for_multi_index.<locals>.<lambda>rm   r    r"   r$   )r'   r(   r)   applytuplezipr+   r,   r.   r1   r2   )
r   dataselected_datalevelsr7   r[   rL   	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_inputT  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_includedr  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}|rR|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_indexr   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   s  |dv r|s|dkrd}| j tjj|d ttjjg dddd }t	
t	j|g dd	td
d}| }	t	j|g dd	d|	d< |dkrPdg}
n0|dkrbd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}t|||  }|d dd |d< |dkr|d dd |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 r#|dkr#|d j }|dkrdd |D }ndd |D }||d< |dkr:|jddid}|r:|d d }|j|
d|||d}t||| }t|| d S )N)idxminidxmaxr   z@GH#10694 - idxmin/max broken for categorical with observed=Falser   r   rH   N   sizer   rH   rG   r   rw   r   r   )r   rH   rG   r]   r]   r   r   r   x2corrwithr   r   T)observedr   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   5  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   7  s   $ Fr   r   r   r   )node
add_markerpytestmarkxfailr/   appendrandomchoicer'   r(   Categoricalr   copyfillnar   r   dropr)   getattrr   replacerm   tolistrenamer1   r   )requestreduction_funcr   r   r   r   msgrm   r7   	df_filledr   argsargs_filled	gb_filledr:   	gb_keepnarL   r;   r;   r<   test_categorical_reducers  st   





r  c                 C   s  |dkrd}| j tjj|dd ttjjg dddd }t	
t	j|g dd	td
d}t||}||d   d }	|dkrMttt|	}
n;|dkr|rk|r`|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}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   strictr   r   r   r   r   rw   r   r   r   cumcountngroupr   r   r   r   T)r   r   r   )rankdiff
pct_changeshiftint64) r   r   r   r   r   r/   r   r   r   r'   r(   r   r   r   isnullr-   rc   nuniqueilocr%   r   r)   r   r   rm   ravelndimnotnullger   r1   r   )r   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_transformersH  sJ   


"
r  methodheadtailc           
      C   s   t jg dd}ttj|g ddtt|d}|jdd|||d}t	||  }| d	kr7|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rf|d d d
 }|| }	t||	 d S )Nr   rx   r   r   r   r   Fr   r  r   rl   rH   )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   sl   t jg dd} ttj| g ddtt| d}|jddd}|	d	d
 }|
 }t|| d S )Nr   rx   r   r   r   r   Fr   c                 S      |   S Nr*   r   r;   r;   r<   r         z&test_categorical_agg.<locals>.<lambda>)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   sn   t jg dd} ttj| g ddtt| d}|jddd}|	d	d
 }|	d}t
|| d S )Nr   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   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
P5
