a
    é´«jÛ…  ã                   @   s”   d dl Zd dlZd dlm  mZ d dlZd dlm	Z	m
Z
mZmZmZ d dlmZ ejg d¢d�dd„ ƒZejg d¢d�dd	„ ƒZG d
d„ dƒZdS )é    N)ÚIndexÚ
MultiIndexÚSeriesÚ
date_rangeÚisna)ÚlinearÚindexÚvaluesÚnearestÚslinearÚzeroÚ	quadraticÚcubicÚbarycentricÚkroghÚ
polynomialÚsplineÚpiecewise_polynomialÚfrom_derivativesÚpchipÚakimaÚcubicspline)Úparamsc                 C   s"   | j }|dv rddini }||fS )a	  Fixture that returns an (method name, required kwargs) pair.

    This fixture does not include method 'time' as a parameterization; that
    method requires a Series with a DatetimeIndex, and is generally tested
    separately from these non-temporal methods.
    ©r   r   Úorderé   ©Úparam©ÚrequestÚmethodÚkwargs© r"   úk/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/pandas/tests/series/methods/test_interpolate.pyÚnontemporal_method   s    r$   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   c                 C   s"   | j }|dv rddini }||fS )zÕFixture that returns a (method name, required kwargs) pair to
    be tested for various Index types.

    This fixture does not include methods - 'time', 'index', 'nearest',
    'values' as a parameterization
    r   r   r   r   r   r"   r"   r#   Úinterp_methods_ind2   s    r%   c                   @   s¾  e Zd Zejj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ej di ejdddœe d¡d�g¡dd„ ƒZdd„ Zdd„ Zej di ejdddœe d¡d�g¡dd „ ƒZd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zej d+d,d-g¡d.d/„ ƒZd0d1„ Zej d2d3d4g¡d5d6„ ƒZd7d8„ Zd9d:„ Zd;d<„ Z d=d>„ Z!d?d@„ Z"ej dAg dB¢¡dCdD„ ƒZ#ej dEe$j%e$j%dFe$j%e$j%e$j%dGe$j%e$j%g	e$j%e$j%dHdHdHdHdIe$j%e$j%g	dJdKdLœfe$j%e$j%dFe$j%e$j%e$j%dGe$j%e$j%g	e$j%e$j%dHdHe$j%e$j%dIe$j%e$j%g	dJdKddMœfe$j%e$j%dFe$j%e$j%e$j%dGe$j%e$j%g	e$j%e$j%dHe$j%e$j%e$j%dIdIdIg	dJdNdLœfe$j%e$j%dFe$j%e$j%e$j%dGe$j%e$j%g	e$j%e$j%dHe$j%e$j%e$j%dIdIe$j%g	dJdNddMœfe$j%e$j%e$j%e$j%e$j%e$j%e$j%ge$j%e$j%e$j%e$j%e$j%e$j%e$j%gdJdNddMœfe&dOƒe&dOƒdJdNddMœff¡dPdQ„ ƒZ'ej dEe$j%e$j%dFe$j%e$j%e$j%dGe$j%e$j%g	e$j%e$j%dHdIdIdIdIe$j%e$j%g	dRdKdLœfe$j%e$j%dFe$j%e$j%e$j%dGe$j%e$j%g	e$j%e$j%dHe$j%e$j%dIdIe$j%e$j%g	dRdKddMœfe$j%e$j%dFe$j%e$j%e$j%dGe$j%e$j%g	dHdHdHe$j%e$j%e$j%dIe$j%e$j%g	dRdNdLœfe$j%e$j%dFe$j%e$j%e$j%dGe$j%e$j%g	e$j%dHdHe$j%e$j%e$j%dIe$j%e$j%g	dRdNddMœff¡dSdT„ ƒZ(dUdV„ Z)dWdX„ Z*dYdZ„ Z+d[d\„ Z,ej d]d^ejd_e d¡d�g¡d`da„ ƒZ-dbdc„ Z.ej dddedJg¡dfdg„ ƒZ/dhdi„ Z0djdk„ Z1ej ddddlg¡dmdn„ ƒZ2ej dod,dpd-dqe$j%g¡drds„ ƒZ3dtdu„ Z4dvdw„ Z5dxdy„ Z6dzd{„ Z7d|d}„ Z8d~d„ Z9d€d�„ Z:ej d‚g dƒ¢e;j<d„d…d†�e;j=d-d…d‡�g¡dˆd‰„ ƒZ>dŠd‹„ Z?ej dŒd_g d�¢fd^g dŽ¢fg¡d�d�„ ƒZ@d‘d’„ ZAd“d”„ ZBd3S )•ÚTestSeriesInterpolateDataz)EA.fillna does not handle 'linear' method©Úreasonc                 C   sR   t tddd�ƒ}| ¡ }tj|d< |j d¡}| ¡ }|j d¡}t 	||¡ d S )Nz
