o
    dY                     @   s  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
mZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlm  m  mZ dd Z ej!"de#ej$gdd Z%d	d
 Z&dd Z'dd Z(dd Z)dd Z*dd Z+ej!"dedddej,edej-ge
.ej,edfedej-fgfg dej$e/ej0j,d e/ej0j-gdde
.e/ej0j,d fd e/ej0j-fgfe1dde1d de1ddge$e1e/ej0j- de1d de1e/ej0j-dge
.e1e/ej0j- de1d dfe1d de1e/ej0j-dfgfgd d! Z2d"d# Z3ej!"d$g d%d&fg d'd(d)fgd*d+ Z4ej!"d,d%e5d%ee5d%gej!"d-eegd.d/ Z6ej!"d0d dd%dd1ej7gej7 d dd%dd1gej7 d dd%dd1ej7ggd2d3 Z8d4d5 Z9ej!"d6d7g d8d9fd:g d;d<fgd=d> Z:d?d@ Z;dAdB Z<ej!"dCdd:gdDdE Z=dFdG Z>dHdI Z?ej!"dJdKdL dMdL fdNdL dOdL fgdPdQ Z@dRdS ZAej!"dTeBdUeBdUdV gdWdX ZCej!"dYg dZd[d\ ZDd]d^ ZEd_d` ZFej!"dadbdcidfi ddfdbdeiddfdbdfidgfgdhdi ZGej!"d0g djej!"dkdd%gdldm ZHej!"dng dodpdq ZIej!"drdsdL dtdL dudL dvdL gdwdx ZJej!"d0eeg dyeKdzeKd{eKd|ge$eKdzeKd{eKd|geg dygd}d~ ZLej!"ddededededggej!"de#ej$eegdd ZMdd ZNdd ZOej!"dg ddd ZPdd ZQej!"dddgej!"deejRfej$ejSfe#ejTfgdd ZUej!"dCg ddd ZVej!"ddg dgej!"d9d7d:gej!"dd7d:gdd ZWej!"dg dg dg dg dddgfg dg dg dg dg dfgdd ZXej!"dg dg dg dg dg dfg dg dg dg dg dfgdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd ZadS )    N)Categorical	DataFrameDatetimeIndexIndexIntervalIntervalIndexSeriesTimedeltaIndex	Timestampcut
date_rangeinterval_rangeisnaqcuttimedelta_rangeto_datetime)CategoricalDtypec                  C   s>   t jddd} t| ddd}t g d}tj||dd d S )	N   int64dtype   Flabels)   r   r   r   r   )check_dtype)nponesr   arraytmassert_numpy_array_equal)dataresultexpected r$   b/var/www/html/visualizacion-main/env/lib/python3.10/site-packages/pandas/tests/reshape/test_cut.pytest_simple   s   r&   funcc                 C   sn   | g d}t |ddd\}}t|d}|g d}t|dd}t|| t|t	
g d d S )N皙?ffffff?      @@ffffff#@ @   Tretbins)r   r   r   r      r   ordered)Mb?g>wa
@g!""@r-   )r   r   from_breaksroundtaker   r   assert_categorical_equalassert_almost_equalr   r   )r'   r!   r"   bins	intervalsr#   r$   r$   r%   	test_bins$   s   r=   c                  C   sr   t g d} t| dddd\}}t|d}t|dd}|g d}t	|| t
|t g d d S )	Nr)   r*   r+   r,   r-   r.   皙@r   Trightr1   r/   r3   )r   r   r   r2   r/   r   r   )r5   r?   @L@r-   )r   r   r   r   r6   r7   r   r8   r   r9   r:   r!   r"   r;   r<   r#   r$   r$   r%   
test_right1   s   rE   c                  C   sv   t g d} t| dddd\}}tj|ddd}|g d	}t|dd
}t	|| t
|t g d d S )Nr>   r   FTr@   r/   leftclosed)r   r   r   r2   r/   r   r   r3   )r)   r?   rB   rC   g%Ck#@)r   r   r   r   r6   r7   r8   r   r   r9   r:   rD   r$   r$   r%   test_no_right=   s   rI   c                  C   sn   t tdd} | }t td|jd}t|| tjt| j	d| jdd}t td|jd}t|| d S )Nr   r/   r;   T
categoriesr4      )
r   rangerM   r   r9   r   
from_codesr   appendcodes)cr#   r"   r$   r$   r%   test_bins_from_interval_indexI   s   rT   c                  C   sz   t g d} t| g dd}tg d}t|j| tg d|jd}t|j| t|j	t jg ddd d S )	N)	
                     ;   <   )r      #   F   rJ   ))r   r^   )r^   r_   )r_   r`   )rZ      2   )r   r   r2   int8r   )
