o
    d9                     @   sX   d dl Zd dlZd dlm  mZ d dlmZm	Z	m
Z
mZ d dlmZ G dd dZdS )    N)	DataFrameNaTSeries
date_rangec                
   @   sB  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
ejdd Zejdd Zdd Zejdejddddejddddejddd dgd!d" Zd#d$ Zejd%d&ejd'ejd(gd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zejdd7d8gd9d: Zejd;g d<d=d> Zd?S )@TestDataFrameInterpolatec                 C   s   t tddd}| }t|d< || }||}t|| |jd}|| }||jd}t|| ||d  }	||	 }
|||d  }t|
| d S )Nz
2012-01-01   )periods   z
US/Pacificr   )	r   r   copyr   interpolatetmassert_equaldttz_localize)selfframe_or_seriesorigserresexpectedser_tzres_tzexpected_tzser_tdres_tdexpected_td r   p/var/www/html/visualizacion-main/env/lib/python3.10/site-packages/pandas/tests/frame/methods/test_interpolate.py$test_interpolate_datetimelike_values   s   z=TestDataFrameInterpolate.test_interpolate_datetimelike_valuesc                 C   s   |r|t u rtjjdd}|j| |dtjdg}|j}|j	dd |g d}t
|| t||js9J | d dksCJ d S )	Nz'.values-based in-place check is invalid)reason   r	   Tinplace)r          ?r	   r#   )r   pytestmarkxfailnode
add_markernpnanvaluesr   r   r   shares_memorysqueeze)r   r   using_array_managerrequestr%   objr   r   r   r   r   test_interpolate_inplace&   s   z1TestDataFrameInterpolate.test_interpolate_inplacec                 C   s*  t ddtjdgdddtjgg dtdd}t g dg d	g dtdd}| }t|| |d
 j}|d j}|rUt	||d
 jsIJ t	||d jsTJ nt	||d
 jr`J t	||d jrkJ |jdd}|d u swJ t|| t	|d
 j|sJ t	|d j|sJ d S )Nr    r	      	   r    r	      r   abcdABCD      ?       @      @      @)r=   r@         "@rA   r:   r;   Tr!   )
r   r)   r*   listr   r   assert_frame_equal_valuesr+   r,   )r   using_copy_on_writedfr   resultcvaluesdvaluesr   r   r   r   test_interp_basic7   s8   

z*TestDataFrameInterpolate.test_interp_basicc                 C   sj   t ddtjdgdddtjgg dtdd}|d }|d}d	|jd
< d|jd< t|| d S )Nr    r	   r2   r3   r4   r6   r7   r:   r5   r5   r8   )r   r9   )	r   r)   r*   rB   	set_indexr   locr   rC   r   rF   rG   r   r   r   r   &test_interp_basic_with_non_range_index]   s   	


z?TestDataFrameInterpolate.test_interp_basic_with_non_range_indexc                 C   s.   t  }| }||usJ |}t|| d S )N)r   r   r   rC   rN   r   r   r   test_interp_emptym   s
   z*TestDataFrameInterpolate.test_interp_emptyc                 C   sr   t ddtjdgdddtjgg dtdd}d}tjt|d	 |jd
d W d    d S 1 s2w   Y  d S )Nr    r	   r2   r3   r4   r6   r7   a  method must be one of \['linear', 'time', 'index', 'values', 'nearest', 'zero', 'slinear', 'quadratic', 'cubic', 'barycentric', 'krogh', 'spline', 'polynomial', 'from_derivatives', 'piecewise_polynomial', 'pchip', 'akima', 'cubicspline'\]. Got 'not_a_method' instead.matchnot_a_methodmethod)r   r)   r*   rB   r$   raises
ValueErrorr   r   rF   msgr   r   r   test_interp_bad_methodu   s   	"z/TestDataFrameInterpolate.test_interp_bad_methodc                 C   s   t ddtjdgdddtjgg dtdd	}|d
  }tg dd
d}t|| |d
 jdd}tg dd
d}t|| d S )Nr=   r>   r@   r    r2   r3   r4   r6   r7   r8   r<   )nameinferdowncastr    r	   r5   r2   )r   r)   r*   rB   r   r   r   assert_series_equalrN   r   r   r   test_interp_combo   s   	z*TestDataFrameInterpolate.test_interp_comboc                 C   sp   t ddtjdgtjdddgd}|d}d}tjt|d |jd	d
 W d    d S 1 s1w   Y  d S )Nr    r	   r2   r5   r8   r9   r8   zkInterpolation with NaNs in the index has not been implemented. Try filling those NaNs before interpolating.rQ   r+   rT   )r   r)   r*   rL   r$   rV   NotImplementedErrorr   rX   r   r   r   test_interp_nan_idx   s   "
"z,TestDataFrameInterpolate.test_interp_nan_idxc                 C   sL  t ddtjddtjdgg dd}|d}| }|jd	dd
}d|jd< d|jd< t|| |jdd}d|jd< d|jd< t|| |jdd}d|jd< d|jd< tj||dd |jdd}d|jd< d|jd< t|| |jdd}d|jd< d|jd< t|| |jdd}d|jd< d|jd< tj||dd d S )Nr    r	   r2   r      r    r	   r5   r            r8   r:   r:   
polynomialrU   ordergUUU@rK   gu:@)rh   r8   cubicrT   gv:@gb+hZ@nearestF)check_dtype	quadraticg^r@g!g@slineargX ;@zeror>   )	r   r)   r*   rL   r
   r   rM   r   rC   r   rF   r   rG   r   r   r   test_interp_various   s:   












z,TestDataFrameInterpolate.test_interp_variousc                 C   s   t ddtjddtjdgg dd}|jdd	}| }d
|jd< d|jd< t|| |jddd}t||tj	 |jdd	}| }|d |d< t|| |jdd	}d
|jd< d|jd< t|| d S )Nr    r	   r2   r   re   rf   rj   barycentricrT   r5   )r	   r8      )r   r8   r\   )rU   r^   kroghr8   pchip      @)
r   r)   r*   r   r
   rM   r   rC   astypeint64)r   rF   rG   r   	expectedkr   r   r   test_interp_alt_scipy   s$   



z.TestDataFrameInterpolate.test_interp_alt_scipyc                 C   s   t ddtjdgdddtjgtjdddgdtjddgg dd	}|jdd
}| }d|jd< d|jd< d|jd< |d tj|d< t	|| |jddd}t	|| |jdd
}| }t	|| d S )Nr    r	   r2   r5   r   rw   re   r_   )r   r    r	   r5   r2   axis)r5   r    )r   r	   )r    r5   r+   r   rU   r   )
r   r)   r*   r   r
   rM   r{   float64r   rC   rN   r   r   r   test_interp_rowwise   s(   	


z,TestDataFrameInterpolate.test_interp_rowwisezaxis_name, axis_numberrowsr   rows_0)idindexindex_0columnsr    	columns_1c                 C   sZ   dt jdgdt jdgg dd}t|t jd}|j|dd	}|j|dd	}t|| d S )
Nr   rw   r    re   )r	   r   rg   )r   r    r	   dtypelinearr   )r)   r*   r   r   r   r   rC   )r   	axis_nameaxis_numberdatarF   rG   r   r   r   r   test_interp_axis_names   s
    
z/TestDataFrameInterpolate.test_interp_axis_namesc              
   C   s:   t dddtjddtjtjdg	g dd}|jdd	 d S )
Nr         ?r=   r2   rg   @   )	r    r	   r5   r2   r5   r	   r    r   )r   r    r   )r   r)   r*   r   )r   rF   r   r   r   test_rowwise_alt  s   z)TestDataFrameInterpolate.test_rowwise_altcheck_scipyFT)marksc                 C   sv   t tjtjdddgtjddtjdgd}| }| }d|jd	< t|| |r9|jd
dd}t|| d S d S )Nr   g      ?r   g      rb   g      )r5   r9   rk   r    rl   )r   r)   r*   r   r
   rM   r   rC   )r   r   rF   rG   r   r   r   r   test_interp_leading_nans  s   $
z1TestDataFrameInterpolate.test_interp_leading_nansc                 C   s   t ddtjdgg dtjdddgtjtjddgg dd	}d
}tjt|d |dj|d W d    d S 1 s<w   Y  d S )Nr    r	   r2   )abcdr   re   r3   r_   )r8   r9   r:   r;   EvCannot interpolate with all object-dtype columns in the DataFrame. Try setting at least one column to a numeric dtype.rQ   objectr   )r   r)   r*   r$   rV   	TypeErrorr{   r   )r   r   rF   rY   r   r   r   test_interp_raise_on_only_mixed(  s   
"z8TestDataFrameInterpolate.test_interp_raise_on_only_mixedc                 C   sZ   t g dg dddd}d}tjt|d |  W d    d S 1 s&w   Y  d S )N)r    r	   r5   )r2   r   rw   rb   r   r   r   rQ   )r   r$   rV   r   r   rX   r   r   r   %test_interp_raise_on_all_object_dtype:  s   
"z>TestDataFrameInterpolate.test_interp_raise_on_all_object_dtypec                 C   s   t dddtjdgi}t dg di}| }| }|d jdd}|d u s)J |r2t|| nt|| | }|d jddd	}|d u sKJ |rUt|| d S t||d
 d S )Nr   r=   r>   r@   r<   Tr!   r\   )r"   r^   r|   )r   r)   r*   r
   r   r   rC   r{   )r   rE   rF   r   expected_cowrG   return_valuer   r   r   test_interp_inplaceE  s   z,TestDataFrameInterpolate.test_interp_inplacec                 C   s^   t g dtjdddgg dd}|jddd	d
}|jdddd
}|d u s'J t|| d S )Nr<   r>   r?   r@   )r5   r	   r	   r	   )r   r   r   r   r    F)rU   r   r"   T)r   r)   r*   r   r   rC   )r   rG   r   r   r   r   r   test_interp_inplace_rowY  s   z0TestDataFrameInterpolate.test_interp_inplace_rowc                 C   s   t ddtjdgg dddtjdgg dd	}t tjg dd
dtjg dddtjg dd
dtjg dd
dd	}|jd d}t|| |ddg jd d}t||ddg  d S )Nr    r	   r2   r_   r=   r>   r@   r<   r7   r   r   r|   )r=   r>   r5   r@   r]   r9   r;   )r   r)   r*   arrayr   r   rC   rt   r   r   r   test_interp_ignore_all_goodc  s$   	z4TestDataFrameInterpolate.test_interp_ignore_all_goodc                 C   st   d}t d|d}tj||}tj||dk < t|||d}|jddd}|jddd	d
}|d u s2J t|| d S )Nr   z
2014-01-01)startr   r   )r   r   r   r   timer   T)r   rU   r"   )	r   r)   randomrandr*   r   r   r   rC   )r   r   idxr   r   rG   r   r   r   r   test_interp_time_inplace_axis}  s   z6TestDataFrameInterpolate.test_interp_time_inplace_axis)r   r   )r   r    c                 C   sl   t ddd}t |}tt |dt d|dj|d d}|jd	|d
}|jd	|d
}t	|| d S )Nr   d   i  )
   r    r   )r   r   r   gGz?)r   r   rU   r   )
r)   linspacesinr   tilearangereindexr   r   rC   )r   r   r   xyrF   rG   r   r   r   r   test_interp_string_axis  s   
z0TestDataFrameInterpolate.test_interp_string_axisrU   )ffillbfillpadc              	   C   s~   |r|dv rt | tddddtjdgdddtjdd	gddd
tjtjdgd}|j||d}|j||d}t|| d S )N)r    r   r=   r>   r?   r@   g      @rz   g       @g      $@rA   g      >@)r8   r9   r:   r   r   )	td&mark_array_manager_not_yet_implementedr   r)   r*   fillnar   r   rC   )r   r/   r   rU   r.   rF   r   rG   r   r   r   test_interp_fillna_methods  s   
z3TestDataFrameInterpolate.test_interp_fillna_methodsN)__name__
__module____qualname__r   r1   rJ   rO   rP   rZ   ra   rd   r   skip_if_no_scipyru   r~   r   r$   r%   parametrizeparamr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      sJ    &

&

	



r   )numpyr)   r$   pandas.util._test_decoratorsutil_test_decoratorsr   pandasr   r   r   r   pandas._testing_testingr   r   r   r   r   r   <module>   s    