2012-01-01é   )Úperiodsé   ÚD)
r   r   ÚcopyÚpdÚNaTÚdtZ	to_periodÚinterpolateÚtmÚassert_series_equal)ÚselfÚorigÚserZser_perZres_perZexpected_perr"   r"   r#   Útest_interpolate_period_valuesQ   s    
z8TestSeriesInterpolateData.test_interpolate_period_valuesc                 C   sš   t tjt|ƒtd�|jƒ}| ¡ }tj|dd…< |jdd�}t	 
||¡ t dd„ |jD ƒ|jd� t¡}| ¡ }tj|dd…< |jd	d�}t	 
||¡ d S )
N©Údtyper)   é
   r   ©r    c                 S   s   g | ]}|  ¡ ‘qS r"   )Ú	toordinal)Ú.0Údr"   r"   r#   Ú
<listcomp>g   ó    z>TestSeriesInterpolateData.test_interpolate.<locals>.<listcomp>©r   Útime)r   ÚnpÚarangeÚlenÚfloatr   r-   Únanr1   r2   r3   Úastype)r4   Zdatetime_seriesÚtsZts_copyZlinear_interpZord_tsZord_ts_copyZtime_interpr"   r"   r#   Útest_interpolate]   s    ÿþz*TestSeriesInterpolateData.test_interpolatec                 C   sT   t dddtjgƒ}d}tjt|d�� |jdd� W d   ƒ n1 sF0    Y  d S )Nr   r   r+   zGtime-weighted interpolation only works on Series.* with a DatetimeIndex©ÚmatchrB   r;   ©r   rC   rG   ÚpytestÚraisesÚ
ValueErrorr1   )r4   Znon_tsÚmsgr"   r"   r#   Ú/test_interpolate_time_raises_for_non_timeseriesp   s    zITestSeriesInterpolateData.test_interpolate_time_raises_for_non_timeseriesc                 C   st   t  d¡ tg d¢ƒ}tg d¢tg d¢ƒd�}|j tg d¢ƒ¡ t¡}| |¡j	dd�j
d	d
… }t ||¡ d S )NÚscipy©r:   é   é   é   ©	ç      &@g     €&@g      '@g     €'@ç      (@g     €(@g      )@g     €)@ç      *@©	ç      ð?ç      ô?ç      ø?ç      ü?ç       @ç      @ç      @ç      @ç      @rA   ©r^   r_   r`   rb   rc   rd   r   r;   r   é   )rN   Úimportorskipr   r   r   ÚunionrH   rF   Úreindexr1   Úlocr2   r3   )r4   r6   ÚexpectedÚ	new_indexÚresultr"   r"   r#   Útest_interpolate_cubicsplinex   s    

þÿz6TestSeriesInterpolateData.test_interpolate_cubicsplinec                 C   sf   t  d¡ tt tj d¡jdd�¡ƒ}|j 	t
g d¢ƒ¡ t¡}| |¡jdd�}|jdd	…  d S )
NrS   r+   éd   )Úsize)g      H@g     ÀH@g     àH@g      I@g     @I@g     `I@r   r;   é1   é3   )rN   rh   r   rC   ÚsortÚrandomÚdefault_rngÚuniformr   ri   r   rH   rF   rj   r1   rk   )r4   r6   rm   Úinterp_sr"   r"   r#   Útest_interpolate_pchip‡   s    

ÿþz0TestSeriesInterpolateData.test_interpolate_pchipc                 C   sÐ   t  d¡ tg d¢ƒ}tg d¢tg d¢ƒd�}|j tg d¢ƒ¡ t¡}| |¡j	dd�}t
 |jd	d
… |¡ tg d¢tg d¢ƒd�}|j tg d¢ƒ¡ t¡}| |¡j	dd	d�}t
 |jd	d
… |¡ d S )NrS   rT   rX   r\   rA   rf   r   r;   r   rg   )	rY   r]   r]   r]   rZ   r]   r]   r]   r[   )r    Zder©rN   rh   r   r   r   ri   rH   rF   rj   r1   r2   r3   rk   ©r4   r6   rl   rm   rx   r"   r"   r#   Útest_interpolate_akima“   s(    

þÿ
þÿz0TestSeriesInterpolateData.test_interpolate_akimac                 C   st   t  d¡ tg d¢ƒ}tg d¢tg d¢ƒd�}|j tg d¢ƒ¡ t¡}| |¡j	dd�}t
 |jd	d
