o
    Û­j¹O  ã                   @   s|   d dl Zd dlZd dlm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_string_dtype)ÚWARNING_CHECK_DISABLED)ÚChainedAssignmentError)Ú	DataFrameÚNaTÚSeriesÚ
date_rangec                   @   sÖ  e Zd Zdd„ Zdd„ Zdd„ Z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   úh/var/www/html/CropPilot/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Ú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)r0   r   r   r   )r   ÚpytestÚmarkÚxfailÚapplymarkerÚnpr
   Úvaluesr   r   r"   Úshares_memoryÚsqueeze)r   r%   Úusing_array_managerÚrequestr4   Úobjr&   r   r   r   r   Útest_interpolate_inplace8   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œƒ}|rT|r.d
nd}d|› d�}tjt|d�� | ¡  W d   ƒ d S 1 sMw   Y  d S d}tj	t
|d�� | ¡ }W d   ƒ n1 slw   Y  t ||¡ |d j}|d j}	|ršt ||d j¡sŽJ ‚t |	|d j¡s™J ‚nt ||d j¡r¥J ‚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 )Nr0   r   é   é	   ©r0   r   é   r   Úabcd©ÚAÚBÚCÚD©ç      ð?ç       @ç      @ç      @)rJ   rM   ç      "@rN   ÚstrÚobjectz[Cc]annot interpolate with z dtype©Úmatchú'DataFrame.interpolate with object dtyperG   rH   Tr1   )r   r7   r
   Úlistr3   ÚraisesÚ	TypeErrorr   r   Úassert_produces_warningÚFutureWarningr   Ú_valuesr8   r9   )r   Úusing_copy_on_writeÚusing_infer_stringr   r   r   ÚmsgÚresultÚcvaluesÚdvaluesr   r   r   r   Útest_interp_basicI   sT   üÿüÿ

ÿþ
ÿ

ÿz*TestDataFrameInterpolate.test_interp_basicz#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œƒ}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 )Nr0   r   r?   r@   rA   rC   rD   rS   rQ   rG   rB   ©rB   rE   )r   rF   )r   r7   r
   rT   rX   r   rW   Ú	set_indexr   Úlocr   )r   r[   r   r\   Úwarningr]   r   r   r   r   Ú&test_interp_basic_with_non_range_indexy   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   r]   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 )Nr0   r   r?   r@   rA   ©rE   rF   rG   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.rQ   Únot_a_method©Úmethod)r   r7   r
   r3   rU   Ú
ValueErrorr   ©r   r   r\   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 )NrJ   rK   rM   r0   r?   r@   rA   rC   rD   rE   rI   )Únameú:The 'downcast' keyword in Series.interpolate is deprecatedrQ   Úinfer©Údowncast©r0   r   rB   r?   )
r   r7   r
   rT   r   r   r   r   rW   rX   )r   r   r]   r   r\   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 )NrJ   rK   rM   r0   r?   r@   rA   rC   rD   z'downcast must be either None or 'infer'ú=The 'downcast' keyword in DataFrame.interpolate is deprecatedrp   rQ   Úint64rr   rE   )r   r7   r
   rT   r3   rU   rl   r   rW   rX   r   )r   r   r\   Ú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 )Nr0   r   r?   rB   ©rE   rF   rE   zkInterpolation with NaNs in the index has not been implemented. Try filling those NaNs before interpolating.rQ   r8   rj   )r   r7   r
   rb   r3   rU   ÚNotImplementedErrorr   rm   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Úscipyr0   r   r?   r   é   ©r0   r   rB   r   é   é   é   ©rE   rG   rG   Ú
polynomial©rk   Úorderg¥ÝÇUUU@ra   gáu:±@)r‚   rE   Úcubicrj   gv‚ä:†@g„b+hZ@ÚnearestF)Úcheck_dtypeÚ	quadraticgå^¢r’@g!ëg¹…�@ÚslineargXè ;±@ÚzerorK   )r3   Úimportorskipr   r7   r
   rb   r!   r   rc   r   r   ©r   r   r   r]   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 )Nr~   r0   r   r?   r   r   r€   r„   Úbarycentricrj   rB   )r   rE   é   )r   rE   rv   rQ   rq   )rk   rs   ÚkroghrE   Úpchipç      @)r3   rŽ   r   r7   r
   r   r!   rc   r   r   rW   rX   Úastyperw   )r   r   r]   r   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 )Nr0   r   r?   rB   r   r’   r   rt   )r   r0   r   rB   r?   ©Úaxis)rB   r0   )r   r   )r0   rB   r8   ©rš   rk   r   )
