a
    oÝEbÍ3  ã                   @   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                
   @   s:  e Z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-d.„ Zd/d0„ Zd1d2„ Zej dd3d4g¡d5d6„ ƒZej d7g d8¢¡d9d:„ ƒ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¡srJ ‚| ¡ d dks†J ‚d S )	Nz'.values-based in-place check is invalid)Úreasoné   é   T©Úinplace)r   ç      ø?r   r   )r   ÚpytestÚmarkZxfailÚnodeZ
add_markerÚnpÚnanÚvaluesÚinterpolateÚtmZassert_equalZshares_memoryZsqueeze)ÚselfZframe_or_seriesÚusing_array_managerÚrequestr   ÚobjÚorigÚexpected© r   úk/home/ja/django-apps/lartica_env/lib/python3.9/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
¡ ¡ }| d
¡}d|jd< d|jd< t ||¡ d S )Nr   r   é   é	   ©r   r   é   é   Úabcd©ÚAÚBÚCÚD©ç      ð?ç       @ç      @ç      @)r)   r,   ç      "@r-   r&   r    ©r    r$   )r!   r%   )	r   r   r   Úlistr   r   Úassert_frame_equalÚ	set_indexÚloc©r   Údfr   Úresultr   r   r   Útest_interp_basic    s*    üÿüÿ


z*TestDataFrameInterpolate.test_interp_basicc                 C   s.   t ƒ }| ¡ }||usJ ‚|}t ||¡ d S )N)r   r   r   r0   ©r   r4   r5   r   r   r   r   Útest_interp_empty:   s
    z*TestDataFrameInterpolate.test_interp_emptyc                 C   sp   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   ƒ n1 sb0    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.©ÚmatchZnot_a_method©Úmethod)r   r   r   r/   r   ÚraisesÚ