… |¡ d S )NrS   rT   rX   r\   rA   rf   r   r;   r   rg   rz   r{   r"   r"   r#   Ú%test_interpolate_piecewise_polynomial­   s    

þÿz?TestSeriesInterpolateData.test_interpolate_piecewise_polynomialc                 C   st   t  d¡ tg d¢ƒ}tg d¢tg d¢ƒd�}|j tg d¢ƒ¡ t¡}| |¡j	dd�}t
 |jd	d
… |¡ d S )NrS   rT   rX   r\   rA   rf   r   r;   r   rg   rz   r{   r"   r"   r#   Ú!test_interpolate_from_derivatives¼   s    

þÿz;TestSeriesInterpolateData.test_interpolate_from_derivativesr!   r   r   ©r    r   rS   )Zmarksc                 C   sT   t tjtjgƒ}t |jf i |¤Ž|¡ t g td� ¡ }t |jf i |¤Ž|¡ d S )Nr8   )r   rC   rG   r2   r3   r1   Úobject)r4   r!   Úsr"   r"   r#   Útest_interpolate_cornersË   s    
z2TestSeriesInterpolateData.test_interpolate_cornersc                 C   sØ   t tjt tj d¡ d¡¡d�}tj d¡ d¡|jd d d…< |jj	 
t¡}|jdd�}| ¡ }t|j	ƒ}| }t t || || |j	| ¡|j| d�}t || |¡ |jdd�}t ||¡ t || |¡ d S )	Nr+   é   rA   r:   rg   r   r;   r	   )r   rC   rG   rt   ru   rv   Ústandard_normalrk   r   r	   rH   rF   r1   r-   r   Zinterpr2   r3   )r4   r�   Úvalsrn   rl   ÚbadZgoodZother_resultr"   r"   r#   Útest_interpolate_index_valuesÛ   s    "
"ÿz7TestSeriesInterpolateData.test_interpolate_index_valuesc                 C   s\   t ddtjtjtjdgƒ}d}tjt|d�� |jdd� W d   ƒ n1 sN0    Y  d S )Nr   rg   rU   zStime-weighted interpolation only works on Series or DataFrames with a DatetimeIndexrK   rB   r;   rM   ©r4   r�   rQ   r"   r"   r#   Útest_interpolate_non_tsò   s
    ÿz1TestSeriesInterpolateData.test_interpolate_non_tsc                 C   s>   t ddtjdgƒ}|jf i |¤Ž}t g d¢ƒ}t ||¡ d S )Nr   r   rg   ©ç        r]   ra   re   ©r   rC   rG   r1   r2   r3   )r4   r!   r�   rn   rl   r"   r"   r#   Útest_nan_interpolateû   s    
z.TestSeriesInterpolateData.test_nan_interpolatec                 C   sF   t ddtjdgg d¢d�}| ¡ }t g d¢g d¢d�}t ||¡ d S )Nr   r+   é   )r   rg   r)   é	   rA   )r]   ra   re   ç      @rŒ   ©r4   r�   rn   rl   r"   r"   r#   Útest_nan_irregular_index
  s    z2TestSeriesInterpolateData.test_nan_irregular_indexc                 C   sF   t dddtjgtdƒd�}| ¡ }t g d¢tdƒd�}t ||¡ d S )Nr   r   r+   ÚabcdrA   )r‹   r]   ra   ra   )r   rC   rG   Úlistr1   r2   r3   r‘   r"   r"   r#   Útest_nan_str_index  s    z,TestSeriesInterpolateData.test_nan_str_indexc                 C   sT   t  d¡ tddtjdgg d¢d�}|jdd�}tg d	¢g d¢d�}t ||¡ d S )
NrS   r   rŽ   é   )r   r+   rg   rŽ   rA   r   r;   )r]   r�   ç      "@g      0@©rN   rh   r   rC   rG   r1   r2   r3   )r4   Úsqrn   rl   r"   r"   r#   Útest_interp_quad  s
    
