Pandas dataframe.interpolate()功能本质上是用来填充NA DataFrame 或系列中的值。但是,这是一个非常强大的功能,可以填补缺失的值。它使用各种插值技术来填充缺失值,而不是hard-coding值。

pandas.DataFrame.interpolate函数简介

具体用法:

DataFrame.interpolate(self, method='linear', axis=0, limit=None, inplace=False, limit_direction='forward', limit_area=None, downcast=None, **kwargs)

参数:

  • method:{“线性”,“时间”,“索引”,“值”,“最近”,“零”,“线性”,“二次”,“三次”,“重心”,“克罗格”,“多项式”,“样条”,“ piecewise_polynomial”,“ from_derivatives”,“ pchip”,“ akima”}
  • axis:0填充column-by-column和1填充row-by-row。
  • limit:要填充的连续NaN的最大数量。必须大于0。
  • limit_direction:{“前进”,“后退”,“两者”},默认为“前进”
  • limit_area:无(默认)无填充限制。inside 仅填充有效值包围的NaN(内插)。outside 仅将NaN填充到有效值之外(外推)。如果指定了限制,则将沿该方向填充连续的NaN。
  • inplace:如果可能,更新NDFrame。
  • downcast:如果可能,请向下转换dtypes。
  • kwargs:关键字参数传递给插值函数。

**返回值:**在NaN处插补的相同形状的Series或DataFrame

范例1:采用interpolate()函数使用线性方法填充缺失值。
import numpy as np
import pandas as pd

df = pd.DataFrame(data=[np.nan, 2, np.nan, 6, np.nan])
print(df)

输出结果:
在这里插入图片描述

df.interpolate(method='linear', limit_direction='forward')

输出结果:
在这里插入图片描述
正如我们看到的输出,第一行中的值无法填充,因为值的填充方向为forward并且没有可用于插值的先前值。

范例2:采用interpolate()函数使用线性方法向后插值缺失值
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'))
print(df)            

输出结果:
在这里插入图片描述

df.interpolate(method='linear', limit_direction='backward', axis=0)

输出结果:
在这里插入图片描述
最后一行中的值无法填充,因为值的填充方向为backward并且没有可用于插值的后续值。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