o
    5cw8                     @   sT   d dl Zd dlZd dlm  mZ d dlmZm	Z	m
Z
 d dlmZ G dd dZdS )    N)	DataFrame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	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-d. Zd/d0 Zd1d2 Zd3d4 Zejdd5d6gd7d8 Zejd9g d:d;d< Zd=d> Zd?S )@TestDataFrameInterpolatec                 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      Tinplace)r         ?r   r   )r   pytestmarkxfailnode
add_markernpnanvaluesinterpolatetmassert_equalshares_memorysqueeze)selfframe_or_seriesusing_array_managerrequestr   objorigexpected r    a/var/www/html/gps/gps/lib/python3.10/site-packages/pandas/tests/frame/methods/test_interpolate.py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}t	||d
 jrGJ t	||d jrRJ |jdd}|d u s^J t|| t	|d
 j|soJ t	|d j|szJ d S )Nr   r      	   r   r         abcdABCD      ?       @      @      @r/   r2         "@r4   r,   r-   Tr	   )
r   r   r   listr   r   assert_frame_equal_valuesr   r   )r   dfr   resultcvaluesdvaluesresr    r    r!   test_interp_basic    s2   

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}t g dg d	g dtdd}|d
 }|d
}d|jd< d|jd< t|| d S )Nr   r   r#   r$   r%   r(   r)   r.   r3   r,   r&   r&   r*   )r'   r+   )	r   r   r   r5   	set_indexr   locr   r6   r   r8   r   r9   r    r    r!   &test_interp_basic_with_non_range_indexB   s&   	


z?TestDataFrameInterpolate.test_interp_basic_with_non_range_indexc                 C   s.   t  }| }||usJ |}t|| d S )N)r   r   r   r6   r   r8   r9   r   r    r    r!   test_interp_emptyZ   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   r#   r$   r%   r(   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.matchnot_a_methodmethod)r   r   r   r5   r   raises
ValueErrorr   r   r8   msgr    r    r!   test_interp_bad_methodb   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/   r0   r2   r   r#   r$   r%   r(   r)   r*   r.   )nameinferdowncastr   r   r&   r#   )r   r   r   r5   r   r   r   assert_series_equalrC   r    r    r!   test_interp_combou   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   r#   r&   r*   r+   r*   zkInterpolation with NaNs in the index has not been implemented. Try filling those NaNs before interpolating.rE   r   rH   )r   r   r   r?   r   rJ   NotImplementedErrorr   rL   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   r#   r'      r   r   r&   r'            r*   r,   r,   
polynomialrI   ordergUUU@r>   gu:@)r\   r*   cubicrH   gv:@gb+hZ@nearestF)check_dtype	quadraticg^r@g!g@slineargX ;@zeror0   )	r   r   r   r?   copyr   r@   r   r6   rA   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   r#   r'   rY   rZ   r^   barycentricrH   r&   )r   r*      )r'   r*   rP   )rI   rR   kroghr*   pchip      @)
r   r   r   r   rh   r@   r   r6   astypeint64)r   r8   r9   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   r#   r&   r'   rk   rY   rS   )r   r   r   r&   r#   axis)r&   r   )r   r   )r   r&   r   rt   rI   r   )
r   r   r   r   rh   r@   ro   float64r   r6   rC   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   rk   r   rY   )r   r'   r[   )r   r   r   dtypelinearru   )r   r   r   rv   r   r   r6   )r   	axis_nameaxis_numberdatar8   r9   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/   r#   r[   @   )	r   r   r&   r#   r&   r   r   r   )r   r   rs   )r   r   r   r   )r   r8   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      rV   g      )r&   r+   r_   r   r`   )r   r   r   r   rh   r@   r   r6   )r   r   r8   r9   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   r#   )abcdr'   rY   r$   rS   )r*   r+   r,   r-   EvCannot interpolate with all object-dtype columns in the DataFrame. Try setting at least one column to a numeric dtype.rE   objectrs   )r   r   r   r   rJ   	TypeErrorro   r   )r   rt   r8   rM   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   r&   )r#   r'   rk   rV   r   r   r   rE   )r   r   rJ   r   r   rL   r    r    r!   %test_interp_raise_on_all_object_dtype'  s   
"z>TestDataFrameInterpolate.test_interp_raise_on_all_object_dtypec                 C   s   |rt d tdddtjdgi}tdg di}| }|d jdd}|d u s,J t|| | }|d jdd	d
}|d u sEJ t||	d d S )Nz$CoW: inplace keyword not yet handledr   r/   r0   r2   r.   Tr	   rP   )r
   rR   rp   )
r   skipr   r   r   rh   r   r   r6   ro   )r   using_copy_on_writer8   r   r9   return_valuer    r    r!   test_interp_inplace2  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.   r0   r1   r2   )r&   r   r   r   )r   r   r   r   r   F)rI   rt   r
   T)r   r   r   r   r   r6   )r   r9   r   r   r    r    r!   test_interp_inplace_rowB  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   r#   rS   r/   r0   r2   r.   r)   rv   r   rp   )r/   r0   r&   r2   rQ   r+   r-   )r   r   r   arrayr   r   r6   rA   r    r    r!   test_interp_ignore_all_goodL  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)startperiodsr   )r{   r}   r   r   timeru   T)rt   rI   r
   )	r   r   randomrandr   r   r   r   r6   )r   r   idxr   r   r9   r   r    r    r!   test_interp_time_inplace_axisf  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   rI   rt   )
r   linspacesinr   tilearangereindexr   r   r6   )r   r   r   xyr8   r9   r   r    r    r!   test_interp_string_axiss  s   
z0TestDataFrameInterpolate.test_interp_string_axisrI   )ffillbfillpadc              	   C   s   |r|dks
|dk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 )Nr   r}   r/   r0   r1   r2   g      @rn   g       @g      $@r4   g      >@)r*   r+   r,   ru   r   )	td&mark_array_manager_not_yet_implementedr   r   r   fillnar   r   r6   )r   r   rt   rI   r   r8   r   r9   r    r    r!   test_interp_fillna_methods  s   
z3TestDataFrameInterpolate.test_interp_fillna_methodsc                 C   sn   t dg di}d}tjt|d |dd}W d    n1 s"w   Y  t dg di}t|| d S )Nr   r   zzIn a future version of pandas all arguments of DataFrame.interpolate except for the argument 'method' will be keyword-onlyrE   r   r   )r   r   assert_produces_warningFutureWarningr   r6   )r   r8   rM   r9   r   r    r    r!   %test_interpolate_pos_args_deprecation  s   z>TestDataFrameInterpolate.test_interpolate_pos_args_deprecationN)__name__
__module____qualname__r"   r=   rB   rD   rN   rU   rX   r   skip_if_no_scipyri   rr   rw   r   r   parametrizeparamr   r   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   pandas._testing_testingr   r   r    r    r    r!   <module>   s    