z*TestSeriesInterpolateData.test_interp_quadc                 C   s  t  d¡ tddtjdtjdgƒ}tg d¢ƒ}|jdd�}t ||¡ d	}tjt	|d
�� |jddd�}W d   ƒ n1 s|0    Y  t ||¡ tg d¢ƒ}|jdd�}t || 
d¡¡ tjt	|d
�� |jddd�}W d   ƒ n1 sî0    Y  t ||¡ tg d¢ƒ}|jdd�}t || 
d¡¡ tjt	|d
�� |jddd�}W d   ƒ n1 �sb0    Y  t ||¡ tg d¢ƒ}|jdd�}t ||¡ tjt	|d
�� |jddd�}W d   ƒ n1 �sÐ0    Y  t ||¡ tg d¢ƒ}|jdd�}t ||¡ d S )NrS   r   rg   rV   é   )r]   re   g      @rZ   g     €2@ç      9@r   r;   z:The 'downcast' keyword in Series.interpolate is deprecatedrK   Zinfer)r    Zdowncast)r   rg   rg   rV   rV   r›   r
   rF   r   )r   re   g÷:©/KK@rZ   gL8ô2@rœ   r   )r]   re   g333333@rZ   g3333332@rœ   r   )rN   rh   r   rC   rG   r1   r2   r3   Úassert_produces_warningÚFutureWarningrH   ©r4   r�   rl   rn   rQ   r"   r"   r#   Útest_interp_scipy_basic  s<    
