Pandas数据处理基础6
程序员文章站
2022-03-29 08:06:36
...
插值填充
插值是数值分析中一种方法。简而言之,就是借助于一个函数(线性或非线性),再根据已知数据去求解未知数据的值。插值在数据领域非常常见,它的好处在于,可以尽量去还原数据本身的样子。
我们可以通过 interpolate() 方法完成线性插值。当然,其他一些插值算法可以阅读官方文档了解。
# 生成一个 DataFrame
df = pd.DataFrame({'A': [1.1, 2.2, np.nan, 4.5, 5.7, 6.9],
'B': [.21, np.nan, np.nan, 3.1, 11.7, 13.2]})
df
输出结果:
对于上面存在的缺失值,如果通过前后值,或者平均值来填充是不太能反映出趋势的。这时候,插值最好使。我们用默认的线性插值试一试。
df_interpolate=df.interpolate()
df_interpolate
输出结果:
下图展示了插值后的数据,明显看出插值结果符合数据的变化趋势。如果按照前后数据顺序填充,则无法做到这一点。
对于 interpolate() 支持的插值算法,也就是 method=。下面给出几条选择的建议:
1.如果你的数据增长速率越来越快,可以选择 method='quadratic'二次插值。
2.如果数据集呈现出累计分布的样子,推荐选择 method='pchip'。
3.如果需要填补缺省值,以平滑绘图为目标,推荐选择 method='akima'。
当然,最后提到的 method=‘akima’,需要你的环境中安装了 Scipy 库。除此之外,method=‘barycentric’ 和 method=‘pchip’ 同样也需要 Scipy 才能使用。
上一篇: php可以写算法吗