r   r7   r
   r   r!   rc   r–   Úfloat64r   r   rf   r   r   r   Útest_interp_rowwise  s(   ûÿ	


z,TestDataFrameInterpolate.test_interp_rowwisezaxis_name, axis_numberÚrowsr   Úrows_0)ÚidÚindexÚindex_0Úcolumnsr0   Ú	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’   r0   r   )r   r   r�   )r   r0   r   ©r   Úlinearr›   )r7   r
   r   rœ   r   r   r   )r   Ú	axis_nameÚaxis_numberÚdatar   r]   r   r   r   r   Útest_interp_axis_names7  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   ç      à?rJ   r?   r�   é@   )	r0   r   rB   r?   rB   r   r0   r   éÿÿÿÿ)r   r0   r™   )r   r7   r
   r   )r   r   r   r   r   Útest_rowwise_altH  s   þÿz)TestDataFrameInterpolate.test_rowwise_altÚcheck_scipyFTr~   )Ú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      Àéüÿÿÿr{   g      À)rB   rF   r…   r0   r†   )r   r7   r
   r   r!   rc   r   r   )r   r¯   r   r]   r   r   r   r   Útest_interp_leading_nansR  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 )Nr0   r   r?   )ÚaÚbr   Údr   r   r@   rt   )rE   rF   rG   rH   ÚEúvCannot interpolate with all object-dtype columns in the DataFrame. Try setting at least one column to a numeric dtype.rQ   rP   r™   )r   r7   r
   r3   rU   rV   r–   r   )r   rš   r   r\   r   r   r   Útest_interp_raise_on_only_mixedb  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)r0   r   rB   )r?   r   r’   r{   rP   r¥   r¸   rQ   )r   r3   rU   rV   r   rm   r   r   r   Ú%test_interp_raise_on_all_object_dtypet  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	sLt
nd dd	�� |d jdd�}W d   ƒ n1 sdw   Y  |d u soJ ‚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´   rJ   rK   rM   rI   Tr1   zinplace methodrQ   rp   rq   )r2   rs   rw   )r   r7   r
   r!   r   Úraises_chained_assignment_errorr   r   rW   r   rX   r   r–   )r   rZ   r   r   Úexpected_cowr]   Úreturn_valuer\   r   r   r   Útest_interp_inplace  sB   
ÿ
þüÿýÿ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 )NrI   rK   rL   rM   )rB   r   r   r   )r´   rµ   r   r¦   r0   F)rk   rš   r2   T)r   r7   r
   r   r   r   )r   r]   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 )Nr0   r   r?   rt   rJ   rK   rM   rI   rD   rœ   r¥   rw   )rJ   rK   rB   rM   rv   rQ   rr   rF   rH   )	r   r7   r
   Úarrayr   rW   rX   r   r   )r   r   r   r\   r]   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š   rk   r2   )	r   r7   ÚrandomÚdefault_rngr
   r   r   r   r   )r   r    Úidxr©   r   r]   r½   r   r   r   Útest_interp_time_inplace_axisÊ  s   z6TestDataFrameInterpolate.test_interp_time_inplace_axis)r¡   r   )r£   r0   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è  )é
   r0   rÉ   )r©   r¡   r£   g®Gázð?)r£   r¦   ©rk   rš   )
r7   ÚlinspaceÚsinr   ÚtileÚarangeÚreindexr   r   r   )r   r§   r¨   ÚxÚyr   r]   r   r   r   r   Útest_interp_string_axis×  s   
ÿþz0TestDataFrameInterpolate.test_interp_string_axisÚ
multiblockrk   )Ú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)r0   r£   rJ   rK   rL   rM   g      @r•   g       @g      $@rN   g      >@rh   rH   r·   rÖ   rÔ   r™   z"DataFrame.interpolate with method=z is deprecatedrQ   rÊ   )ÚtdÚ&mark_array_manager_not_yet_implementedr   r7   r
   Úgetattrr   rW   rX   r   r   )r   r<   rš   rÓ   rk   r;   r   Úmethod2r   r\   r]   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 )NTr1   ©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´   ©r0   NNNrB   r¥   r   ©Úlimit©r0   r   rK   NrB   ÚFloat64rÜ   )r   Úany_int_ea_dtyper   r&   r]   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&   r]   r   r   r   r   Útest_interpolate_ea_float  s   z2TestDataFrameInterpolate.test_interpolate_ea_float)rw   Ú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ç   )r3   rŽ   r   r   r   r   )r   r   r   r]   r   r   r   r   Útest_interpolate_arrow"  s
   
z/TestDataFrameInterpolate.test_interpolate_arrowN)'Ú__name__Ú
__module__Ú__qualname__r   r-   r>   r`   r3   r4   r5   r   re   rg   rn   ru   rz   r}   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	      sr    0ÿ

'ýþ
	
ÿ
$

	üþ
		þr	   )Únumpyr7   r3   Úpandas._configr   Úpandas.compatr   Úpandas.errorsr   Úpandas.util._test_decoratorsÚutilÚ_test_decoratorsr×   Úpandasr   r   r   r   Úpandas._testingÚ_testingr   r	   r   r   r   r   Ú<module>   s    