o
    �¨Êh˜N  ã                   @   sp   d dl Zd dlZd dlm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)Úusing_pyarrow_string_dtype)ÚChainedAssignmentError)Ú	DataFrameÚNaTÚSeriesÚ
date_rangec                   @   sè  e Zd Zdd„ Zdd„ Zdd„ Zejje	ƒ dd�d	d
„ ƒZ
ejje	ƒ dd�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 d.¡d/�g¡d0d1„ ƒZd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ Zd:d;„ Zd<d=„ Z ej dd>d?g¡d@dA„ ƒZ!ej dBd-d,g¡ej dCg dD¢¡dEdF„ ƒƒZ"dGdH„ Z#dIdJ„ Z$ej dKdLdMejdNe dO¡d/�ejdPe dO¡d/�g¡dQdR„ ƒZ%ej dKg dS¢¡dTdU„ ƒZ&dVS )WÚ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_equalÚto_frameÚassert_frame_equal)ÚselfÚserÚresÚexpectedÚdf© r   ú]/var/www/html/env/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ÚdtÚtz_localize)r   Úframe_or_seriesÚorigr   r   r   Úser_tzÚres_tzÚexpected_tzÚser_tdÚres_tdÚ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�}| |¡ |dtjdgƒ}|j}|jdd� |g d¢ƒ}t	 
||¡ t ||j¡s8J ‚| ¡ d dksBJ ‚d S )	Nz'.values-based in-place check is invalid©Úreasoné   r   T©Úinplace)r/   r   r   r   )r   ÚpytestÚmarkÚxfailÚapplymarkerÚnpr	   Úvaluesr   r   r!   Úshares_memoryÚsqueeze)r   r$   Úusing_array_managerÚrequestr3   Úobjr%   r   r   r   r   Útest_interpolate_inplace7   s   
z1TestDataFrameInterpolate.test_interpolate_inplacez#interpolate doesn't work for stringr-   c           	      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	¡r„J ‚tjt|d�� |jdd�}W d   ƒ n1 sœw   Y  |d u s§J ‚t ||¡ t |d j	|¡s¸J ‚t |d j	|¡sÃJ ‚d S )Nr/   r   é   é	   ©r/   r   é   r   Úabcd©ÚAÚBÚCÚD©ç      ð?ç       @ç      @ç      @)rI   rL   ç      "@rM   ú'DataFrame.interpolate with object dtype©ÚmatchrF   rG   Tr0   )r   r6   r	   Úlistr   Úassert_produces_warningÚFutureWarningr   r   Ú_valuesr7   r8   )	r   Úusing_copy_on_writer   r   ÚmsgÚresultÚcvaluesÚdvaluesr   r   r   r   Útest_interp_basicH   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}|stnd }tj||d	�� | d
¡ ¡ }W d   ƒ n1 s8w   Y  | d
¡}d|j	d< d|j	d< t 
||¡ d S )Nr/   r   r>   r?   r@   rB   rC   rN   rO   rF   rA   ©rA   rD   )r   rE   )r   r6   r	   rQ   rS   r   rR   Ú	set_indexr   Úlocr   )r   Úusing_infer_stringr   rV   ÚwarningrW   r   r   r   r   Ú&test_interp_basic_with_non_range_indext   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   rW   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   r>   r?   r@   ©rD   rE   rF   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.rO   Únot_a_method©Úmethod)r   r6   r	   r2   ÚraisesÚ
ValueErrorr   ©r   r   rV   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 )NrI   rJ   rL   r/   r>   r?   r@   rB   rC   rD   rH   )Únameú:The 'downcast' keyword in Series.interpolate is deprecatedrO   Úinfer©Údowncast©r/   r   rA   r>   )
r   r6   r	   rQ   r   r   r   r   rR   rS   )r   r   rW   r   rV   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 s‹w   Y  d S )NrI   rJ   rL   r/   r>   r?   r@   rB   rC   z'downcast must be either None or 'infer'ú=The 'downcast' keyword in DataFrame.interpolate is deprecatedrl   rO   Úint64rn   rD   )r   r6   r	   rQ   r2   rg   rh   r   rR   rS   r   )r   r   rV   Úmsg2Ú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   r>   rA   ©rD   rE   rD   zkInterpolation with NaNs in the index has not been implemented. Try filling those NaNs before interpolating.rO   r7   re   )r   r6   r	   r\   r2   rg   ÚNotImplementedErrorr   ri   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   r>   r   é   ©r/   r   rA   r   é   é   é   ©rD   rF   rF   Ú
polynomial©rf   Úorderg¥ÝÇUUU@r[   gáu:±@)r~   rD   Úcubicre   gv‚ä:†@g„b+hZ@ÚnearestF)Úcheck_dtypeÚ	quadraticgå^¢r’@g!ëg¹…�@ÚslineargXè ;±@ÚzerorJ   )r2   Úimportorskipr   r6   r	   r\   r    r   r]   r   r   ©r   r   r   rW   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 )Nrz   r/   r   r>   r   r{   r|   r€   Úbarycentricre   rA   )r   rD   é   )r   rD   rr   rO   rm   )rf   ro   ÚkroghrD   Úpchipç      @)r2   rŠ   r   r6   r	   r   r    r]   r   r   rR   rS   Úastypers   )r   r   rW   r   rV   Ú	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   r>   rA   r   rŽ   r{   rp   )r   r/   r   rA   r>   ©Úaxis)rA   r/   )r   r   )r/   rA   r7   ©r–   rf   r   )
r   r6   r	   r   r    r]   r’   Úfloat64r   r   ra   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   rŽ   r/   r{   )r   r   r}   )r   r/   r   ©r   Úlinearr—   )r6   r	   r   r˜   r   r   r   )r   Ú	axis_nameÚaxis_numberÚdatar   rW   r   r   r   r   Útest_interp_axis_names2  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   ç      à?rI   r>   r}   é@   )	r/   r   rA   r>   rA   r   r/   r   éÿÿÿÿ)r   r/   r•   )r   r6   r	   r   )r   r   r   r   r   Útest_rowwise_altC  s   þÿz)TestDataFrameInterpolate.test_rowwise_altÚcheck_scipyFTrz   )Ú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      Àéüÿÿÿrw   g      À)rA   rE   r�   r/   r‚   )r   r6   r	   r   r    r]   r   r   )r   r«   r   rW   r   r   r   r   Útest_interp_leading_nansM  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   r>   )ÚaÚbr
   Údr   r{   r?   rp   )rD   rE   rF   rG   ÚEúvCannot interpolate with all object-dtype columns in the DataFrame. Try setting at least one column to a numeric dtype.rO   Úobjectr•   )r   r6   r	   r2   rg   Ú	TypeErrorr’   r   )r   r–   r   rV   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   rA   )r>   r   rŽ   rw   rµ   r¡   r´   rO   )r   r2   rg   r¶   r   ri   r   r   r   Ú%test_interp_raise_on_all_object_dtypeo  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+tjt	dd	�� |d jdd�}W d   ƒ n1 s`w   Y  |d u skJ ‚t ||¡ | ¡ }d
}|r©tjt	t
f|d	�� |d jddd�}W d   ƒ n1 s–w   Y  |d u s¡J ‚t ||¡ d S tjt	|d	�� |d jddd�}W d   ƒ n1 sÄw   Y  |d u sÏJ ‚t || d¡¡ d S )Nr°   rI   rJ   rL   rH   Tr0   zinplace methodrO   rl   rm   )r1   ro   rs   )r   r6   r	   r    r   Úraises_chained_assignment_errorr   r   rR   rS   r   r’   )r   rU   r   r   Úexpected_cowrW   Úreturn_valuerV   r   r   r   Útest_interp_inplacez  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 )NrH   rJ   rK   rL   )rA   r   r   r   )r°   r±   r
   r¢   r/   F)rf   r–   r1   T)r   r6   r	   r   r   r   )r   rW   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   r>   rp   rI   rJ   rL   rH   rC   r˜   r¡   rs   )rI   rJ   rA   rL   rr   rO   rn   rE   rG   )	r   r6   r	   Úarrayr   rR   rS   r   r   )r   r   r   rV   rW   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   Útimer—   T)r–   rf   r1   )	r   r6   ÚrandomÚdefault_rngr	   r   r   r   r   )r   r   Úidxr¥   r   rW   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®Gázð?)rŸ   r¢   ©rf   r–   )
r6   ÚlinspaceÚsinr   ÚtileÚarangeÚreindexr   r   r   )r   r£   r¤   ÚxÚyr   rW   r   r   r   r   Útest_interp_string_axisÏ  s   
ÿþz0TestDataFrameInterpolate.test_interp_string_axisÚ
multiblockrf   )Ú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œƒ}|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Ÿ   rI   rJ   rK   rL   g      @r‘   g       @g      $@rM   g      >@rc   rG   r³   rÔ   rÒ   r•   z"DataFrame.interpolate with method=z is deprecatedrO   rÈ   )ÚtdÚ&mark_array_manager_not_yet_implementedr   r6   r	   Úgetattrr   rR   rS   r   r   )r   r;   r–   rÑ   rf   r:   r   Úmethod2r   rV   rW   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 )NTr0   ©r   r    r   r   r   r‹   r   r   r   Útest_interpolate_empty_df÷  s
   z2TestDataFrameInterpolate.test_interpolate_empty_dfc                 C   sX   t dg d¢i|d�}| ¡ }|jdd�}t dg d¢idd�}t ||¡ t ||¡ d S )Nr°   ©r/   NNNrA   r¡   r   ©Úlimit©r/   r   rJ   NrA   ÚFloat64rÚ   )r   Úany_int_ea_dtyper   r%   rW   r   r   r   r   Útest_interpolate_eaÿ  s   z,TestDataFrameInterpolate.test_interpolate_ear   rà   ÚFloat32zfloat32[pyarrow]Úpyarrowúfloat64[pyarrow]c                 C   sX   t dg d¢i|d�}| ¡ }|jdd�}t dg d¢i|d�}t ||¡ t ||¡ d S )Nr°   rÜ   r¡   r   rÝ   rß   rÚ   )r   r   r   r%   rW   r   r   r   r   Útest_interpolate_ea_float  s   z2TestDataFrameInterpolate.test_interpolate_ea_float)rs   Úuint64Úint32Úint16Úint8Úuint32Úuint16Úuint8c                 C   sR   t  d¡ tdg d¢i|d d�}|jdd�}tdg d¢id	d�}t ||¡ d S )
Nrä   r°   rÜ   z	[pyarrow]r¡   r   rÝ   rß   rå   )r2   rŠ   r   r   r   r   )r   r   r   rW   r   r   r   r   Útest_interpolate_arrow  s
   
z/TestDataFrameInterpolate.test_interpolate_arrowN)'Ú__name__Ú
__module__Ú__qualname__r   r,   r=   r2   r3   r4   r   rZ   r`   rb   rj   rq   rv   ry   rŒ   r”   r™   ÚparametrizeÚparamr¦   rª   rÕ   Ú
skip_if_nor¯   r·   r¸   r¼   r½   r¿   rÅ   rÐ   rÙ   rÛ   râ   ræ   rî   r   r   r   r   r      sx    ÿ
)ÿ

'ýþ
	
ÿ
!

	üþ
		þr   )Únumpyr6   r2   Úpandas._configr   Úpandas.errorsr   Úpandas.util._test_decoratorsÚutilÚ_test_decoratorsrÕ   Úpandasr   r   r   r   Úpandas._testingÚ_testingr   r   r   r   r   r   Ú<module>   s    