U
    ¾mœd¯{  ã                   @   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ddddddd	d
dddddddddgd�dd„ ƒZejdddd	d
dddddddddg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ÚcubicZbarycentricÚkroghÚ
polynomialÚsplineÚpiecewise_polynomialÚfrom_derivativesÚpchipÚakimaÚcubicspline)Úparamsc                 C   s"   | j }|dk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!   úe/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/pandas/tests/series/methods/test_interpolate.pyÚnontemporal_method   s    r#   c                 C   s"   | j }|dk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e	j
d	d
„ ƒZe	j
dd„ ƒZe	j
dd„ ƒZe	j
dd„ ƒZe	j
dd„ ƒZej di ejdddœe	j
d�g¡dd„ ƒZdd„ Zdd„ Zej di ejdddœe	j
d�g¡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*d+d,g¡d-d.„ ƒZd/d0„ Zej d1d2d3g¡d4d5„ ƒZd6d7„ Zd8d9„ Zd:d;„ Z d<d=„ Z!d>d?„ Z"ej d@dAdBdCdDdEdFdGdHg¡dIdJ„ ƒZ#ej dKe$j%e$j%dLe$j%e$j%e$j%dMe$j%e$j%g	e$j%e$j%dNdNdNdNdOe$j%e$j%g	dPdQdRœfe$j%e$j%dLe$j%e$j%e$j%dMe$j%e$j%g	e$j%e$j%dNdNe$j%e$j%dOe$j%e$j%g	dPdQddSœfe$j%e$j%dLe$j%e$j%e$j%dMe$j%e$j%g	e$j%e$j%dNe$j%e$j%e$j%dOdOdOg	dPdTdRœfe$j%e$j%dLe$j%e$j%e$j%dMe$j%e$j%g	e$j%e$j%dNe$j%e$j%e$j%dOdOe$j%g	dPdTddSœ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dPdTddSœfe&dUƒe&dUƒdPdTddSœff¡dVdW„ ƒZ'ej dKe$j%e$j%dLe$j%e$j%e$j%dMe$j%e$j%g	e$j%e$j%dNdOdOdOdOe$j%e$j%g	dXdQdRœfe$j%e$j%dLe$j%e$j%e$j%dMe$j%e$j%g	e$j%e$j%dNe$j%e$j%dOdOe$j%e$j%g	dXdQddSœfe$j%e$j%dLe$j%e$j%e$j%dMe$j%e$j%g	dNdNdNe$j%e$j%e$j%dOe$j%e$j%g	dXdTdRœfe$j%e$j%dLe$j%e$j%e$j%dMe$j%e$j%g	e$j%dNdNe$j%e$j%e$j%dOe$j%e$j%g	dXdTddSœff¡dYdZ„ ƒZ(d[d\„ Z)d]d^„ Z*d_d`„ Z+e	j
dadb„ ƒZ,ej dcddejdee	j
d�g¡dfdg„ ƒZ-e	j
dhdi„ ƒZ.e	j
ej djdkdPg¡dldm„ ƒƒZ/dndo„ Z0dpdq„ Z1e	j
ej djddrg¡dsdt„ ƒƒZ2e	j
ej dud+dvd,dwe$j%g¡dxdy„ ƒƒZ3e	j
dzd{„ ƒZ4e	j
d|d}„ ƒZ5e	j
d~d„ ƒZ6e	j
d€d�„ ƒZ7d‚dƒ„ Z8d„d…„ Z9d†d‡„ Z:ej dˆd‰dŠd‹dŒge;j<d�dŽd��e;j=d,dŽd��g¡d‘d’„ ƒZ>e	j
d“d”„ ƒZ?ej d•dedd–dLd—d˜gfddd˜d—dLd–dgfg¡d™dš„ ƒZ@d2S )›Ú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   s     z>TestSeriesInterpolateData.test_interpolate.<locals>.<listcomp>©r   Útime)r   ÚnpÚarangeÚlenÚfloatr   r,   ÚNaNr0   r1   r2   Úastype)r3   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   s@   t dddtjgƒ}d}tjt|d�� |jdd� W 5 Q R X d S )Nr   r   r*   zGtime-weighted interpolation only works on Series.* with a DatetimeIndex©Úmatchr@   r:   )r   rA   rE   ÚpytestÚraisesÚ
ValueErrorr0   )r3   Znon_tsÚmsgr!   r!   r"   Ú/test_interpolate_time_raises_for_non_timeseriesp   s    zITestSeriesInterpolateData.test_interpolate_time_raises_for_non_timeseriesc                 C   s�   t ddddgƒ}t ddddd	d
dddg	tdddddddddg	ƒd�}|j tddddddgƒ¡ t¡}| |¡jdd�dd… }t 	||¡ d S )Nr9   é   é   é   ç      &@ç     €&@ç      '@ç     €'@ç      (@ç     €(@ç      )@ç     €)@ç      *@ç      ð?ç      ô?ç      ø?ç      ü?ç       @ç      @ç      @ç      @ç      @r?   r   r:   r   é   ©
r   r   r   ÚunionrF   rD   Úreindexr0   r1   r2   )r3   r5   ÚexpectedÚ	new_indexÚresultr!   r!   r"   Útest_interpolate_cubicsplinex   s    þÿz6TestSeriesInterpolateData.test_interpolate_cubicsplinec              	   C   s\   t t tjjdd�¡ƒ}|j tddddddgƒ¡ t	¡}| 
|¡jd	d
�}|dd…  d S )Néd   )Úsizeg      H@g     ÀH@g     àH@g      I@g     @I@g     `I@r   r:   é1   é3   )r   rA   ÚsortÚrandomÚuniformr   rg   r   rF   rD   rh   r0   )r3   r5   rj   Úinterp_sr!   r!   r"   Útest_interpolate_pchip‡   s    ÿþz0TestSeriesInterpolateData.test_interpolate_pchipc                 C   s  t ddddgƒ}t ddddd	d
dddg	tdddddddddg	ƒd�}|j tddddddgƒ¡ t¡}| |¡jdd�}t 	|dd… |¡ t ddddd	ddddg	tdddddddddg	ƒd�}|j tddddddgƒ¡ t¡}| |¡jddd�}t 	|dd… |¡ d S )Nr9   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   r?   r   r:   r   re   )r   Zderrf   ©r3   r5   ri   rj   rt   r!   r!   r"   Útest_interpolate_akima“   s&    þÿþÿz0TestSeriesInterpolateData.test_interpolate_akimac                 C   s�   t ddddgƒ}t ddddd	d
dddg	tdddddddddg	ƒd�}|j tddddddgƒ¡ t¡}| |¡jdd�}t 	|dd… |¡ d S )Nr9   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   r?   r   r:   r   re   rf   rv   r!   r!   r"   Ú%test_interpolate_piecewise_polynomial­   s    þÿz?TestSeriesInterpolateData.test_interpolate_piecewise_polynomialc                 C   s�   t ddddgƒ}t ddddd	d
dddg	tdddddddddg	ƒd�}|j tddddddgƒ¡ t¡}| |¡jdd�}t 	|dd… |¡ d S )Nr9   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   r?   r   r:   r   re   rf   rv   r!   r!   r"   Ú!test_interpolate_from_derivatives¼   s    þÿz;TestSeriesInterpolateData.test_interpolate_from_derivativesr    r   r   ©r   r   )Zmarksc                 C   sL   t tjtjgƒ}t |jf |Ž|¡ t g td� ¡ }t |jf |Ž|¡ d S )Nr7   )r   rA   Únanr1   r2   r0   Úobject)r3   r    Úsr!   r!   r"   Útest_interpolate_cornersË   s    
z2TestSeriesInterpolateData.test_interpolate_cornersc                 C   sÊ   t tjt tj d¡¡d�}tj d¡|d d d…< |jj 	t
¡}|jdd�}| ¡ }t|jƒ}| }t t || || |j| ¡|j| d�}t || |¡ |jdd�}t ||¡ t || |¡ d S )Né   r?   r9   re   r   r:   r	   )r   rA   r{   rq   rr   ZrandÚrandnr   r	   rF   rD   r0   r,   r   Zinterpr1   r2   )r3   r}   Úvalsrk   ri   ÚbadZgoodZother_resultr!   r!   r"   Útest_interpolate_index_valuesÛ   s    
 ÿz7TestSeriesInterpolateData.test_interpolate_index_valuesc              	   C   sH   t ddtjtjtjdgƒ}d}tjt|d�� |jdd� W 5 Q R X d S )Nr   re   rP   zStime-weighted interpolation only works on Series or DataFrames with a DatetimeIndexrI   r@   r:   ©r   rA   r{   rK   rL   rM   r0   ©r3   r}   rN   r!   r!   r"   Útest_interpolate_non_tsò   s
    ÿz1TestSeriesInterpolateData.test_interpolate_non_tsc                 C   s>   t ddtjdgƒ}|jf |Ž}t ddddgƒ}t ||¡ d S )Nr   r   re   ç        r\   r`   rd   ©r   rA   r{   r0   r1   r2   )r3   r    r}   rk   ri   r!   r!   r"   Útest_nan_interpolateû   s    