,,..z1TestSeriesInterpolateData.test_interp_scipy_basicc                 C   sN   t ddtjtjtjdgƒ}t ddddtjdgƒ}|jd	d
d�}t ||¡ d S )Nr   rg   rU   r]   re   ç      @ç      @rY   r   r+   ©r    ÚlimitrŒ   ©r4   r�   rl   rn   r"   r"   r#   Útest_interp_limitG  s    z+TestSeriesInterpolateData.test_interp_limitr¤   éÿÿÿÿr   c                 C   sb   t ddtjdgƒ}|\}}tjtdd��& |jf ||dœ|¤Ž W d   ƒ n1 sT0    Y  d S )Nr   r+   rŽ   zLimit must be greater than 0rK   ©r¤   r    rM   )r4   r$   r¤   r�   r    r!   r"   r"   r#   Ú*test_interpolate_invalid_nonpositive_limitN  s    zDTestSeriesInterpolateData.test_interpolate_invalid_nonpositive_limitc                 C   sf   t ddtjdgƒ}|\}}d}tjtdd��& |jf ||dœ|¤Ž W d   ƒ n1 sX0    Y  d S )Nr   r+   rŽ   ra   zLimit must be an integerrK   r¨   rM   )r4   r$   r�   r    r!   r¤   r"   r"   r#   Ú$test_interpolate_invalid_float_limitV  s
    z>TestSeriesInterpolateData.test_interpolate_invalid_float_limitÚinvalid_methodNZnonexistent_methodc                 C   sª   t ddtjdtjdgƒ}d|› d�}|d u r0d}tjt|d�� |j|d	� W d   ƒ n1 s`0    Y  tjt|d�� |j|d
d� W d   ƒ n1 sœ0    Y  d S )Nr   rg   rV   r›   zmethod must be one of.* Got 'z	' insteadz%'method' should be a string, not NonerK   r;   r§   r£   rM   )r4   r«   r�   rQ   r"   r"   r#   Útest_interp_invalid_method^  s    *z4TestSeriesInterpolateData.test_interp_invalid_methodc              	   C   sŽ   t ddtjdtjdgƒ}d}d}tjt|d��L tjt|d�� |j	ddd	� W d   ƒ n1 sb0    Y  W d   ƒ n1 s€0    Y  d S )
Nr   rg   rV   r›   z:'fill_value' is not a valid keyword for Series.interpolateú"Series.interpolate with method=padrK   Úpad)Ú
fill_valuer    )
r   rC   rG   rN   rO   rP   r2   r�   rž   r1   )r4   r6   rQ   Úmsg2r"   r"   r#   Ú$test_interp_invalid_method_and_valuem  s    z>TestSeriesInterpolateData.test_interp_invalid_method_and_valuec                 C   sl   t ddtjtjtjdgƒ}t ddddtjdgƒ}|jd	d
dd�}t ||¡ |jd	d
dd�}t ||¡ d S )Nr   rg   rU   r]   re   r¡   r¢   rY   r   r+   Úforward©r    r¤   Úlimit_directionÚFORWARDrŒ   r¥   r"   r"   r#   Útest_interp_limit_forwardw  s    z3TestSeriesInterpolateData.test_interp_limit_forwardc              	   C   s´   t tjddtjtjtjdtjgƒ}t g d¢ƒ}|jddd�}t ||¡ t tjdddd	d
ddgƒ}|jddd�}t ||¡ t ddddd	d
dtjgƒ}|jddd�}t ||¡ d S )Nr]   re   rY   )r]   r]   re   r¡   r¢   r—   rY   rY   r   Úboth©r    r´   r¡   r¢   r—   r²   ÚbackwardrŒ   r¥   r"   r"   r#   Útest_interp_unlimitedƒ  s    "z/TestSeriesInterpolateData.test_interp_unlimitedc                 C   sœ   t ddtjtjtjdgƒ}d}tjt|d��  |jdddd	� W d   ƒ n1 sR0    Y  tjt|d�� |jddd
� W d   ƒ n1 sŽ0    Y  d S )Nr   rg   rU   zVInvalid limit_direction: expecting one of \['forward', 'backward', 'both'\], got 'abc'rK   r   r+   Úabcr³   r¸   rM   rˆ   r"   r"   r#   Útest_interp_limit_bad_direction’  s    ÿ.z9TestSeriesInterpolateData.test_interp_limit_bad_directionc              
   C   s0  t tjtjdtjtjtjdtjtjg	ƒ}t tjtjdddddtjtjg	ƒ}|jdd	d
�}t ||¡ t tjtjddtjtjdtjtjg	ƒ}|jdd	dd�}t ||¡ t tjtjddtjddtjtjg	ƒ}|jdd	ddd�}t ||¡ t tjtjdtjtjtjdddg	ƒ}|jddd
�}t ||¡ t tjtjdtjtjtjddtjg	ƒ}|jdddd�}t ||¡ t tjddtjtjtjddtjg	ƒ}|jddddd�}t ||¡ t dddtjtjtjdtjtjg	ƒ}|jdddd�}t ||¡ d}tjt|d�� |jddd
� W d   ƒ n1 �s"0    Y  d S )Nrg   é   re   r�   r¡   ç      @r¢   r   Úinside©r    Ú
limit_arear   ©r    rÁ   r¤   r·   )r    rÁ   r´   r¤   Úoutsider¹   )r    rÁ   r´   zEInvalid limit_area: expecting one of \['inside', 'outside'\], got abcrK   r»   )	r   rC   rG   r1   r2   r3   rN   rO   rP   rŸ   r"   r"   r#   Útest_interp_limit_area¡  sF    (" ÿ$ÿ$ ÿ$ÿ$ÿz0TestSeriesInterpolateData.test_interp_limit_areaz!method, limit_direction, expected))r®   r¹   r²   )Úffillr¹   r²   )Úbackfillr²   r¹   )Úbfillr²   r¹   )r®   r·   r²   )rÅ   r·   r²   )rÆ   r·   r¹   )rÇ   r·   r¹   c              	   C   s�   t g d¢ƒ}d|› d|› d�}d}tjt|d��L tjt|d�� |j||d� W d   ƒ n1 sd0    Y  W d   ƒ n1 s‚0    Y  d S )N©r   r+   rg   z`limit_direction` must be 'z' for method `ú`zSeries.interpolate with method=rK   r¸   )r   rN   rO   rP   r2   r�   rž   r1   )r4   r    r´   rl   r�   rQ   r°   r"   r"   r#   Ú"test_interp_limit_direction_raisesÐ  s    z<TestSeriesInterpolateData.test_interp_limit_direction_raiseszdata, expected_data, kwargsrg   r½   re   r¢   r®   r¿   rÀ   rÂ   rÃ   r)   c                 C   sb   t |ƒ}t |ƒ}d}tjt|d��  |jf i |¤Ž}W d   ƒ n1 sH0    Y  t ||¡ d S )Nr­   rK   ©r   r2   r�   rž   r1   r3   ©r4   ÚdataZexpected_datar!   r�   rl   rQ   rn   r"   r"   r#   Útest_interp_limit_area_with_padç  s    &.z9TestSeriesInterpolateData.test_interp_limit_area_with_padrÇ   c                 C   sb   t |ƒ}t |ƒ}d}tjt|d��  |jf i |¤Ž}W d   ƒ n1 sH0    Y  t ||¡ d S )Nz$Series.interpolate with method=bfillrK   rË   rÌ   r"   r"   r#   Ú$test_interp_limit_area_with_backfill  s    .z>TestSeriesInterpolateData.test_interp_limit_area_with_backfillc                 C   s  t ddtjtjtjdgƒ}t ddtjdddgƒ}|jd	d
dd�}t ||¡ t dddtjddgƒ}|jd	ddd�}t ||¡ t ddtjtjtjddtjtjdtjgƒ}t g d¢ƒ}|jd	d
dd�}t ||¡ t dddtjdddddddgƒ}|jd	ddd�}t ||¡ d S )Nr   rg   rU   r]   re   r¢   r—   rY   r   r+   r¹   r³   r¡   r·   r½   r�   rV   )r]   re   r�   r¡   r¾   r¢   r—   ç      $@rY   rZ   rZ   r�   r¾   rÐ   rZ   rŒ   r¥   r"   r"   r#   Útest_interp_limit_direction7  s     *ÿz5TestSeriesInterpolateData.test_interp_limit_directionc                 C   sx   t tjtjdddtjgƒ}t dddddtjgƒ}|jddd	d
�}t ||¡ t g d¢ƒ}|jdddd
�}t ||¡ d S )Nr)   r½   r�   r¡   r¢   r—   r   r+   r¹   r³   )r¡   r¡   r¡   r¢   r—   r—   r·   rŒ   r¥   r"   r"   r#   Útest_interp_limit_to_endsP  s    z3TestSeriesInterpolateData.test_interp_limit_to_endsc                 C   sÀ   t tjtjddtjtjgƒ}t tjtjdddtjgƒ}|jdddd�}t ||¡ t tjdddtjtjgƒ}|jddd	d�}t ||¡ t tjddddtjgƒ}|jddd
d�}t ||¡ d S )Nr)   r½   r¡   r¢   r   r   r²   r³   r¹   r·   rŒ   r¥   r"   r"   r#   Útest_interp_limit_before_ends\  s    z7TestSeriesInterpolateData.test_interp_limit_before_endsc                 C   sH   t  d¡ tg d¢ƒ}|jddd�}t ||¡ | ¡ }t ||¡ d S )NrS   rÈ   r   r   r   )rN   rh   r   r1   r2   r3   )r4   r�   rn   r"   r"   r#   Útest_interp_all_goodl  s    
z.TestSeriesInterpolateData.test_interp_all_goodÚcheck_scipyFTc                 C   s�   t  g d¢¡}tddtjg|d�}| ¡ }d|jd< | ¡ }t 	||¡ d}|rŒt
jt|d�� |jddd� W d   ƒ n1 s‚0    Y  d S )	N))r   Úa)r   Úb)r+   Úcr   r+   rA   z?Only `method=linear` interpolation is supported on MultiIndexesrK   r   r   )r   Úfrom_tuplesr   rC   rG   r-   rk   r1   r2   r3   rN   rO   rP   )r4   rÕ   Úidxr�   rl   rn   rQ   r"   r"   r#   Útest_interp_multiIndexv  s    
z0TestSeriesInterpolateData.test_interp_multiIndexc                 C   sd   t  d¡ tdtjdgg d¢d�}d}t jt|d�� |jdd	� W d   ƒ n1 sV0    Y  d S )
NrS   r   rg   )r   r+   r   rA   z8krogh interpolation requires that the index be monotonicrK   r   r;   ©rN   rh   r   rC   rG   rO   rP   r1   rˆ   r"   r"   r#   Útest_interp_nonmono_raise‡  s
    
z3TestSeriesInterpolateData.test_interp_nonmono_raiser    r
   c           	      C   s¼   t  d¡ tdtjdgtdd|d�d�}|dkr4d nt}d}tj||d	�� |j	|d
�}W d   ƒ n1 sl0    Y  |d ur’| 
¡ }t ||¡ tg d¢tdd|d�d�}t ||¡ d S )NrS   r   rg   ú1/1/2000©r*   ÚtzrA   r
   ú0Series.interpolate with method=pad is deprecatedrK   r;   )r]   r]   re   )rN   rh   r   rC   rG   r   rž   r2   r�   r1   rÅ   r3   )	r4   r    Ztz_naive_fixtureÚdfÚwarnrQ   rn   Úaltrl   r"   r"   r#   Útest_interp_datetime64Ž  s     
ÿ*þz0TestSeriesInterpolateData.test_interp_datetime64c                 C   s–   t dddd�}t|ƒ}tj|d< d}tjt|d�� |jdd	�}W d   ƒ n1 sT0    Y  | ¡ }t 	||¡ t|ƒ}|d
 |d< t 	||¡ d S )Nz
2015-04-05rg   z
US/Centralrß   r   rá   rK   r®   r;   r   )
r   r   r.   r/   r2   r�   rž   r1   rÅ   r3   )r4   Zdtir6   rQ   rn   rä   rl   r"   r"   r#   Ú#test_interp_pad_datetime64tz_values£  s    
*z=TestSeriesInterpolateData.test_interp_pad_datetime64tz_valuesc                 C   s,   t g d¢ƒ}|jdd�}|}t ||¡ d S )N©r]   ra   re   r   )r¤   )r   r1   r2   r3   r‘   r"   r"   r#   Útest_interp_limit_no_nans´  s    z3TestSeriesInterpolateData.test_interp_limit_no_nansr   c                 C   s^   t  d¡ tddtjdgƒ}d}t jt|d�� |j|d� W d   ƒ n1 sP0    Y  d S )NrS   r   r   rg   z6You must specify the order of the spline or polynomialrK   r;   rÜ   )r4   r    r�   rQ   r"   r"   r#   Útest_no_order»  s
    
z'TestSeriesInterpolateData.test_no_orderr   g      ð¿r‹   c                 C   s`   t  d¡ tddtjdgƒ}d}t jt|d�� |jd|d� W d   ƒ n1 sR0    Y  d S )	NrS   r   r   rg   z.order needs to be specified and greater than 0rK   r   r   rÜ   )r4   r   r�   rQ   r"   r"   r#   Ú%test_interpolate_spline_invalid_orderÄ  s
    
