3
Ud(.                 @   sL   d dl Zd dlZd dljjZd dlmZm	Z	m
Z
 d dlj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ej	dd Z
ej	dd Zdd Zej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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jdd:d;gd1d2 Zejjd3d4d5d6gd7d8 Zd9S )<TestDataFrameInterpolatec             C   s   t ddtjdgdddtjgddddgtdd}t d	d
ddgd	dddgddddgtdd}|j }tj|| |jdj }|jd}d|jd< d|jd< tj|| d S )N         	         abcd)ABCDg      ?g       @g      @g      @g      "@r   r   r   )r
   r   )r   r   )	r   npnanlistinterpolatetmassert_frame_equal	set_indexloc)selfdfexpectedresult r   _/var/www/html/virt/lib64/python3.6/site-packages/pandas/tests/frame/methods/test_interpolate.pytest_interp_basic   s"    






z*TestDataFrameInterpolate.test_interp_basicc             C   s.   t  }|j }||k	st|}tj|| d S )N)r   r   AssertionErrorr   r   )r   r   r   r   r   r   r   test_interp_empty%   s
    z*TestDataFrameInterpolate.test_interp_emptyc          
   C   s`   t ddtjdgdddtjgddddgtdd}d	}tjt|d
 |jdd W d Q R X d S )Nr   r   r   r	   r
   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   pytestraises
ValueErrorr   )r   r   msgr   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dddd	gtd
d}|d j }tddddgdd}tj|| |d jdd}tddddgdd}tj|| d S )Ng      ?g       @g      @r   r   r	   r   r
   r   r   )r   r   r   r   r   g      @)nameinfer)downcast)r   r   r   r   r   r   r   Zassert_series_equal)r   r   r   r   r   r   r   test_interp_combo@   s    
z*TestDataFrameInterpolate.test_interp_comboc          
   C   sZ   t ddtjdgtjdddgd}|jd}d}tjt|d |jd	d
 W d Q R X 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"   values)r#   )r   r   r   r   r$   r%   NotImplementedErrorr   )r   r   r'   r   r   r   test_interp_nan_idxR   s
    "
z,TestDataFrameInterpolate.test_interp_nan_idxc          	   C   sn  t ddtjddtjdgddddddd	gd
}|jd}|j }|jddd}d|jjd< d|jjd< tj	|| |jdd}d|jjd< d|jjd< tj	|| |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	|| |jdd}d|jjd< d|jjd< tj	|| |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   
polynomial)r#   ordergUUU@gu:@Zcubic)r#   gv:@gb+hZ@ZnearestF)Zcheck_dtypeZ	quadraticg^r@g!g@ZslineargX ;@Zzerog       @)
r   r   r   r   copyr   r   r   r   r   )r   r   r   r   r   r   r   test_interp_various\   s8    ,
z,TestDataFrameInterpolate.test_interp_variousc          	   C   s   t ddtjddtjdgddddddd	gd
}|jdd}|j }d|jd< d|jd< tj|| |jddd}tj||jtj	 |jdd}|j }|d |d< tj|| |jdd}d|jd< d|jd< tj|| d S )Nr   r   r   r   r0   r
   r1   r2   r3   )r   r   Zbarycentric)r#   r      r*   )r#   r+   ZkroghZpchipg      @)r   r   )r   r   )r   r   )r   r   )
r   r   r   r   r6   r   r   r   astypeint64)r   r   r   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ddddgd}|jdd	}|j }d|jd< d|jd< d|jd< |d jtj|d< tj	|| |jddd}tj	|| |jd
d	}|j }tj	|| d S )Nr   r   r   r
   r   r8   r0   )r   r   r   r
   r   )axisr   r-   )r<   r#   )r
   r   )r   r   )r   r
   )
r   r   r   r   r6   r   r9   float64r   r   )r   r   r   r   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   s\   dt jdgdt jdgdddgd}t|t jd	}|j|d
d}|j|d
d}tj|| d S )Nr   r8   r   r0   r   r   r1   )r   r   r   )dtypelinear)r<   r#   )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   sH   t dddtjddtjtjdg	ddd	dd	ddddg	d
}|jdd d S )Nr   g      ?g      ?r   r1   @   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)Zmarksc             C   sv   t tjtjdddgtjddtjdgd}|j }|j }d|d	 jd< tj|| |rr|jd
dd}tj|| d S )Ng      ?g      ?r   r
   g      @r   )r   r   g      @r   r4   r   )r#   r5   g      g      )r   r   r   r   r6   r   r   r   )r   rL   r   r   r   r   r   r   test_interp_leading_nans   s    (z1TestDataFrameInterpolate.test_interp_leading_nansc          
   C   sx   t ddtjdgddddgtjddd	gtjtjd
d
gddddgd}d}tjt|d |jdj|d W d Q R X d S )Nr   r   r   abcdr   r0   r	   r
   )r   r   r   r   EzvCannot interpolate with all object-dtype columns in the DataFrame. Try setting at least one column to a numeric dtype.)r"   object)r<   )r   r   r   r$   r%   	TypeErrorr9   r   )r   r<   r   r'   r   r   r   test_interp_raise_on_only_mixed   s    
z8TestDataFrameInterpolate.test_interp_raise_on_only_mixedc          	   C   sH   t dddgdddgddd	}d
}tjt|d |j  W d Q R X d S )Nr   r   r
   r   r   r8   )r   r   rU   )rC   zvCannot interpolate with all object-dtype columns in the DataFrame. Try setting at least one column to a numeric dtype.)r"   )r   r$   r%   rV   r   )r   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ddddgi}|j }|d jdd}|d ksNttj|| |j }|d jddd	}|d ksttj||jd
 d S )NrP   g      ?g       @g      @g      @T)inplacer*   )rY   r+   r:   )	r   r   r   r6   r   r    r   r   r9   )r   r   r   r   return_valuer   r   r   test_interp_inplace   s    z,TestDataFrameInterpolate.test_interp_inplacec             C   sf   t ddddgtjdddgddddgd}|jdd	d
d}|jdd	dd}|d ksVttj|| d S )Ng      ?g       @g      @g      @r
   r   )rP   rQ   rR   rD   r   F)r#   r<   rY   T)r   r   r   r   r    r   r   )r   r   r   rZ   r   r   r   test_interp_inplace_row
  s    (z0TestDataFrameInterpolate.test_interp_inplace_rowc          	   C   s   t ddtjdgddddgddtjdgddddgd	}t tjddddgd
dtjddddgddtjddddgd
dtjddddgd
dd	}|jd d}tj|| |ddg jd d}tj||ddg  d S )Nr   r   r   r
   g      ?g       @g      @g      @)r   r   r   r   r=   )rC   r:   )r+   r   r   )r   r   r   arrayr   r   r   )r   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j||}tj||dk < t|||d}|jddd}|jddd	d
}|d ksdttj	|| d S )Nr   z
2014-01-01)startperiodsg      ?)rA   rB   rG   r   time)r<   r#   T)r<   r#   rY   )
r   r   randomZrandr   r   r   r    r   r   )r   r<   r`   idxrG   r   r   rZ   r   r   r   test_interp_time_inplace_axis.  s    z6TestDataFrameInterpolate.test_interp_time_inplace_axisc             C   sl   t jddd}t j|}tt j|dt jd|dj|d d}|jd	|d
}|jd	|d
}tj	|| d S )Nr   d   i  
   r   )rG   rA   rB   gGz?)rB   rD   )r#   r<   )rf   r   )
r   Zlinspacesinr   ZtileZarangeZreindexr   r   r   )r   rE   rF   xyr   r   r   r   r   r   test_interp_string_axis;  s    
z0TestDataFrameInterpolate.test_interp_string_axisr#   ZffillZ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j|| d S )Ng      ?g       @g      @g      @g      @g      @g       @g      $@g      "@g      >@)r   r   r   )r<   r#   )r#   r<   )r   r   r   Zfillnar   r   r   )r   r<   r#   r   r   r   r   r   r   test_interp_fillna_methodsG  s    z3TestDataFrameInterpolate.test_interp_fillna_methodsN)rA   r   )rB   r   )__name__
__module____qualname__r   r!   r(   r,   r/   tdZskip_if_no_scipyr7   r;   r>   r$   markZparametrizeparamrH   rK   rO   rW   rX   r[   r\   r^   rd   rj   rl   r   r   r   r   r   
   s0   
'
 
r   )Znumpyr   r$   Zpandas.util._test_decoratorsutilZ_test_decoratorsrp   Zpandasr   r   r   Zpandas._testingZ_testingr   r   r   r   r   r   <module>   s
   