z.TestSeriesInterpolateData.test_nan_interpolatec                 C   sR   t ddtjdgddddgd�}| ¡ }t dd	d
dgddddgd�}t ||¡ d S )Nr   r*   é   re   r(   é	   r?   r\   r`   rd   ç      @rˆ   ©r3   r}   rk   ri   r!   r!   r"   Útest_nan_irregular_index
  s    z2TestSeriesInterpolateData.test_nan_irregular_indexc                 C   sJ   t dddtjgtdƒd�}| ¡ }t ddddgtdƒd�}t ||¡ d S )	Nr   r   r*   Úabcdr?   r‡   r\   r`   )r   rA   r{   Úlistr0   r1   r2   r�   r!   r!   r"   Útest_nan_str_index  s    z,TestSeriesInterpolateData.test_nan_str_indexc                 C   sV   t ddtjdgddddgd�}|jdd�}t d	d
ddgddddgd�}t ||¡ d S )Nr   rŠ   é   r*   re   r?   r   r:   r\   rŒ   ç      "@g      0@rˆ   )r3   Úsqrk   ri   r!   r!   r"   Útest_interp_quad  s    z*TestSeriesInterpolateData.test_interp_quadc                 C   sl  t ddtjdtjdgƒ}t ddddd	d
gƒ}|jdd�}t ||¡ |jddd�}t ||¡ t ddddddgƒ}|jdd�}t || d¡¡ |jddd�}t ||¡ t ddddddgƒ}|jdd�}t || d¡¡ |jddd�}t ||¡ t dddddd
gƒ}|jdd�}t ||¡ |jddd�}t ||¡ t dddddd
gƒ}|jdd�}t ||¡ d S )Nr   re   rQ   é   r\   rd   g      @rW   g     €2@g      9@r   r:   Zinfer)r   Zdowncastr
   rD   r   g÷:©/KK@gL8ô2@r   g333333@g3333332@r   )r   rA   r{   r0   r1   r2   rF   ©r3   r}   ri   rk   r!   r!   r"   Útest_interp_scipy_basic  s0    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   re   rP   r\   rd   ç      @ç      @rS   r   r*   ©r   Úlimitrˆ   r—   r!   r!   r"   Útest_interp_limitB  s    z+TestSeriesInterpolateData.test_interp_limitrœ   éÿÿÿÿr   c              	   C   sN   t ddtjdgƒ}|\}}tjtdd�� |jf ||dœ|—Ž W 5 Q R X d S )Nr   r*   rŠ   zLimit must be greater than 0rI   ©rœ   r   r„   )r3   r#   rœ   r}   r   r    r!   r!   r"   Ú*test_interpolate_invalid_nonpositive_limitI  s    zDTestSeriesInterpolateData.test_interpolate_invalid_nonpositive_limitc              	   C   sR   t ddtjdgƒ}|\}}d}tjtdd�� |jf ||dœ|—Ž W 5 Q R X d S )Nr   r*   rŠ   r`   zLimit must be an integerrI   rŸ   r„   )r3   r#   r}   r   r    rœ   r!   r!   r"   Ú$test_interpolate_invalid_float_limitQ  s
    z>TestSeriesInterpolateData.test_interpolate_invalid_float_limitÚinvalid_methodNZnonexistent_methodc              	   C   sv   t ddtjdtjdgƒ}d|› d�}tjt|d�� |j|d� W 5 Q R X tjt|d�� |j|d	d
