pandas.DataFrame.interpolate #

数据框。interpolate ( method = '线性' , * , axis = 0 , limit = None , inplace = False , limit_direction = None , limit_area = None , downcast = _NoDefault.no_default , ** kwargs ) [来源] #

使用插值方法填充 NaN 值。

请注意,仅method='linear'支持具有多重索引的 DataFrame/Series。

参数
方法str,默认“线性”

要使用的插值技术。之一:

  • '线性':忽略索引并将值视为等距。这是多索引支持的唯一方法。

  • “时间”:适用于每日数据和更高分辨率的数据,以插入给定的间隔长度。

  • 'index', 'values':使用索引的实际数值。

  • 'pad':使用现有值填充 NaN。

  • 'nearest'、'zero'、'slinear'、'quadratic'、'cubic'、'barycentric'、'polynomial':传递给 scipy.interpolate.interp1d,而 'spline' 传递给 scipy.interpolate.UnivariateSpline。这些方法使用指数的数值。 “多项式”和“样条曲线”都要求您还指定一个阶数(int),例如 。请注意, Pandas 中的线性方法是指 Scipy 一阶样 而不是 Pandas 一阶样df.interpolate(method='polynomial', order=5)

  • 'krogh'、'piecewise_polynomial'、'spline'、'pchip'、'akima'、'cubicspline':类似名称的 SciPy 插值方法的包装。参见注释

  • 'from_derivatives':指 scipy.interpolate.BPoly.from_derivatives

axis {{0 或 'index', 1 或 'columns', None}}, 默认 None

沿其插补的轴。对于系列,此参数未使用,默认为 0。

限制int,可选

要填充的连续 NaN 的最大数量。必须大于 0。

inplace布尔值,默认 False

如果可能的话更新数据。

limit_direction {{'向前', '向后', '两者'}}, 可选

连续的 NaN 将按此方向填充。

如果指定限制:
  • 如果“method”为“pad”或“ffill”,则“limit_direction”必须为“forward”。

  • 如果“method”为“backfill”或“bfill”,则“limit_direction”必须为“backwards”。

如果未指定“限制”:
  • 如果“method”为“backfill”或“bfill”,则默认为“backward”

  • 否则默认为“前进”

如果limit_direction为“forward”或“both”,则引发 ValueError

方法是“backfill”或“bfill”。

如果limit_direction为“向后”或“两者”,则引发 ValueError

方法是“pad”或“fill”。

limit_area {{ None , 'inside', 'outside'}}, 默认 None

如果指定了 limit,则连续的 NaN 将用此限制填充。

  • None:无填充限制。

  • 'inside':仅填充由有效值包围的 NaN(插值)。

  • 'outside':仅填充有效值之外的 NaN(推断)。

downcast可选,'infer' 或 None,默认为 None

如果可能的话,向下转换数据类型。

自 2.1.0 版本起已弃用。

``**kwargs``可选

要传递给插值函数的关键字参数。

返回
系列或数据框或无

返回与调用者相同的对象类型,在某些或所有NaN值处进行插值,如果是则为 None inplace=True

也可以看看

fillna

使用不同的方法填充缺失值。

scipy.interpolate.Akima1DInterpolator

分段三次多项式(Akima 插值器)。

scipy.interpolate.BPoly.from_derivatives

伯恩斯坦基的分段多项式。

scipy.interpolate.interp1d

插值一维函数。

scipy.interpolate.KroghInterpolator

插值多项式(Krogh 插值器)。

scipy.interpolate.PchipInterpolator

PCHIP 一维单调三次插值。

scipy.interpolate.CubicSpline

三次样条数据插值器。

笔记

'krogh'、'piecewise_polynomial'、'spline'、'pchip' 和 'akima' 方法是类似名称的相应 SciPy 实现的包装器。这些使用索引的实际数值。有关其行为的更多信息,请参阅 SciPy 文档

例子

NaN通过Series线性插值填充。

>>> s = pd.Series([0, 1, np.nan, 3])
>>> s
0    0.0
1    1.0
2    NaN
3    3.0
dtype: float64
>>> s.interpolate()
0    0.0
1    1.0
2    2.0
3    3.0
dtype: float64

通过多项式插值或样条函数填充NaN系列:“多项式”和“样条函数”方法都要求您还指定order(int)。

>>> s = pd.Series([0, 2, np.nan, 8])
>>> s.interpolate(method='polynomial', order=2)
0    0.000000
1    2.000000
2    4.666667
3    8.000000
dtype: float64

使用线性插值沿着每列向前(即向下)填充 DataFrame。

请注意“a”列中的最后一个条目如何以不同的方式进行插值,因为它后面没有可用于插值的条目。请注意“b”列中的第一个条目如何保留NaN,因为它之前没有可用于插值的条目。

>>> df = pd.DataFrame([(0.0, np.nan, -1.0, 1.0),
...                    (np.nan, 2.0, np.nan, np.nan),
...                    (2.0, 3.0, np.nan, 9.0),
...                    (np.nan, 4.0, -4.0, 16.0)],
...                   columns=list('abcd'))
>>> df
     a    b    c     d
0  0.0  NaN -1.0   1.0
1  NaN  2.0  NaN   NaN
2  2.0  3.0  NaN   9.0
3  NaN  4.0 -4.0  16.0
>>> df.interpolate(method='linear', limit_direction='forward', axis=0)
     a    b    c     d
0  0.0  NaN -1.0   1.0
1  1.0  2.0 -2.0   5.0
2  2.0  3.0 -3.0   9.0
3  2.0  4.0 -4.0  16.0

使用多项式插值。

>>> df['d'].interpolate(method='polynomial', order=2)
0     1.0
1     4.0
2     9.0
3    16.0
Name: d, dtype: float64