z?TestSeriesInterpolateData.test_interpolate_spline_invalid_orderc                 C   sN   t  d¡ tddtjddtjdgƒ}|jddd�}tg d	¢ƒ}t ||¡ d S )
NrS   r   r+   rŽ   r)   r½   r   r   ©r]   ra   re   r�   r¡   r¾   r¢   r˜   r‘   r"   r"   r#   Útest_splineÌ  s
    
z%TestSeriesInterpolateData.test_splinec                 C   sx   t  d¡ tddddtjdtjgƒ}|jdddd�}tg d	¢ƒ}t ||¡ |jddd
d�}tg d¢ƒ}t ||¡ d S )NrS   r   r+   rg   rŽ   é   r   )r    r   Úext)r]   ra   re   r�   r¡   r¾   r¾   r   rë   r˜   )r4   r�   Zresult3Z	expected3Úresult1Ú	expected1r"   r"   r#   Útest_spline_extrapolateÓ  s    
z1TestSeriesInterpolateData.test_spline_extrapolatec                 C   sR   t  d¡ tddtjddtjdgƒ}|jddd	d
�d |jddd�d ksNJ ‚d S )NrS   r   r+   rŽ   gffffff@r½   r   rg   r   )r    r   r�   r)   r   )rN   rh   r   rC   rG   r1   )r4   r�   r"   r"   r#   Útest_spline_smoothÞ  s    
ÿÿz,TestSeriesInterpolateData.test_spline_smoothc                 C   sh   t  d¡ tt d¡d dd�}tj|tj d¡ ddd¡< |j	d	d
d�}|j	d	d
d�}t
 ||¡ d S )NrS   r:   r+   rF   r8   r   r�   rg   r   r   r   )rN   rh   r   rC   rD   rG   ru   rv   Zintegersr1   r2   r3   )r4   r�   rï   rð   r"   r"   r#   Útest_spline_interpolationæ  s    