r   r   r   r   from_tuplesr   assert_index_equalrM   r    rR   )agesrS   r#   r"   r$   r$   r%   )test_bins_from_interval_index_doc_exampleV   s    rg   c                  C   sV   d} t g d}tjt| d tddg|d W d    d S 1 s$w   Y  d S )Nz)Overlapping IntervalIndex is not accepted))r   rU   )r2   rX   )r      matchr   rN   rJ   )r   rd   pytestraises
ValueErrorr   )msgiir$   r$   r%   -test_bins_not_overlapping_from_interval_indexb   s
   "rp   c                  C   sN   d} g d}t jt| d t|g d W d    d S 1 s w   Y  d S )Nz bins must increase monotonicallyr(   ri   )皙?      ?r   rU   rk   rl   rm   r   rn   r!   r$   r$   r%   test_bins_not_monotonick   s
   "ru   zx, bins, expectedz
2017-12-31r/   periodsz
2018-01-01rK   r   r   r   r   rK   nsr   c                 C   s   t | |}t|j| d S N)r   r   re   rM   )xr;   r#   r"   r$   r$   r%   #test_bins_monotonic_not_overflowings   s   
4r|   c                  C   sV   d} g d}t jt| d t|g dg dd W d    d S 1 s$w   Y  d S )Nz9Bin labels must be one fewer than the number of bin edgesr(   ri   )r   r   rU   )foobarbazr   rs   rt   r$   r$   r%   test_wrong_num_labels   s
   "r   z
x,bins,msgr2   zCannot cut empty array)r   r2   r/         ?z#`bins` should be a positive integerc                 C   s>   t jt|d t| | W d    d S 1 sw   Y  d S )Nri   rs   )r{   r;   rn   r$   r$   r%   test_cut_corner   s   "r   argcut_funcc                 C   sB   d}t jt|d || d W d    d S 1 sw   Y  d S )Nz!Input array must be 1 dimensionalri   r2   )rk   rl   rm   )r   r   rn   r$   r$   r%   test_cut_not_1d_arg   s   "r   r!   r   c                 C   sD   d}t jt|d t| dd W d    d S 1 sw   Y  d S )Nz?cannot specify integer `bins` when input data contains infinityri   r/   rJ   rs   )r!   rn   r$   r$   r%   test_int_bins_with_inf   s   
"r   c                  C   sT   d} t g d| d}t|ddgdd}t tjtjtjdtjg| d}t|| d S )Nr{   )r   rK   r   r   namer   r   Fr   )r   r   r   nanr   assert_series_equal)r   serindexpr$   r$   r%   test_cut_out_of_range_more   s
   r   zright,breaks,closedT)MbP      ?r         ?r   rA   F)r   r   r   r   gjt?rF   c                 C   sJ   t t dddd}t|dd| d\}}tj||d}t|j| d S )Nr   g)\(?rq   r   T)r1   rA   rG   )	r   tilearanger   r   r6   r   re   rM   )rA   breaksrH   arrr"   r;   	ex_levelsr$   r$   r%   test_labels   s   r   c                  C   s4   d} t tjd| d}t|d}|j| ksJ d S )Nr}   d   r   r   )r   r   randomrandnr   r   )r   r   factorr$   r$   r%   #test_cut_pass_series_name_to_factor   s   
r   c                  C   s<   t ddd} t| ddd}tg d}t|j| d S )Nr   g\(\?{Gz?r   r2   	precision)g9̗Gg
ףp=
?g
ףp=
?gHzG?g
ףp=
?)r   r   r   r   r6   r   re   rM   )r   r"   r   r$   r$   r%   test_label_precision   s   r   r   c                 C   sZ   t ddd}t j|d d d< t|d| d}t |}t t|t j|}t|| d S )Nr   r   r   r/   r   r   )	r   r   r   r   asarraywherer   r   r:   )r   r   r"   r#   r$   r$   r%   test_na_handling   s   
r   c                  C   s   t d} t| dd}t j ddt jg}t| |}t||}t|}t|j	| |d t
dt jks6J |d t
t j dksCJ |d t
dt jksOJ |d t
t j dks\J d S )NrN   r   r   r2   r   r   r   )r   r   r   infr   r   r6   r   re   rM   r   )r!   data_serr;   r"   
result_ser
ex_uniquesr$   r$   r%   test_inf_handling  s   



