o
     \iO                     @   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   /var/www/www-root/data/www/176.119.141.140/sports-predictor/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}	|rt||d jsJ t|	|d jsJ nt||d jrJ t|	|d jrJ tj	t
|d |jdd}
W d    n1 sw   Y  |
d u sJ t|| t|d j|sJ t|d j|	sJ 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 sw   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   ordergUUU@ra   gu:@)r   rE   cubicrj   gv:@gb+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   EvCannot 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
}|rtjt
tf|d	 |d jddd}W d    n1 sw   Y  |d u sJ t|| d S tjt
|d	 |d jddd}W d    n1 sw   Y  |d u sJ 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Gz?)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    