# xarray.DataArray.interpolate_na

#### DataArray.interpolate_na(dim=None, method='linear', limit=None, use_coordinate=True, max_gap=None, keep_attrs=None, \*\*kwargs)[[source]](https://github.com/pydata/xarray/blob/main/xarray/core/dataarray.py#L3685-L3807)

Fill in NaNs by interpolating according to different methods.

* **Parameters:**
  * **dim** (`Hashable` or [`None`](https://docs.python.org/3/builtins/constants.html#None), *optional*) – Specifies the dimension along which to interpolate.
  * **method** (`{"linear", "nearest", "zero", "slinear", "quadratic", "cubic", "polynomial", "barycentric", "krogh", "pchip", "spline", "akima"}`, *default*: `"linear"`) – String indicating which method to use for interpolation:
    - ‘linear’: linear interpolation. Additional keyword
      arguments are passed to [`numpy.interp()`](https://numpy.org/doc/stable/reference/generated/numpy.interp.html#numpy.interp)
    - ‘nearest’, ‘zero’, ‘slinear’, ‘quadratic’, ‘cubic’, ‘polynomial’:
      are passed to `scipy.interpolate.interp1d()`. If
      `method='polynomial'`, the `order` keyword argument must also be
      provided.
    - ‘barycentric’, ‘krogh’, ‘pchip’, ‘spline’, ‘akima’: use their
      respective `scipy.interpolate` classes.
  * **use_coordinate** ([`bool`](https://docs.python.org/3/builtins/functions.html#bool) or [`str`](xarray.DataArray.str.html.md#xarray.DataArray.str), *default*: [`True`](https://docs.python.org/3/builtins/constants.html#True)) – Specifies which index to use as the x values in the interpolation
    formulated as y = f(x). If False, values are treated as if
    equally-spaced along `dim`. If True, the IndexVariable dim is
    used. If `use_coordinate` is a string, it specifies the name of a
    coordinate variable to use as the index.
  * **limit** ([`int`](https://docs.python.org/3/builtins/functions.html#int) or [`None`](https://docs.python.org/3/builtins/constants.html#None), *default*: [`None`](https://docs.python.org/3/builtins/constants.html#None)) – Maximum number of consecutive NaNs to fill. Must be greater than 0
    or None for no limit. This filling is done regardless of the size of
    the gap in the data. To only interpolate over gaps less than a given length,
    see `max_gap`.
  * **max_gap** ([`int`](https://docs.python.org/3/builtins/functions.html#int), [`float`](https://docs.python.org/3/builtins/functions.html#float), [`str`](xarray.DataArray.str.html.md#xarray.DataArray.str), [`pandas.Timedelta`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Timedelta.html#pandas.Timedelta), [`numpy.timedelta64`](https://numpy.org/doc/stable/reference/arrays.scalars.html#numpy.timedelta64), [`datetime.timedelta`](https://docs.python.org/3/library/datetime.html#datetime.timedelta), *default*: [`None`](https://docs.python.org/3/builtins/constants.html#None)) – Maximum size of gap, a continuous sequence of NaNs, that will be filled.
    Use None for no limit. When interpolating along a datetime64 dimension
    and `use_coordinate=True`, `max_gap` can be one of the following:
    - a string that is valid input for pandas.to_timedelta
    - a [`numpy.timedelta64`](https://numpy.org/doc/stable/reference/arrays.scalars.html#numpy.timedelta64) object
    - a [`pandas.Timedelta`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Timedelta.html#pandas.Timedelta) object
    - a [`datetime.timedelta`](https://docs.python.org/3/library/datetime.html#datetime.timedelta) object

    Otherwise, `max_gap` must be an int or a float. Use of `max_gap` with unlabeled
    dimensions has not been implemented yet. Gap length is defined as the difference
    between coordinate values at the first data point after a gap and the last value
    before a gap. For gaps at the beginning (end), gap length is defined as the difference
    between coordinate values at the first (last) valid data point and the first (last) NaN.
    For example, consider:
    ```default
    <xarray.DataArray (x: 9)>
    array([nan, nan, nan,  1., nan, nan,  4., nan, nan])
    Coordinates:
      * x        (x) int64 0 1 2 3 4 5 6 7 8
    ```

    The gap lengths are 3-0 = 3; 6-3 = 3; and 8-6 = 2 respectively
  * **keep_attrs** ([`bool`](https://docs.python.org/3/builtins/functions.html#bool) or [`None`](https://docs.python.org/3/builtins/constants.html#None), *default*: [`None`](https://docs.python.org/3/builtins/constants.html#None)) – If True, the dataarray’s attributes (attrs) will be copied from
    the original object to the new one.  If False, the new
    object will be returned without attributes.
  * **\*\*kwargs** ([`dict`](https://docs.python.org/3/builtins/stdtypes.html#dict), *optional*) – parameters passed verbatim to the underlying interpolation function
* **Returns:**
  **interpolated** ([`DataArray`](xarray.DataArray.html.md#xarray.DataArray)) – Filled in DataArray.

#### SEE ALSO
[`numpy.interp`](https://numpy.org/doc/stable/reference/generated/numpy.interp.html#numpy.interp), [`scipy.interpolate`](https://docs.scipy.org/doc/scipy/reference/interpolate.html#module-scipy.interpolate)

### Examples

<div class="try_examples_button_container"><button class="try_examples_button" onclick="window.tryExamplesShowIframe('738036db-8374-4e4a-9f45-b630ed6aa935','bf5d0670-ff60-435e-abcd-cbae5195ce14','2979e7b3-91c3-49c4-bbfd-446b81701eea','../lite/tree/../notebooks/index.html?path=64a08bea_7e6a_4fcf_b631_13c02a884364.ipynb','None')">Try it in your browser!</button></div>
```pycon
>>> da = xr.DataArray(
...     [np.nan, 2, 3, np.nan, 0], dims="x", coords={"x": [0, 1, 2, 3, 4]}
... )
>>> da
<xarray.DataArray (x: 5)> Size: 40B
array([nan,  2.,  3., nan,  0.])
Coordinates:
  * x        (x) int64 40B 0 1 2 3 4
```

```pycon
>>> da.interpolate_na(dim="x", method="linear")
<xarray.DataArray (x: 5)> Size: 40B
array([nan, 2. , 3. , 1.5, 0. ])
Coordinates:
  * x        (x) int64 40B 0 1 2 3 4
```

```pycon
>>> da.interpolate_na(dim="x", method="linear", fill_value="extrapolate")
<xarray.DataArray (x: 5)> Size: 40B
array([1. , 2. , 3. , 1.5, 0. ])
Coordinates:
  * x        (x) int64 40B 0 1 2 3 4
```

<div id="2979e7b3-91c3-49c4-bbfd-446b81701eea" class="try_examples_outer_iframe  hidden"><div class="try_examples_button_container"><button class="try_examples_button" onclick="window.tryExamplesHideIframe('738036db-8374-4e4a-9f45-b630ed6aa935','2979e7b3-91c3-49c4-bbfd-446b81701eea')">Go Back</button><button class="try_examples_button" onclick="window.openInNewTab('738036db-8374-4e4a-9f45-b630ed6aa935','2979e7b3-91c3-49c4-bbfd-446b81701eea')">Open In Tab</button></div><div id="bf5d0670-ff60-435e-abcd-cbae5195ce14" class="jupyterlite_sphinx_iframe_container"></div></div><script>document.addEventListener("DOMContentLoaded", function() {window.loadTryExamplesConfig("../try_examples.json");});</script>
