o
    g0                     @   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                
   @   s8  e Z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-d. Zd/d0 Zejdd1d2gd3d4 Zejejd5g d6d7d8 Zd9d: Zd;S )<TestDataFrameInterpolatec                 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 )N         	   r   r         abcdABCD      ?       @      @      @)r   r         "@r   r   r   )r   r   )r   r   )	r   npnanlistinterpolatetmassert_frame_equal	set_indexlocselfdfexpectedresult r&   i/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pandas/tests/frame/methods/test_interpolate.pytest_interp_basic   s*   


z*TestDataFrameInterpolate.test_interp_basicc                 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   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   r   pytestraises
ValueErrorr   r"   r#   msgr&   r&   r'   test_interp_bad_method1   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   assert_series_equalr)   r&   r&   r'   test_interp_comboD   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.r+   valuesr.   )r   r   r   r   r0   r1   NotImplementedErrorr   r3   r&   r&   r'   test_interp_nan_idxV   s   "
"z,TestDataFrameInterpolate.test_interp_nan_idxc                 C   sd  t ddtjddtjdgg dd}|d}| }|jd	dd
}d|jjd< d|jjd< t	|| |jdd}d|jjd< d|jjd< t	|| |jdd}d|jjd< d|jjd< tj	||dd |jdd}d|jjd< d|jjd< t	|| |jdd}d|jjd< d|jjd< t	|| |jdd}d|jjd< d|jjd< tj	||dd d S )Nr   r   r   r      r   r   r   r            r   r   r   
polynomialr/   ordergUUU@r   gu:@rD   cubicr.   gv:@gb+hZ@nearestF)check_dtype	quadraticg^r@g!g@slineargX ;@zeror   )
r   r   r   r   copyr   r   r    r   r   r!   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   rA   rB   rF   barycentricr.   r   )r   r      )r   r   r7   )r/   r9   kroghr   pchip      @)
r   r   r   r   rP   r    r   r   astypeint64)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 )Nr   r   r   r   r   rS   rA   r:   )r   r   r   r   r   axis)r   r   )r   r   )r   r   r>   r\   r/   r   )
r   r   r   r   rP   r    rW   float64r   r   r)   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   rS   r   rA   )r   r   rC   )r   r   r   dtypelinearr]   )r   r   r   r^   r   r   r   )r"   	axis_nameaxis_numberdatar#   r%   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   rC   @   )	r   r   r   r   r   r   r   r   )r   r   r[   )r   r   r   r   )r"   r#   r&   r&   r'   test_rowwise_alt   s   z)TestDataFrameInterpolate.test_rowwise_altcheck_scipyFT)marksc                 C   sz   t tjtjdddgtjddtjdgd}| }| }d|d	 jd
< t|| |r;|jddd}t|| d S d S )Nrn   g      ?r   g      r=   g      r   r   rG   r   rH   )r   r   r   r   rP   r    r   r   )r"   rr   r#   r%   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   rA   r	   r:   )r   r   r   r   EvCannot interpolate with all object-dtype columns in the DataFrame. Try setting at least one column to a numeric dtype.r+   objectr[   )r   r   r   r0   r1   	TypeErrorrW   r   )r"   r\   r#   r4   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   rS   r=   r}   rg   r|   r+   )r   r0   r1   r~   r   r3   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 s%J t|| | }|d jddd	}|d u s>J t||d
 d S )Nrw   r   r   r   r   T)inplacer7   )r   r9   rX   )r   r   r   rP   r   r   r   rW   )r"   r#   r$   r%   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 s'J t|| d S )Nr   r   r   r   )r   r   r   r   )rw   rx   ry   ri   r   F)r/   r\   r   T)r   r   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	}|jd d}t|| |ddg jd d}t||ddg  d S )Nr   r   r   r:   r   r   r   r   r   r^   rg   rX   )r   r   r   r   r8   r   r   )r   r   r   arrayr   r   r   r!   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 s2J t|| d S )Nr   z
2014-01-01)startperiodsrn   )rc   re   rl   r   timer]   T)r\   r/   r   )	r   r   randomrandr   r   r   r   r   )r"   r\   r   idxrl   r$   r%   r   r&   r&   r'   test_interp_time_inplace_axis2  s   z6TestDataFrameInterpolate.test_interp_time_inplace_axis)rc   r   )re   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   )rl   rc   re   gGz?)re   ri   r/   r\   )
r   linspacesinr   tilearangereindexr   r   r   )r"   rj   rk   xyr#   r%   r$   r&   r&   r'   test_interp_string_axis?  s   
z0TestDataFrameInterpolate.test_interp_string_axisr/   )ffillbfillpadc              	   C   sh   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   r   g      @rV   g       @g      $@r   g      >@)r   r   r   r]   r   )r   r   r   fillnar   r   r   )r"   r\   r/   r#   r$   r%   r&   r&   r'   test_interp_fillna_methodsK  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 )Nrw   r   zzIn a future version of pandas all arguments of DataFrame.interpolate except for the argument 'method' will be keyword-onlyr+   r   r   )r   r   assert_produces_warningFutureWarningr   r   )r"   r#   r4   r%   r$   r&   r&   r'   %test_interpolate_pos_args_deprecationZ  s   z>TestDataFrameInterpolate.test_interpolate_pos_args_deprecationN)__name__
__module____qualname__r(   r*   r5   r<   r@   tdskip_if_no_scipyrQ   rZ   r_   r0   markparametrizeparamrm   rq   rv   r   r   r   r   r   r   r   &skip_array_manager_not_yet_implementedr   r   r&   r&   r&   r'   r      sH    

&

	



r   )numpyr   r0   pandas.util._test_decoratorsutil_test_decoratorsr   pandasr   r   r   pandas._testing_testingr   r   r&   r&   r&   r'   <module>   s    