� W 5 Q R X d S )Nr   re   rQ   r–   zmethod must be one of.* Got 'z	' insteadrI   r:   rž   r›   r„   )r3   r¢   r}   rN   r!   r!   r"   Útest_interp_invalid_methodY  s    z4TestSeriesInterpolateData.test_interp_invalid_methodc              	   C   sH   t ddtjdtjdgƒ}d}tjt|d�� |jddd� W 5 Q R X d S )	Nr   re   rQ   r–   z&Cannot pass both fill_value and methodrI   Úpad)Z
fill_valuer   r„   )r3   r5   rN   r!   r!   r"   Ú$test_interp_invalid_method_and_valuef  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   re   rP   r\   rd   r™   rš   rS   r   r*   Úforward©r   rœ   Úlimit_directionZFORWARDrˆ   r—   r!   r!   r"   Útest_interp_limit_forwardn  s    z3TestSeriesInterpolateData.test_interp_limit_forwardc              	   C   sÀ   t tjddtjtjtjdtjgƒ}t ddddddddgƒ}|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\   rd   rS   r™   rš   r“   r   Úboth©r   r¨   r¦   Úbackwardrˆ   r—   r!   r!   r"   Útest_interp_unlimitedz  s    "z/TestSeriesInterpolateData.test_interp_unlimitedc              	   C   st   t ddtjtjtjdgƒ}d}tjt|d�� |jdddd	� W 5 Q R X tjt|d�� |jddd
� W 5 Q R X d S )Nr   re   rP   zVInvalid limit_direction: expecting one of \['forward', 'backward', 'both'\], got 'abc'rI   r   r*   Úabcr§   r«   r„   r…   r!   r!   r"   Útest_interp_limit_bad_direction‰  s    ÿz9TestSeriesInterpolateData.test_interp_limit_bad_directionc              
   C   s  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 5 Q R X d S )Nre   é   rd   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 abcrI   r®   )	r   rA   r{   r0   r1   r2   rK   rL   rM   )r3   r}   ri   rk   rN   r!   r!   r"   Útest_interp_limit_area˜  sV    (" ÿ$   ÿ$ ÿ$   ÿ$  ÿ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   sL   t dddgƒ}d|› d|› d�}tjt|d�� |j||d� W 5 Q R X d S )	Nr   r*   re   z`limit_direction` must be 'z' for method `ú`rI   r«   )r   rK   rL   rM   r0   )r3   r   r¨   ri   r}   rN   r!   r!   r"   Ú"test_interp_limit_direction_raisesÇ  s    z<TestSeriesInterpolateData.test_interp_limit_direction_raiseszdata, expected_data, kwargsre   r°   rd   rš   r¤   r²   r³   rµ   r¶   r(   c                 C   s,   t |ƒ}t |ƒ}|jf |Ž}t ||¡ d S ©N©r   r0   r1   r2   ©r3   ÚdataZexpected_datar    r}   ri   rk   r!   r!   r"   Útest_interp_limit_area_with_padÜ  s    &z9TestSeriesInterpolateData.test_interp_limit_area_with_padrº   c                 C   s,   t |ƒ}t |ƒ}|jf |Ž}t ||¡ d S r½   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 dddddddddddgƒ}|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   re   rP   r\   rd   rš   r“   rS   r   r*   r¬   r§   r™   rª   r°   r‹   rQ   rŒ   r±   g      $@rW   rˆ   r—   r!   r!   r"   Útest_interp_limit_direction(  s     *ÿz5TestSeriesInterpolateData.test_interp_limit_directionc                 C   s€   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 ddddddgƒ}|jdddd