r   c                  C   sB   t jd} t| g d}t|}| dk | dkB }t|| d S )Nr   rx   rK   r   )r   r   r   r   r   r   r    )r   r"   maskex_maskr$   r$   r%   test_cut_out_of_bounds  s
   r   zget_labels,get_expectedc                 C   s   | S rz   r$   r   r$   r$   r%   <lambda>*  s    r   c                 C   s"   t dgddg  ddg | ddS )NMediumr   SmallLargeTrL   )r   r   r$   r$   r%   r   +  s
    c                 C   s   t g d| S )Nr   r   r2   r   rP   r   r$   r$   r%   r   2  s    c                 C   s    t dgddg  ddg | S )Nr   r   r   r2   r   r   r$   r$   r%   r   3  s     c                 C   s>   g d}g d}g d}t ||| |d}t||| d S )N)r   rZ   rb   r   rb   r   rU   rV   ra      r`   )r   r   r   r   )r   r   r9   )
get_labelsget_expectedr;   r   r   r"   r$   r$   r%   test_cut_pass_labels&  s
   r   c                  C   sF   g d} g d}t | d|d}t | dt||ddd}t|| d S )Nr   )Goodr   Badr/   r   TrL   )r   r   r   r9   )r   r   r"   r   r$   r$   r%   test_cut_pass_labels_compat@  s
   r   r{   g      &@g    _Bc                 C   s   t | d d S )Nr2   r   )r{   r$   r$   r%   test_round_frac_just_worksJ  s   r   zval,precision,expected))g#]r/   i)眢#]@r/   v   )r   r2   r   )gݔ	~. ?r2   giUMu?c                 C   s   t j| |d}||ksJ d S )Nr   )tmod_round_frac)valr   r#   r"   r$   r$   r%   test_round_fracP  s   r   c                  C   st   t g d} t| d}tjddddd}|d  d8  < t tj|dd	g d
t	dd}t
|| d S )N)	r   r   r2   r/   r   r   rN         r/   r   r   r   )numgMb?rA   rG   )	r   r   r   r   r   r   r2   r2   r2   Tr3   )r   r   r   linspacer7   r   r6   r8   astypeCDTr   r   )r   r"   exp_binsr#   r$   r$   r%   test_cut_return_intervals_  s   
r   c                  C   sX   t td} t| ddd\}}t tjg ddddtdd}t	
|| d S )	Nr   r2   Tr0   )g~jthrr   r/   rA   rG   r3   )r   r   r   r   r   r6   repeatr   r   r   r   )r   r"   r;   r#   r$   r$   r%   test_series_ret_binsn  s   r   z
kwargs,msg
duplicatesdropzBin edges must be uniqueraiser}   z(invalid value for 'duplicates' parameterc                 C   s   g d}t tg dg dd}|d ur8tjt|d t||fi |  W d    d S 1 s1w   Y  d S t||fi | }t|t|}t	
|| d S )N)r   r2   r   rN   rU   rU   )r   r/   r   r   	   )abrS   deindexri   )r   r   r   rk   rl   rm   r   pduniquer   r   )kwargsrn   r;   valuesr"   r#   r$   r$   r%   test_cut_duplicates_biny  s   "r   )g      "@g      "g        lengthc                 C   s@   t | g| }t|ddd}t dg| tjd}t|| d S )Nr   Fr   r   r   )r   r   r   intpr   r   )r!   r   r   r"   r#   r$   r$   r%   test_single_bin  s   r   z#array_1_writeable,array_2_writeable))TT)TF)FFc                 C   sR   t ddd}| |j_t ddd}||j_t d}tt||t|| d S )Nr   r   rU   )r   r   flags	writeabler   r9   r   )array_1_writeablearray_2_writeablearray_1array_2hundred_elementsr$   r$   r%   test_cut_read_only  s   
r   convc                 C      t | S rz   )r
   vr$   r$   r%   r         c                 C   r   rz   )r   r   r$   r$   r%   r     r   c                 C   s
   t | S rz   )r   
datetime64r   r$   r$   r%   r     s   
 c                 C   s   t |  S rz   )r
   to_pydatetimer   r$   r$   r%   r     s    c                    s   t dt dg}g d}tttt|d t|d tt|d t|d gtdd} fd	d
|D }tt||d}t	
|| d S )Nz
2012-12-13z
2012-12-15)z
2012-12-12z
2012-12-14z
2012-12-16r   r   r2   Tr3   c                    s   g | ]} |qS r$   r$   ).0r   r   r$   r%   
<listcomp>  s    z%test_datetime_bin.<locals>.<listcomp>rJ   )r   r   r   r   r   r
   r   r   r   r   r   )r   r!   bin_datar#   r;   r"   r$   r   r%   test_datetime_bin  s   
	r   )
2013-01-01
2013-01-02
2013-01-03r   r   r   c                 C   sn   t | ddd\}}ttttdtdttdtdttdtdgtdd}tt|| d S )	Nr/   Tr0   2012-12-31 23:57:07.2000002013-01-01 16:00:002013-01-02 08:00:002013-01-03 00:00:00r3   )	r   r   r   r   r
   r   r   r   r   )r!   r"   _r#   r$   r$   r%   test_datetime_cut  s&   r   r;   z2013-01-01 04:57:07.200000z2013-01-01 21:00:00z2013-01-02 13:00:00z2013-01-03 05:00:00boxc              
   C   s   d}t tdd|d}t| ts|| } t|| }t tttd|dtd|dttd|dtd|dttd|dtd	|dgt	d
d}t
|| d S )Nz
US/Eastern20130101r/   rw   tzr   )r   r   r   r   Tr3   )r   r   
isinstanceintr   r   r   r
   r   r   r   r   )r;   r   r   sr"   r#   r$   r$   r%   test_datetime_tz_cut  s2   







r  c                  C   sP   d} t jt| d ttdddg dd W d    d S 1 s!w   Y  d S )Nz bins must be of datetime64 dtyperi   r   r/   rv   r   r2   r   rJ   )rk   rl   rm   r   r   rn   r$   r$   r%   test_datetime_nan_error  s   "r  c                  C   s\   t tdddtdddd} | j }t|tdg |  }t|tg d d S )	N20130102r   rv   r   r2   rJ   F)FTTTT)r   r   rM   r   r   r    r   r   )r"   r   r$   r$   r%   test_datetime_nan_mask$  s   
r  r   )NUTCz
US/Pacificc                 C   s`   t tdd| d}t|ddd\}}t||}t|| tg d}|| }t|| d S )N20180101r/   r   r2   Tr0   )z2017-12-31 23:57:07.200000z2018-01-02 00:00:00z2018-01-03 00:00:00)r   r   r   r   r   r   tz_localizere   )r   r   r"   result_binsr#   expected_binsr$   r$   r%   test_datetime_cut_roundtrip0  s   