ValueErrorr   ©r   r4   Ú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)   r*   r,   r   r   r   r   r"   r#   r$   r(   )ÚnameÚinfer©Údowncast©r   r   r    r   )r   r   r   r/   r   r   r   Zassert_series_equalr7   r   r   r   Útest_interp_comboU   s    üÿ	z*TestDataFrameInterpolate.test_interp_comboc                 C   sn   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   ƒ n1 s`0    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.r9   r   r;   )r   r   r   r1   r   r=   ÚNotImplementedErrorr   r?   r   r   r   Útest_interp_nan_idxg   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©r<   Úorderg¥ÝÇUUU@r.   gáu:±@)rN   r$   Zcubicr;   gv‚ä:†@g„b+hZ@ZnearestF)Zcheck_dtypeZ	quadraticgå^¢r’@g!ëg¹…�@ZslineargXè ;±@Úzeror*   )	r   r   r   r1   Úcopyr   r2   r   r0   r3   r   r   r   Útest_interp_variousq   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!   rK   rL   rP   Zbarycentricr;   r    )r   r$   é   )r!   r$   rC   )r<   rE   Zkroghr$   Zpchipç      @)
r   r   r   r   rU   r2   r   r0   ÚastypeÚint64)r   r4   r5   r   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   r   r    r!   rW   rK   rF   )r   r   r   r    r   ©Úaxis)r    r   )r   r   )r   r    r   ©r]   r<   r   )
r   r   r   r   rU   r2   rY   Úfloat64r   r0   r7   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   rW   r   rK   )r   r!   rM   )r   r   r   ©ZdtypeÚlinearr^   )r   r   r   r_   r   r   r0   )r   Ú	axis_nameÚaxis_numberÚdatar4   r5   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   rM   é@   )	r   r   r    r   r    r   r   r   éÿÿÿÿ)r   r   r\   )r   r   r   r   )r   r4   r   r   r   Útest_rowwise_altÛ   s    þÿz)TestDataFrameInterpolate.test_rowwise_altÚcheck_scipyFT)Zmarksc                 C   sr   t tjtjdddgtjddtjdgdœƒ}| ¡ }| ¡ }d|jd	< t ||¡ |rn|jd
dd�}t ||¡ d S )Nrk   g      Ð?r   éýÿÿÿg      ÀéüÿÿÿrH   g      À)r    r%   rQ   r   rR   )r   r   r   r   rU   r2   r   r0   )r   ro   r4   r5   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   ƒ n1 sv0    Y  d S )Nr   r   r   )ÚaÚbÚcÚdr!   rK   r   rF   )r$   r%   r&   r'   ÚEúvCannot interpolate with all object-dtype columns in the DataFrame. Try setting at least one column to a numeric dtype.r9   Úobjectr\   )r   r   r   r   r=   Ú	TypeErrorrY   r   )r   r]   r4   r@   r   r   r   Útest_interp_raise_on_only_mixedõ   s    ûÿ
ÿz8TestDataFrameInterpolate.test_interp_raise_on_only_mixedc                 C   sX   t g d¢g d¢dœdd�}d}tjt|d�� | ¡  W d   ƒ n1 sJ0    Y  d S )N©r   r   r    )r   r!   rW   rH   ry   re   rx   r9   )r   r   r=   rz   r   r?   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 sJJ ‚t ||¡ | ¡ }|d jddd	�}|d u s|J ‚t || d
¡¡ d S )Nrs   r)   r*   r,   r(   Tr	   rC   )r
   rE   rZ   )r   r   r   rU   r   r   r0   rY   )r   r4   r   r5   Úreturn_valuer   r   r   Útest_interp_inplace  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 sNJ ‚t ||¡ d S )Nr(   r*   r+   r,   )r    r   r   r   )rs   rt   ru   rf   r   F)r<   r]   r
   T)r   r   r   r   r   r0   )r   r5   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	œƒ}|jd d�}t ||¡ |ddg jd d�}t ||ddg ¡ d S )Nr   r   r   rF   r)   r*   r,   r(   r#   r_   re   rZ   )r)   r*   r    r,   rD   r%   r'   )r   r   r   Úarrayr   r   r0   r3   r   r   r   Útest_interp_ignore_all_good)  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 sdJ ‚t ||¡ d S )Nr!   z
2014-01-01)ÚstartÚperiodsrk   )rc   rd   ri   r   Útimer^   T)r]   r<   r
   )	r   r   ÚrandomZrandr   r   r   r   r0   )r   r]   r„   Úidxri   r   r5   r~   r   r   r   Útest_interp_time_inplace_axisC  s    z6TestDataFrameInterpolate.test_interp_time_inplace_axis)rc   r   )rd   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Š   )ri   rc   rd   g®Gázð?)rd   rf   ©r<   r]   )
r   ZlinspaceÚsinr   ZtileZarangeZreindexr   r   r0   )r   rg   rh   ÚxÚyr4   r5   r   r   r   r   Útest_interp_string_axisP  s    
ÿþz0TestDataFrameInterpolate.test_interp_string_axisr<   )ZffillZ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   rd   r)   r*   r+   r,   g      @rX   g       @g      $@r-   g      >@)r$   r%   r&   r^   r‹   )	ÚtdZ&mark_array_manager_not_yet_implementedr   r   r   Zfillnar   r   r0   )r   r   r]   r<   r   r4   r   r5   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 sD0    Y  t dg d¢iƒ}t ||¡ d S )Nrs   r|   zzIn a future version of pandas all arguments of DataFrame.interpolate except for the argument 'method' will be keyword-onlyr9   r�   r   )r   r   Zassert_produces_warningÚFutureWarningr   r0   )r   r4   r@   r5   r   r   r   r   Ú%test_interpolate_pos_args_deprecationn  s    ÿ*z>TestDataFrameInterpolate.test_interpolate_pos_args_deprecationN)Ú__name__Ú
__module__Ú__qualname__r   r6   r8   rA   rG   rJ   r‘   Zskip_if_no_scipyrV   r[   r`   r   r   ZparametrizeÚparamrj   rn   rr   r{   r}   r   r€   r‚   rˆ   r�   r’   r”   r   r   r   r   r      sF   

&
ýþ
	
ÿ



r   )Únumpyr   r   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsr‘   Zpandasr   r   r   Zpandas._testingZ_testingr   r   r   r   r   r   Ú<module>   s
   