�}t ||¡ d S )Nr(   r°   r‹   r™   rš   r“   r   r*   r¬   r§   rª   rˆ   r—   r!   r!   r"   Útest_interp_limit_to_endsA  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_endsM  s    z7TestSeriesInterpolateData.test_interp_limit_before_endsc                 C   s@   t dddgƒ}|jddd�}t ||¡ | ¡ }t ||¡ d S )Nr   r*   re   r   rz   r¾   )r3   r}   rk   r!   r!   r"   Útest_interp_all_good]  s
    z.TestSeriesInterpolateData.test_interp_all_goodÚcheck_scipyFTc              	   C   s~   t  dddg¡}tddtjg|d�}| ¡ }d|jd< | ¡ }t 	||¡ d}|rzt
jt|d�� |jd	dd
� W 5 Q R X d S )N)r   Úa)r   Úb)r*   Úcr   r*   r?   z?Only `method=linear` interpolation is supported on MultiIndexesrI   r   rz   )r   Úfrom_tuplesr   rA   r{   r,   Úlocr0   r1   r2   rK   rL   rM   )r3   rÇ   Úidxr}   ri   rk   rN   r!   r!   r"   Útest_interp_multiIndexg  s    
z0TestSeriesInterpolateData.test_interp_multiIndexc              	   C   sH   t dtjdgdddgd�}d}tjt|d�� |jdd	� W 5 Q R X d S )
Nr   re   r   r*   r?   z8krogh interpolation requires that the index be monotonicrI   r   r:   r„   r…   r!   r!   r"   Útest_interp_nonmono_raisex  s    z3TestSeriesInterpolateData.test_interp_nonmono_raiser   r
   c                 C   sV   t dtjdgtdd|d�d�}|j|d�}t dddgtdd|d�d�}t ||¡ d S )	Nr   re   ú1/1/2000©r)   Útzr?   r:   r\   rd   )r   rA   r{   r   r0   r1   r2   )r3   r   Ztz_naive_fixtureÚdfrk   ri   r!   r!   r"   Útest_interp_datetime64  s    
 ÿþz0TestSeriesInterpolateData.test_interp_datetime64c                 C   sP   t dddd�}t|ƒ}tj|d< |jdd�}t|ƒ}|d |d< t ||¡ d S )	Nz
