o
    TiF                     @   sd   d dl Zd dlZd dlm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)ChainedAssignmentError)	DataFrameNaTSeries
date_rangec                
   @   s`  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
dd Zdd Zdd Z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/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zejdd;d<gd=d> Zejd?d+d*gejd@g dAdBdC Z dDdE Z!dFS )GTestDataFrameInterpolatec                 C   s   t tdtdtdg}|jjdksJ | }t |d |d d |d g}t|| | }| }| }t	|| d S )Nz1+1jnanz2+2jcr         ?   )
r   complexfloatdtypekindinterpolatetmassert_series_equalZto_frameassert_frame_equal)selfserresexpecteddf r   k/var/www/html/evchargy.com/venv/lib/python3.10/site-packages/pandas/tests/frame/methods/test_interpolate.pytest_interpolate_complex   s   z1TestDataFrameInterpolate.test_interpolate_complexc                 C   s   t tddd}| }t|d< || }||}t|| |jd}|| }||jd}t|| ||d  }	||	 }
|||d  }t|
| d S )Nz
2012-01-01   )periodsr   z
US/Pacificr   )	r   r   copyr   r   r   assert_equaldtZtz_localize)r   frame_or_seriesorigr   r   r   Zser_tzZres_tzZexpected_tzZser_tdZres_tdZexpected_tdr   r   r   $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
   )r   pytestmarkZxfailnodeZ
add_markernpr   valuesr   r   r   shares_memoryZsqueeze)r   r!   using_array_managerrequestr)   objr"   r   r   r   r   test_interpolate_inplace5   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}d
}tjt|d | }W d    n1 s@w   Y  t|| |d j	}|d j
}|rnt||d j	sbJ t||d j	smJ nt||d j	ryJ t||d j	rJ tjt|d |jdd}W d    n1 sw   Y  |d u sJ t|| t|d j	|sJ t|d j	|sJ d S )Nr%   r      	   r%   r      r   abcdABCD      ?       @      @      @)r=   r@         "@rA   'DataFrame.interpolate with object dtypematchr:   r;   Tr&   )r   r+   r   listr   assert_produces_warningFutureWarningr   r   Z_valuesr,   r-   )	r   using_copy_on_writer   r   msgresultZcvaluesZdvaluesr   r   r   r   test_interp_basicF   sB   


z*TestDataFrameInterpolate.test_interp_basicc                 C   s   t ddtjdgdddtjgg dtdd}d}tjt|d	 |d
 }W d    n1 s2w   Y  |d
}d|j	d< d|j	d< t
|| d S )Nr%   r   r2   r3   r4   r6   r7   rB   rC   r:   r5   r5   r8   )r   r9   )r   r+   r   rE   r   rF   rG   	set_indexr   locr   )r   r   rI   rJ   r   r   r   r   &test_interp_basic_with_non_range_indexo   s   	


z?TestDataFrameInterpolate.test_interp_basic_with_non_range_indexc                 C   s.   t  }| }||usJ |}t|| d S )N)r   r   r   r   r   r   rJ   r   r   r   r   test_interp_empty   s
   z*TestDataFrameInterpolate.test_interp_emptyc                 C   sl   t ddtjdgdddtjgg dd}d}tjt|d |jd	d
 W d    d S 1 s/w   Y  d S )Nr%   r   r2   r3   r4   r8   r9   r:   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.rC   Znot_a_methodmethod)r   r+   r   r(   raises
ValueErrorr   r   r   rI   r   r   r   test_interp_bad_method   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}tjt	|d |d
 jdd}W d    n1 sGw   Y  tg dd
d}t|| d S )Nr=   r>   r@   r%   r2   r3   r4   r6   r7   r8   r<   )name:The 'downcast' keyword in Series.interpolate is deprecatedrC   inferdowncastr%   r   r5   r2   )
r   r+   r   rE   r   r   r   r   rF   rG   )r   r   rJ   r   rI   r   r   r   test_interp_combo   s    	z*TestDataFrameInterpolate.test_interp_comboc              	   C   s$  t ddtjdgdddtjgg dtdd	}d
}d}d}tjt|d% tjt	|d |j
dd W d    n1 s=w   Y  W d    n1 sLw   Y  tjt|d0 tjt	|d |d j
dd W d    n1 ssw   Y  W d    d S W d    d S 1 sw   Y  d S )Nr=   r>   r@   r%   r2   r3   r4   r6   r7   z'downcast must be either None or 'infer'=The 'downcast' keyword in DataFrame.interpolate is deprecatedrZ   rC   int64r\   r8   )r   r+   r   rE   r(   rU   rV   r   rF   rG   r   )r   r   rI   Zmsg2Zmsg3r   r   r    test_inerpolate_invalid_downcast   s.   	"z9TestDataFrameInterpolate.test_inerpolate_invalid_downcastc                 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.rC   r,   rS   )r   r+   r   rM   r(   rU   NotImplementedErrorr   rW   r   r   r   test_interp_nan_idx   s   "
"z,TestDataFrameInterpolate.test_interp_nan_idxc                 C   sV  t d 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 )Nscipyr%   r   r2   r      r%   r   r5   r            r8   r:   r:   
polynomialrT   ordergUUU@rL   gu:@)rj   r8   ZcubicrS   gv:@gb+hZ@ZnearestF)Zcheck_dtypeZ	quadraticg^r@g!g@ZslineargX ;@zeror>   )r(   importorskipr   r+   r   rM   r   r   rN   r   r   r   r   r   rJ   r   r   r   test_interp_various   s<   













z,TestDataFrameInterpolate.test_interp_variousc                 C   s  t d tddtjddtjdgg dd}|jd	d
}| }d|jd< d|jd< t	|| d}tj
t|d |jd	dd}W d    n1 sLw   Y  t	||tj |jdd
}| }|d |d< t	|| |jdd
}d|jd< d|jd< t	|| d S )Nrf   r%   r   r2   r   rg   rh   rl   ZbarycentricrS   r5   )r   r8      )r   r8   r`   rC   r[   )rT   r]   Zkroghr8   Zpchip      @)r(   rq   r   r+   r   r   r   rN   r   r   rF   rG   astypera   )r   r   rJ   r   rI   Z	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   rt   rg   r^   )r   r%   r   r5   r2   axis)r5   r%   )r   r   )r%   r5   r,   ry   rT   r   )
r   r+   r   r   r   rN   rv   float64r   r   rP   r   r   r   test_interp_rowwise  s(   	


z,TestDataFrameInterpolate.test_interp_rowwisezaxis_name, axis_numberrowsr   Zrows_0)idindexZindex_0columnsr%   Z	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   rt   r%   rg   )r   r   ri   )r   r%   r   r   linearrz   )r+   r   r   r{   r   r   r   )r   	axis_nameaxis_numberdatar   rJ   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   ri   @   )	r%   r   r5   r2   r5   r   r%   r   )r   r%   rx   )r   r+   r   r   )r   r   r   r   r   test_rowwise_alt:  s   z)TestDataFrameInterpolate.test_rowwise_altcheck_scipyFT)Z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      rc   g      )r5   r9   rm   r%   rn   )r   r+   r   r   r   rN   r   r   )r   r   r   rJ   r   r   r   r   test_interp_leading_nansD  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br	   dr   rg   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.rC   objectrx   )r   r+   r   r(   rU   	TypeErrorrv   r   )r   ry   r   rI   r   r   r   test_interp_raise_on_only_mixedT  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   rt   rc   r   r   r   rC   )r   r(   rU   r   r   rW   r   r   r   %test_interp_raise_on_all_object_dtypef  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}| }| }|rFt  |d jdd}W d    n1 s4w   Y  |d u s?J t|| n|d jdd}|d u sTJ t|| | }d}|rtjt	t
f|d	 |d jdd
d}W d    n1 sw   Y  |d u sJ t|| d S tjt	|d	 |d jdd
d}W d    n1 sw   Y  |d u sJ t||d d S )Nr   r=   r>   r@   r<   Tr&   rZ   rC   r[   )r'   r]   ra   )r   r+   r   r   r   Zraises_chained_assignment_errorr   r   rF   rG   r   rv   )r   rH   r   r   Zexpected_cowrJ   return_valuerI   r   r   r   test_interp_inplaceq  s8   
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)rT   ry   r'   T)r   r+   r   r   r   r   )r   rJ   r   r   r   r   r   test_interp_inplace_row  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	}d}tjt|d |jd d}W d    n1 sVw   Y  t|| tjt|d |ddg jd d}W d    n1 s}w   Y  t||ddg  d S )Nr%   r   r2   r^   r=   r>   r@   r<   r7   r{   r   ra   )r=   r>   r5   r@   r`   rC   r\   r9   r;   )	r   r+   r   arrayr   rF   rG   r   r   )r   r   r   rI   rJ   r   r   r   test_interp_ignore_all_good  s.   	z4TestDataFrameInterpolate.test_interp_ignore_all_goodc                 C   s|   d}t d|d}tjd||f}tj||dk < t|||d}|jddd	}|jddd
d}|d u s6J t|| d S )Nr   z
2014-01-01)startr   r   r   )r   r   r   r   timerz   T)ry   rT   r'   )	r   r+   randomZdefault_rngr   r   r   r   r   )r   r   idxr   r   rJ   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   rT   ry   )
r+   Zlinspacesinr   ZtileZarangeZreindexr   r   r   )r   r   r   xyr   rJ   r   r   r   r   test_interp_string_axis  s   
z0TestDataFrameInterpolate.test_interp_string_axis
multiblockrT   )ffillZ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}|r4tj|d< d|d< |dkr:|nd}t|||d}d| d}	tjt|	d |j	||d}
W d    n1 scw   Y  t
|
| d S )N)r%   r   r=   r>   r?   r@   g      @ru   g       @g      $@rA   g      >@rR   r;   r   r   r   rx   z"DataFrame.interpolate with method=z is deprecatedrC   r   )tdZ&mark_array_manager_not_yet_implementedr   r+   r   getattrr   rF   rG   r   r   )r   r/   ry   r   rT   r.   r   Zmethod2r   rI   rJ   r   r   r   test_interp_fillna_methods  s$   

z3TestDataFrameInterpolate.test_interp_fillna_methodsc                 C   s6   t  }| }|jdd}|d u sJ t|| d S )NTr&   )r   r   r   r   r   rr   r   r   r   test_interpolate_empty_df  s
   z2TestDataFrameInterpolate.test_interpolate_empty_dfN)"__name__
__module____qualname__r   r#   r1   rK   rO   rQ   rX   r_   rb   re   rs   rw   r|   r(   r)   Zparametrizeparamr   r   r   Zskip_if_no_scipyr   r   r   r   r   r   r   r   r   r   r   r   r   r   r      sN    )
'
	

 

r   )numpyr+   r(   Zpandas.errorsr   Zpandas.util._test_decoratorsutilZ_test_decoratorsr   Zpandasr   r   r   r   Zpandas._testingZ_testingr   r   r   r   r   r   <module>   s    