DOC: update the pandas.Series/DataFrame.interpolate docstring (#20270) · pandas-dev/pandas@8bb2cc1 (original) (raw)
`@@ -6081,89 +6081,191 @@ def replace(self, to_replace=None, value=None, inplace=False, limit=None,
`
6081
6081
``
6082
6082
`_shared_docs['interpolate'] = """
`
6083
6083
``` Please note that only method='linear'
is supported for
`6084`
``
`-
DataFrames/Series with a MultiIndex.
`
``
`6084`
`+
DataFrame/Series with a MultiIndex.
`
`6085`
`6085`
``
`6086`
`6086`
` Parameters
`
`6087`
`6087`
` ----------
`
`6088`
``
`-
method : {'linear', 'time', 'index', 'values', 'nearest', 'zero',
`
`6089`
``
`-
'slinear', 'quadratic', 'cubic', 'barycentric', 'krogh',
`
`6090`
``
`-
'polynomial', 'spline', 'piecewise_polynomial',
`
`6091`
``
`-
'from_derivatives', 'pchip', 'akima'}
`
``
`6088`
`+
method : str, default 'linear'
`
``
`6089`
`+
Interpolation technique to use. One of:
`
`6092`
`6090`
``
`6093`
``
`-
* 'linear': ignore the index and treat the values as equally
`
``
`6091`
`+
* 'linear': Ignore the index and treat the values as equally
`
`6094`
`6092`
` spaced. This is the only method supported on MultiIndexes.
`
`6095`
``
`-
default
`
`6096`
``
`-
* 'time': interpolation works on daily and higher resolution
`
`6097`
``
`-
data to interpolate given length of interval
`
`6098`
``
`-
* 'index', 'values': use the actual numerical values of the index
`
`6099`
``
`-
* 'nearest', 'zero', 'slinear', 'quadratic', 'cubic',
`
`6100`
``
`-
'barycentric', 'polynomial' is passed to
`
`6101`
``
`` -
:class:`scipy.interpolate.interp1d`. Both 'polynomial' and
``
`6102`
``
`` -
'spline' require that you also specify an `order` (int),
``
``
`6093`
`+
* 'time': Works on daily and higher resolution data to interpolate
`
``
`6094`
`+
given length of interval.
`
``
`6095`
`+
* 'index', 'values': use the actual numerical values of the index.
`
``
`6096`
`+
* 'pad': Fill in NaNs using existing values.
`
``
`6097`
`+
* 'nearest', 'zero', 'slinear', 'quadratic', 'cubic', 'spline',
`
``
`6098`
`+
'barycentric', 'polynomial': Passed to
`
``
`6099`
`` +
`scipy.interpolate.interp1d`. Both 'polynomial' and 'spline'
``
``
`6100`
`` +
require that you also specify an `order` (int),
``
`6103`
`6101`
``` e.g. ``df.interpolate(method='polynomial', order=4)``.
6104
``
`-
These use the actual numerical values of the index.
`
6105
``
`-
- 'krogh', 'piecewise_polynomial', 'spline', 'pchip' and 'akima'
`
6106
``
`-
are all wrappers around the scipy interpolation methods of
`
6107
``
`-
similar names. These use the actual numerical values of the
`
6108
``
`-
index. For more information on their behavior, see the
`
6109
``
`` -
`scipy documentation
``
6110
``
`` -
http://docs.scipy.org/doc/scipy/reference/interpolate.html#univariate-interpolation`__
``
6111
``
`` -
and `tutorial documentation
``
6112
``
`` -
http://docs.scipy.org/doc/scipy/reference/tutorial/interpolate.html`__
``
6113
``
`-
- 'from_derivatives' refers to
`
6114
``
`` -
:meth:scipy.interpolate.BPoly.from_derivatives
which
``
``
6102
`+
These use the numerical values of the index.
`
``
6103
`+
- 'krogh', 'piecewise_polynomial', 'spline', 'pchip', 'akima':
`
``
6104
`+
Wrappers around the SciPy interpolation methods of similar
`
``
6105
`` +
names. See Notes
.
``
``
6106
`+
- 'from_derivatives': Refers to
`
``
6107
`` +
scipy.interpolate.BPoly.from_derivatives
which
``
6115
6108
` replaces 'piecewise_polynomial' interpolation method in
`
6116
``
`-
scipy 0.18
`
``
6109
`+
scipy 0.18.
`
6117
6110
``
6118
6111
` .. versionadded:: 0.18.1
`
6119
6112
``
6120
6113
` Added support for the 'akima' method.
`
6121
6114
` Added interpolate method 'from_derivatives' which replaces
`
6122
``
`-
'piecewise_polynomial' in scipy 0.18; backwards-compatible with
`
6123
``
`-
scipy < 0.18
`
6124
``
-
6125
``
`-
axis : {0, 1}, default 0
`
6126
``
`-
- 0: fill column-by-column
`
6127
``
`-
- 1: fill row-by-row
`
6128
``
`-
limit : int, default None.
`
6129
``
`-
Maximum number of consecutive NaNs to fill. Must be greater than 0.
`
6130
``
`-
limit_direction : {'forward', 'backward', 'both'}, default 'forward'
`
6131
``
`-
limit_area : {'inside', 'outside'}, default None
`
6132
``
`-
- None: (default) no fill restriction
`
6133
``
`-
- 'inside' Only fill NaNs surrounded by valid values (interpolate).
`
6134
``
`-
- 'outside' Only fill NaNs outside valid values (extrapolate).
`
``
6115
`+
'piecewise_polynomial' in SciPy 0.18; backwards-compatible with
`
``
6116
`+
SciPy < 0.18
`
6135
6117
``
``
6118
`+
axis : {0 or 'index', 1 or 'columns', None}, default None
`
``
6119
`+
Axis to interpolate along.
`
``
6120
`+
limit : int, optional
`
``
6121
`+
Maximum number of consecutive NaNs to fill. Must be greater than
`
``
6122
`+
`
``
6123
`+
inplace : bool, default False
`
``
6124
`+
Update the data in place if possible.
`
``
6125
`+
limit_direction : {'forward', 'backward', 'both'}, default 'forward'
`
6136
6126
` If limit is specified, consecutive NaNs will be filled in this
`
6137
6127
` direction.
`
``
6128
`` +
limit_area : {None
, 'inside', 'outside'}, default None
``
``
6129
`+
If limit is specified, consecutive NaNs will be filled with this
`
``
6130
`+
restriction.
`
``
6131
+
``
6132
* ``None``: No fill restriction.
``
6133
`+
- 'inside': Only fill NaNs surrounded by valid values
`
``
6134
`+
(interpolate).
`
``
6135
`+
- 'outside': Only fill NaNs outside valid values (extrapolate).
`
6138
6136
``
6139
6137
` .. versionadded:: 0.21.0
`
6140
``
`-
inplace : bool, default False
`
6141
``
`-
Update the NDFrame in place if possible.
`
``
6138
+
6142
6139
` downcast : optional, 'infer' or None, defaults to None
`
6143
6140
` Downcast dtypes if possible.
`
6144
``
`-
kwargs : keyword arguments to pass on to the interpolating function.
`
``
6141
`+
**kwargs
`
``
6142
`+
Keyword arguments to pass on to the interpolating function.
`
6145
6143
``
6146
6144
` Returns
`
6147
6145
` -------
`
6148
``
`-
Series or DataFrame of same shape interpolated at the NaNs
`
``
6146
`+
Series or DataFrame
`
``
6147
`+
Returns the same object type as the caller, interpolated at
`
``
6148
some or all ``NaN`` values
6149
6149
``
6150
6150
` See Also
`
6151
6151
` --------
`
6152
``
`-
reindex, replace, fillna
`
``
6152
`+
fillna : Fill missing values using different methods.
`
``
6153
`+
scipy.interpolate.Akima1DInterpolator : Piecewise cubic polynomials
`
``
6154
`+
(Akima interpolator).
`
``
6155
`+
scipy.interpolate.BPoly.from_derivatives : Piecewise polynomial in the
`
``
6156
`+
Bernstein basis.
`
``
6157
`+
scipy.interpolate.interp1d : Interpolate a 1-D function.
`
``
6158
`+
scipy.interpolate.KroghInterpolator : Interpolate polynomial (Krogh
`
``
6159
`+
interpolator).
`
``
6160
`+
scipy.interpolate.PchipInterpolator : PCHIP 1-d monotonic cubic
`
``
6161
`+
interpolation.
`
``
6162
`+
scipy.interpolate.CubicSpline : Cubic spline data interpolator.
`
``
6163
+
``
6164
`+
Notes
`
``
6165
`+
`
``
6166
`+
The 'krogh', 'piecewise_polynomial', 'spline', 'pchip' and 'akima'
`
``
6167
`+
methods are wrappers around the respective SciPy implementations of
`
``
6168
`+
similar names. These use the actual numerical values of the index.
`
``
6169
`+
For more information on their behavior, see the
`
``
6170
`` +
`SciPy documentation
``
``
6171
`` +
http://docs.scipy.org/doc/scipy/reference/interpolate.html#univariate-interpolation`__
``
``
6172
`` +
and `SciPy tutorial
``
``
6173
`` +
http://docs.scipy.org/doc/scipy/reference/tutorial/interpolate.html`__.
``
6153
6174
``
6154
6175
` Examples
`
6155
6176
` --------
`
6156
``
-
6157
``
`-
Filling in NaNs
`
``
6177
Filling in ``NaN`` in a :class:`~pandas.Series` via linear
``
6178
`+
interpolation.
`
6158
6179
``
6159
6180
` >>> s = pd.Series([0, 1, np.nan, 3])
`
``
6181
`+
s
`
``
6182
`+
0 0.0
`
``
6183
`+
1 1.0
`
``
6184
`+
2 NaN
`
``
6185
`+
3 3.0
`
``
6186
`+
dtype: float64
`
6160
6187
` >>> s.interpolate()
`
6161
``
`-
0 0
`
6162
``
`-
1 1
`
6163
``
`-
2 2
`
6164
``
`-
3 3
`
``
6188
`+
0 0.0
`
``
6189
`+
1 1.0
`
``
6190
`+
2 2.0
`
``
6191
`+
3 3.0
`
6165
6192
` dtype: float64
`
6166
6193
``
``
6194
Filling in ``NaN`` in a Series by padding, but filling at most two
``
6195
consecutive ``NaN`` at a time.
``
6196
+
``
6197
`+
s = pd.Series([np.nan, "single_one", np.nan,
`
``
6198
`+
... "fill_two_more", np.nan, np.nan, np.nan,
`
``
6199
`+
... 4.71, np.nan])
`
``
6200
`+
s
`
``
6201
`+
0 NaN
`
``
6202
`+
1 single_one
`
``
6203
`+
2 NaN
`
``
6204
`+
3 fill_two_more
`
``
6205
`+
4 NaN
`
``
6206
`+
5 NaN
`
``
6207
`+
6 NaN
`
``
6208
`+
7 4.71
`
``
6209
`+
8 NaN
`
``
6210
`+
dtype: object
`
``
6211
`+
s.interpolate(method='pad', limit=2)
`
``
6212
`+
0 NaN
`
``
6213
`+
1 single_one
`
``
6214
`+
2 single_one
`
``
6215
`+
3 fill_two_more
`
``
6216
`+
4 fill_two_more
`
``
6217
`+
5 fill_two_more
`
``
6218
`+
6 NaN
`
``
6219
`+
7 4.71
`
``
6220
`+
8 4.71
`
``
6221
`+
dtype: object
`
``
6222
+
``
6223
Filling in ``NaN`` in a Series via polynomial interpolation or splines:
``
6224
`+
Both 'polynomial' and 'spline' methods require that you also specify
`
``
6225
an ``order`` (int).
``
6226
+
``
6227
`+
s = pd.Series([0, 2, np.nan, 8])
`
``
6228
`+
s.interpolate(method='polynomial', order=2)
`
``
6229
`+
0 0.000000
`
``
6230
`+
1 2.000000
`
``
6231
`+
2 4.666667
`
``
6232
`+
3 8.000000
`
``
6233
`+
dtype: float64
`
``
6234
+
``
6235
`+
Fill the DataFrame forward (that is, going down) along each column
`
``
6236
`+
using linear interpolation.
`
``
6237
+
``
6238
`+
Note how the last entry in column 'a' is interpolated differently,
`
``
6239
`+
because there is no entry after it to use for interpolation.
`
``
6240
Note how the first entry in column 'b' remains ``NaN``, because there
``
6241
`+
is no entry befofe it to use for interpolation.
`
``
6242
+
``
6243
`+
df = pd.DataFrame([(0.0, np.nan, -1.0, 1.0),
`
``
6244
`+
... (np.nan, 2.0, np.nan, np.nan),
`
``
6245
`+
... (2.0, 3.0, np.nan, 9.0),
`
``
6246
`+
... (np.nan, 4.0, -4.0, 16.0)],
`
``
6247
`+
... columns=list('abcd'))
`
``
6248
`+
df
`
``
6249
`+
a b c d
`
``
6250
`+
0 0.0 NaN -1.0 1.0
`
``
6251
`+
1 NaN 2.0 NaN NaN
`
``
6252
`+
2 2.0 3.0 NaN 9.0
`
``
6253
`+
3 NaN 4.0 -4.0 16.0
`
``
6254
`+
df.interpolate(method='linear', limit_direction='forward', axis=0)
`
``
6255
`+
a b c d
`
``
6256
`+
0 0.0 NaN -1.0 1.0
`
``
6257
`+
1 1.0 2.0 -2.0 5.0
`
``
6258
`+
2 2.0 3.0 -3.0 9.0
`
``
6259
`+
3 2.0 4.0 -4.0 16.0
`
``
6260
+
``
6261
`+
Using polynomial interpolation.
`
``
6262
+
``
6263
`+
df['d'].interpolate(method='polynomial', order=2)
`
``
6264
`+
0 1.0
`
``
6265
`+
1 4.0
`
``
6266
`+
2 9.0
`
``
6267
`+
3 16.0
`
``
6268
`+
Name: d, dtype: float64
`
6167
6269
` """
`
6168
6270
``
6169
6271
`@Appender(_shared_docs['interpolate'] % _shared_doc_kwargs)
`