2015-04-05re   z
US/CentralrÑ   r   r¤   r:   r   )r   r   r-   r.   r0   r1   r2   )r3   Zdtir5   rk   ri   r!   r!   r"   Ú#test_interp_pad_datetime64tz_valuesŒ  s    
z=TestSeriesInterpolateData.test_interp_pad_datetime64tz_valuesc                 C   s.   t dddgƒ}|jdd�}|}t ||¡ d S )Nr\   r`   rd   r   )rœ   r¾   r�   r!   r!   r"   Útest_interp_limit_no_nans—  s    z3TestSeriesInterpolateData.test_interp_limit_no_nansr   c              	   C   s@   t ddtjdgƒ}d}tjt|d�� |j|d� W 5 Q R X d S )Nr   r   re   z6You must specify the order of the spline or polynomialrI   r:   r„   )r3   r   r}   rN   r!   r!   r"   Útest_no_orderž  s    z'TestSeriesInterpolateData.test_no_orderr   g      ð¿r‡   c              	   C   sB   t ddtjdgƒ}d}tjt|d�� |jd|d� W 5 Q R X d S )Nr   r   re   z.order needs to be specified and greater than 0rI   r   rz   r„   )r3   r   r}   rN   r!   r!   r"   Ú%test_interpolate_spline_invalid_order§  s    z?TestSeriesInterpolateData.test_interpolate_spline_invalid_orderc                 C   sN   t ddtjddtjdgƒ}|jddd�}t dd	d
ddddgƒ}t ||¡ d S )Nr   r*   rŠ   r(   r°   r   rz   r\   r`   rd   rŒ   r™   r±   rš   rˆ   r�   r!   r!   r"   Útest_spline¯  s    z%TestSeriesInterpolateData.test_splinec                 C   s‚   t ddddtjdtjgƒ}|jdddd�}t dd	d
ddddgƒ}t ||¡ |jdddd�}t dd	d
ddddgƒ}t ||¡ d S )Nr   r*   re   rŠ   é   r   )r   r   Úextr\   r`   rd   rŒ   r™   r±   r   rš   rˆ   )r3   r}   Zresult3Z	expected3Úresult1Ú	expected1r!   r!   r"   Útest_spline_extrapolate¶  s    z1TestSeriesInterpolateData.test_spline_extrapolatec                 C   sH   t ddtjddtjdgƒ}|jdddd	�d
 |jddd�d
 ksDt‚d S )Nr   r*   rŠ   gffffff@r°   r   re   r   )r   r   r}   r(   rz   )r   rA   r{   r0   ÚAssertionError)r3   r}   r!   r!   r"   Útest_spline_smoothÁ  s
    ÿÿz,TestSeriesInterpolateData.test_spline_smoothc                 C   sX   t t d¡d dd�}tj|tj ddd¡< |jdd	d
�}|jdd	d
�}t ||¡ d S )Nr9   r*   rD   r7   r   r‹   re   r   r   rz   )	r   rA   rB   r{   rr   Úrandintr0   r1   r2   )r3   r}   rÜ   rÝ   r!   r!   r"   Útest_spline_interpolationÉ  s
    z3TestSeriesInterpolateData.test_spline_interpolationc                 C   s°   t dtjdgt dddg¡d�}|jdd�}t ddd	gt dddg¡d�}t ||¡ t dtjdgt ddd
g¡d�}|jdd�}t ddd	gt ddd
g¡d�}t ||¡ d S )Nr   re   r*   r?   r@   r:   r\   r`   rd   rŠ   g®(%«ªú?)r   rA   r{   r-   Zto_timedeltar0   r1   r2   )r3   rÓ   rk   ri   r!   r!   r"   Útest_interp_timedelta64Ò  s      z1TestSeriesInterpolateData.test_interp_timedelta64c                 C   sZ   t dddd�}ttj t|ƒ¡|d�}tj|d d d…< |jdd�}| ¡ }t 	||¡ d S )	NrÐ   z	1/20/2000r+   )Úfreqr?   r*   r	   r:   )
r   r   rA   rr   r€   rC   r{   r0   r1   r2   )r3   ÚrngrG   rk   Úexpr!   r!   r"   Ú%test_series_interpolate_method_valuesß  s    z?TestSeriesInterpolateData.test_series_interpolate_method_valuesc                 C   s¬   t dddd�}tddddg|ƒ}| |tjd	d
� ¡ ¡ }| |¡jdd�}t dddd�}tddddg|ƒ}| |tjd	d� ¡ ¡ }| |¡jdd�}t 	|j
|j
¡ d S )Nz1/1/2012rŠ   Z12D)r)   rä   r   rQ   é   é$   r   )Údaysr@   r:   Z12H)Úhours)r   r   Úappendr-   Z
DateOffsetZsort_valuesrh   r0   r1   Zassert_numpy_array_equalr	   )r3   r   rG   rj   ræ   rk   r!   r!   r"   Ú test_series_interpolate_intradayê  s    z:TestSeriesInterpolateData.test_series_interpolate_intradayÚindrÈ   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 |Ž}tdd	d
dgd|d�}t 	||¡ n>d|› d�}tj
t|d�� |d jf d|i|—Ž W 5 Q R X d S )Nr   r   re   r?   r   Zscipyr   r‡   r\   r`   rd   ©Ú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.rI   r   )r-   Ú	DataFramerA   r{   rK   Zimportorskipr0   r   r1   r2   rL   rM   )	r3   r$   rî   rÓ   r   r    rk   ri   Zexpected_errorr!   r!   r"   Útest_interp_non_timedelta_indexù  s    


ÿz9TestSeriesInterpolateData.test_interp_non_timedelta_indexc           	      C   s�   t jddd�}t jddtjdg|d�}|\}}|dkrR|j tjj	|› d�d	�¡ |d j
f d
|i|—Ž}tddddg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.
        r   rŠ   rï   r   re   r?   >   r   r   z2 interpolation is not supported for TimedeltaIndexr&   r   r‡   r\   r`   rd   rò   N)r-   Ztimedelta_rangerô   rA   r{   ÚnodeZ
add_markerrK   ÚmarkÚxfailr0   r   r1   r2   )	r3   r   r$   rî   rÓ   r   r    rk   ri   r!   r!   r"   Ú test_interpolate_timedelta_index  s    ÿÿz:TestSeriesInterpolateData.test_interpolate_timedelta_indexzascending, expected_valuesr*   r‹   r9   c                 C   sT   t ddtjddgdddddgd�}|j|d�jdd	�}t ||td
�}t ||¡ d S )Nr9   r‹   r*   r   re   )rÀ   r   )Ú	ascendingr   r:   )rÀ   r   r8   )r   rA   r{   Z
sort_indexr0   rD   r1   r2   )r3   rú   Zexpected_valuesrG   rk   ri   r!   r!   r"   Útest_interpolate_unsorted_index.  s    "z9TestSeriesInterpolateData.test_interpolate_unsorted_index)AÚ__name__Ú
__module__Ú__qualname__rK   r÷   rø   r6   rH   rO   ÚtdZskip_if_no_scipyrl   ru   rw   rx   ry   Zparametrizer   r~   rƒ   r†   r‰   rŽ   r‘   r•   r˜   r�   r    r¡   r£   r¥   r©   r­   r¯   r·   r¼   rA   r{   Ú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%   P   sJ  





 ÿþþ	
	 ÿþþ	


$

/øþ
"ý" 
ý"ý" 
ý
ý
ýæþ#
"ý" 
ý"ý" 
ýðþ

	 ÿ







ýþ

"þr%   )ÚnumpyrA   rK   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsrÿ   Zpandasr-   r   r   r   r   r   Zpandas._testingZ_testingr1   Zfixturer#   r$   r%   r!   r!   r!   r"   Ú<module>   sZ   ïÿ
òÿ
