Closed
Description
Using piecewise_polynomial results in ZeroDivisionError
. I assume there is something else that needs to be passed (not order
) to make this work:
test = pd.DataFrame({'a':range(1000)})
test.ix[3] = np.nan
test.interpolate(method='piecewise_polynomial')
ZeroDivisionError Traceback (most recent call last)
<ipython-input-51-ae8bbf1d5e8d> in <module>()
1 test = pd.DataFrame({'a':range(1000)})
2 test.ix[3] = np.nan
----> 3 test.interpolate(method='piecewise_polynomial')
/Users/alex/.virtualenvs/work/lib/python2.7/site-packages/pandas/core/generic.pyc in interpolate(self, method, axis, limit, inplace, downcast, **kwargs)
2891 inplace=inplace,
2892 downcast=downcast,
-> 2893 **kwargs)
2894 if inplace:
2895 if axis == 1:
/Users/alex/.virtualenvs/work/lib/python2.7/site-packages/pandas/core/internals.pyc in interpolate(self, **kwargs)
2490
2491 def interpolate(self, **kwargs):
-> 2492 return self.apply('interpolate', **kwargs)
2493
2494 def shift(self, **kwargs):
/Users/alex/.virtualenvs/work/lib/python2.7/site-packages/pandas/core/internals.pyc in apply(self, f, axes, filter, do_integrity_check, **kwargs)
2457 copy=align_copy)
2458
-> 2459 applied = getattr(b, f)(**kwargs)
2460
2461 if isinstance(applied, list):
/Users/alex/.virtualenvs/work/lib/python2.7/site-packages/pandas/core/internals.pyc in interpolate(self, method, axis, index, values, inplace, limit, fill_value, coerce, downcast, **kwargs)
770 inplace=inplace,
771 downcast=downcast,
--> 772 **kwargs)
773
774 raise ValueError("invalid method '{0}' to interpolate.".format(method))
/Users/alex/.virtualenvs/work/lib/python2.7/site-packages/pandas/core/internals.pyc in _interpolate(self, method, index, values, fill_value, axis, limit, inplace, downcast, **kwargs)
836
837 # interp each column independently
--> 838 interp_values = np.apply_along_axis(func, axis, data)
839
840 blocks = [make_block(interp_values,
/Users/alex/.virtualenvs/work/lib/python2.7/site-packages/numpy/lib/shape_base.pyc in apply_along_axis(func1d, axis, arr, *args, **kwargs)
89 outshape = asarray(arr.shape).take(indlist)
90 i.put(indlist, ind)
---> 91 res = func1d(arr[tuple(i.tolist())], *args, **kwargs)
92 # if res is a number, then we have a smaller output array
93 if isscalar(res):
/Users/alex/.virtualenvs/work/lib/python2.7/site-packages/pandas/core/internals.pyc in func(x)
833 return com.interpolate_1d(index, x, method=method, limit=limit,
834 fill_value=fill_value,
--> 835 bounds_error=False, **kwargs)
836
837 # interp each column independently
/Users/alex/.virtualenvs/work/lib/python2.7/site-packages/pandas/core/common.pyc in interpolate_1d(xvalues, yvalues, method, limit, fill_value, bounds_error, order)
1687 result[firstIndex:][invalid] = _interpolate_scipy_wrapper(
1688 valid_x, valid_y, new_x, method=method, fill_value=fill_value,
-> 1689 bounds_error=bounds_error, order=order)
1690 if limit:
1691 result[violate_limit] = np.nan
/Users/alex/.virtualenvs/work/lib/python2.7/site-packages/pandas/core/common.pyc in _interpolate_scipy_wrapper(x, y, new_x, method, fill_value, bounds_error, order)
1747 new_x = new_x.copy()
1748 method = alt_methods[method]
-> 1749 new_y = method(x, y, new_x)
1750 return new_y
1751
/Users/alex/.virtualenvs/work/lib/python2.7/site-packages/scipy/interpolate/polyint.pyc in piecewise_polynomial_interpolate(xi, yi, x, orders, der, axis)
925 """
926
--> 927 P = PiecewisePolynomial(xi, yi, orders, axis=axis)
928 if der == 0:
929 return P(x)
/Users/alex/.virtualenvs/work/lib/python2.7/site-packages/scipy/interpolate/polyint.pyc in __init__(self, xi, yi, orders, direction, axis)
727
728 yi0 = np.asarray(yi[slice0])
--> 729 self._set_yi(yi0)
730
731 self.xi = [xi[0]]
/Users/alex/.virtualenvs/work/lib/python2.7/site-packages/scipy/interpolate/polyint.pyc in _set_yi(self, yi, xi, axis)
129 "interpolation axis.")
130
--> 131 self._y_axis = (axis % yi.ndim)
132 self._y_extra_shape = yi.shape[:self._y_axis]+yi.shape[self._y_axis+1:]
133 self.dtype = None
ZeroDivisionError: integer division or modulo by zero