z3TestSeriesInterpolateData.test_spline_interpolationc                 C   s¤   t dtjdgt g d¢¡d�}|jdd�}t g d¢t g d¢¡d�}t ||¡ t dtjdgt g d¢¡d�}|jdd�}t g d	¢t g d¢¡d�}t ||¡ d S )
Nr   rg   rÈ   rA   rB   r;   rç   )r   r+   rŽ   )r]   g®(%«ªú?re   )r   rC   rG   r.   Zto_timedeltar1   r2   r3   )r4   râ   rn   rl   r"   r"   r#   Útest_interp_timedelta64ï  s    z1TestSeriesInterpolateData.test_interp_timedelta64c                 C   s`   t dddd�}ttj d¡ t|ƒ¡|d�}tj|d d d…< |jdd�}| ¡ }t	 
||¡ d S )	NrÞ   z	1/20/2000r,   )Úfreqr+   rA   r	   r;   )r   r   rC   ru   rv   r„   rE   rG   r1   r2   r3   )r4   ÚrngrI   rn   Úexpr"   r"   r#   Ú%test_series_interpolate_method_valuesü  s    z?TestSeriesInterpolateData.test_series_interpolate_method_valuesc                 C   s¤   t dddd�}tg d¢|ƒ}| |tjdd� ¡ ¡ }| |¡jdd	�}t ddd
d�}tg d¢|ƒ}| |tjdd� ¡ ¡ }| |¡jdd	�}t 	|j
|j
¡ d S )Nz1/1/2012rŽ   Z12D)r*   rõ   )r   rV   é   é$   r   )ÚdaysrB   r;   Z12h)Úhours)r   r   Úappendr.   Z
DateOffsetZsort_valuesrj   r1   r2   Zassert_numpy_array_equalr	   )r4   r   rI   rm   r÷   rn   r"   r"   r#   Ú test_series_interpolate_intraday  s    z:TestSeriesInterpolateData.test_series_interpolate_intradayÚind)rÖ   r×   rØ   r>   z
2019-01-01rŽ   ©Ústartr*   )r  Úendc           	      C   sÄ   t jddtjdg|d�}|\}}|dkr2t d¡ |dkrn|d jf i |¤Ž}tg d¢d|d	�}t 	||¡ nRd
|› d�}tj
t|d��( |d jf d|i|¤Ž W d   ƒ n1 s¶0    Y  d S )Nr   r   rg   rA   r   rS   r   rŠ   ©Únamer   z9Index column must be numeric or datetime type when using z_ method other than linear. Try setting a numeric or datetime index column before interpolating.rK   r    )r.   Ú	DataFramerC   rG   rN   rh   r1   r   r2   r3   rO   rP   )	r4   r%   rÿ   râ   r    r!   rn   rl   Zexpected_errorr"   r"   r#   Útest_interp_non_timedelta_index  s    