r  c                  C   sT   t tddd} t| ddd\}}t| |}t|| tg d}t|| d S )N1dayr/   rv   r2   Tr0   )z0 days 23:57:07.200000z2 days 00:00:00z3 days 00:00:00)r   r   r   r   r   r	   re   )r   r"   r  r#   r  r$   r$   r%   test_timedelta_cut_roundtrip@  s   
r  rN   r   zbox, comparec                 C   sJ   |g dd }|g dd }t || dd}t || dd}||| d S )N)r   r   r   r   r   rU   )FTTFTr   )r   r   )r;   r   comparedata_expecteddata_resultr#   r"   r$   r$   r%   test_cut_bool_coercion_to_intN  s
   r  )r}   r   Tc                 C   sN   t d}d}tjt|d t|d| d W d    d S 1 s w   Y  d S )Nr   zJBin labels must either be False, None or passed in as a list-like argumentri   r   r   )rO   rk   rl   rm   r   )r   r   rn   r$   r$   r%   test_cut_incorrect_labels`  s
   "r  )r   r   rV   include_lowestc                 C   sb   t jjddddt}t j|d d d< ttj|dd| ||d}t|| ||d}t	
|| d S )	Nr   rU   rb   )sizer2   Int64r   )rA   r  )r   r   randintr   floatr   r   r   r   r   r9   )r;   rA   r  r   r"   r#   r$   r$   r%   test_cut_nullable_integeri  s   r  z3data, bins, labels, expected_codes, expected_labels)rV         )rh      r^   ra   )ABr  )r   r   r   r  r   )r   r/   r   r   r2   r   rN   r   )r2   r   r   r2   )r2   r   r   r   c                 C   0   t | ||dd}tj||dd}t|| d S NFr;   r   r4   rL   r   r   rP   r   r9   r!   r;   r   expected_codesexpected_labelsr"   r#   r$   r$   r%   test_cut_non_unique_labelsv  
   	r)  )Cr   r  )r/   r   r   r2   c                 C   r"  r#  r%  r&  r$   r$   r%   test_cut_unordered_labels  r*  r,  c                  C   sN   d} t jt| d tddgg ddd W d    d S 1 s w   Y  d S )Nz.'labels' must be provided if 'ordered = False'ri   r   r/   r   F)r;   r4   rs   r  r$   r$   r%   3test_cut_unordered_with_missing_labels_raises_error  s   "r-  c                  C   sT   t g d} t g d}t g d}t| ||dd}t g ddd}t|| d S )	N)r   r2   r/   r   r   )r   r2   r   rN   )r   r   rS   Fr$  )r   r   r   r   rS   categoryr   )r   r   r   r   )r  r;   r   r"   r#   r$   r$   r%   %test_cut_unordered_with_series_labels  s   r/  c                  C   s|   t dtjdddi} dd tdddD }td t| jtdd	dd|d
| d< W d    d S 1 s7w   Y  d S )Nvaluer   r   ra   c                 S   s   g | ]}| d |d  qS )z - r   r$   )r   ir$   r$   r%   r     s    z(test_cut_no_warnings.<locals>.<listcomp>rU   Fi   )rA   r   group)	r   r   r   r  rO   r   assert_produces_warningr   r0  )dfr   r$   r$   r%   test_cut_no_warnings  s
    "r6  c                  C   sz   t tddddgd tddddtddddg g ddd	j } t g dg dd
}t|g ddd}t||  d S )Nr   r2   rA   rG   r/   r   )r   r   r2   r/   r   r.  )r   r   r   r  T)r;   r  )r   r   cat
as_orderedr   r   r   )r#   r  r"   r$   r$   r%   .test_cut_with_duplicated_index_lowest_included  s   r9  c                  C   s  t tdd} t| d d}t| d d}t||d}tjt	dddd	t	dd
dd	t	d
ddd	t	dddd	t	dddd	t	dddd	t	dddd	t	dddd	t	dddd	t	dddd	g
dd}tdgd t
jgd  t
jgd dgd  d|d}t|| d S )Nr   r   rU   r   )12gMbXg#@rA   rG   g3@g33333=@gC@g     H@g33333M@g33333SQ@gS@gfffffFV@c   Tr3   r   )r   rO   r   value_countsheadtailr   r   CategoricalIndexr   r   r   r   assert_frame_equal)r   ser1ser2r"   r   r#   r$   r$   r%   *test_cut_with_nonexact_categorical_indices  s,   .rD  c                  C   sV   t dft dft dfg} tg dg d| d}tjg d| dd	}t|| d S )
NrU   ra   r   )r2   r   rN   )r   r/   r   r   )r;   r   r   Tr3   )r
   r   r   rP   r   r9   )r   r"   r#   r$   r$   r%   $test_cut_with_timestamp_tuple_labels  s   rE  c                  C   sP   t tdtddd} tttdg| d}tjdg| dd	}t|j| d S )
Nz
2022-02-25z
2022-02-271D)freqz
2022-02-26rJ   r   Tr3   )	r   r
   r   r   r   rP   r   r9   r   )r;   r"   r#   r$   r$   r%   $test_cut_bins_datetime_intervalindex  s   rH  c               	   C   sd   t dddddtjddgdd	} g d
}t|}t tjg d|dd}t| |d}t	|| d S )Nr   r   r2   r/   r   rN   r   r  r   r!  )rK   r   r   r   r   rK   r2   r/   Tr3   rJ   )
r   r   NAr   r6   r   rP   r   r   r   )seriesr;   r<   r#   r"   r$   r$   r%   test_cut_with_nullable_int64  s   
rK  )bnumpyr   rk   pandasr   r   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   pandas._testing_testingr   pandas.api.typesr   r   pandas.core.reshape.tilecorereshaper   r   r&   markparametrizelistr   r=   rE   rI   rT   rg   rp   ru   minmaxrd   iinfor   timedelta64r|   r   r   eyer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r   r9   assert_equalr  r  r  r)  r,  r-  r/  r6  r9  rD  rE  rH  rK  r$   r$   r$   r%   <module>   s   H
	
"






2
"


		
	 


	



		

	



	

  
	  
	
		