ÿÿz9TestSeriesInterpolateData.test_interp_non_timedelta_indexc           	      C   s”   t  d¡ tjddd�}tjddtjdg|d�}|\}}|dv rZ| t jj	|› d	�d
�¡ |d j
f d|i|¤Ž}tg d¢d|d�}t ||¡ dS )z°
        Tests for non numerical index types  - object, period, timedelta
        Note that all methods except time, index, nearest and values
        are tested here.
        rS   r   rŽ   r   r   rg   rA   >   r   r   z2 interpolation is not supported for TimedeltaIndexr'   r    rŠ   r  N)rN   rh   r.   Ztimedelta_ranger  rC   rG   ZapplymarkerÚmarkÚxfailr1   r   r2   r3   )	r4   r   r%   rÿ   râ   r    r!   rn   rl   r"   r"   r#   Ú test_interpolate_timedelta_index4  s    
ÿÿz:TestSeriesInterpolateData.test_interpolate_timedelta_indexzascending, expected_values)r   r+   rg   r�   r:   ©r:   r�   rg   r+   r   c                 C   sN   t ddtjddgg d¢d�}|j|d�jdd	�}t ||td
�}t ||¡ d S )Nr:   r�   r+   r   r
  )rÍ   r   )Ú	ascendingr   r;   )rÍ   r   r9   )r   rC   rG   Z
sort_indexr1   rF   r2   r3   )r4   r  Zexpected_valuesrI   rn   rl   r"   r"   r#   Útest_interpolate_unsorted_indexK  s    z9TestSeriesInterpolateData.test_interpolate_unsorted_indexc              	   C   s„   t g d¢td�}d}d}tjt|d��J tjt|d�� |jdd� W d   ƒ n1 sX0    Y  W d   ƒ n1 sv0    Y  d S )N)rÖ   Nr×   r8   z$Series.interpolate with object dtypezInvalid fill methodrK   Zasfreqr;   )	r   r€   rN   rO   rP   r2   r�   rž   r1   )r4   r6   r°   rQ   r"   r"   r#   Útest_interpolate_asfreq_raisesV  s    z8TestSeriesInterpolateData.test_interpolate_asfreq_raisesc                 C   sX   t  d¡ ttjddtjdtjgƒ}|jddd�}ttjdddddgƒ}t ||¡ d S )NrS   r   r   rg   r
   )r    r¯   r˜   )r4   r6   rn   rl   r"   r"   r#   Útest_interpolate_fill_value^  s
    
z5TestSeriesInterpolateData.test_interpolate_fill_value)CÚ__name__Ú
__module__Ú__qualname__rN   r  r  r7   rJ   rR   ro   ry   r|   r}   r~   Zparametrizer   ÚtdZ
skip_if_nor‚   r‡   r‰   r�   r’   r•   rš   r    r¦   r©   rª   r¬   r±   r¶   rº   r¼   rÄ   rÊ   rC   rG   ÚrangerÎ   rÏ   rÑ   rÒ   rÓ   rÔ   rÛ   rÝ   rå   ræ   rè   ré   rê   rì   rñ   rò   ró   rô   rø   rþ   r.   Zperiod_rangeZinterval_ranger  r	  r  r  r  r"   r"   r"   r#   r&   P   s  
ÿþþ	
	ÿþþ	
*


/þ

"ý" 
ý"ý" 
ý
ý
ýæþ#

"ý" 
ý"ý" 
ýðþ


ÿ



	ýþ
þ
r&   )ÚnumpyrC   rN   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsr  Zpandasr.   r   r   r   r   r   Zpandas._testingZ_testingr2   Zfixturer$   r%   r&   r"   r"   r"   r#   Ú<module>   s   ÿ
ÿ
