@D.Weis 这是一个很好的问题,让我深入解释一下,没有线程和 github 问题。让我一步步解释。
>>> a = pd.DataFrame({'col1': [np.nan, 1, np.nan, 3, np.nan, 5, np.nan]})
Out[1]:
col1
0 NaN
1 1.0
2 NaN
3 3.0
4 NaN
5 5.0
6 NaN
1.)“线性”插值
在“线性”插值中,缺失值由两个最近的位置值填充。在“最近”插值中,它将通过最近的周围值填充缺失值,但是,在“最近”插值中,缺失值将具有与附近位置值相同的值。我在第 (2) 节中更深入地解释了“最近”插值。
“线性”插值示例:
1 1.0 1. 1.0
2 NaN 2. 2.0
3 3.0 3. 3.0
4 NaN 4. 4.0
这里,第二个位置是空的。因此,为了填充它的值,它将采用第 1 和第 3 位置的值,分别为 1.0 和 3.0。再次记住,在“线性”插值中,只需要 2 个周围值即可填充缺失值。
(1.0+3.0/2) =2.0 = Answer for 2nd position. Similarly it will be for other values.
2.) 按“最近”插值
>>> a.interpolate(method='nearest')
Out[3]:
col1
0 NaN
1 1.0
2 1.0
3 3.0
4 3.0
5 5.0
6 NaN
基本上,在“最近”插值中,它用最近值中的相同值填充缺失值。例如,
1 1.0 1. 1.0
2 NaN 2. 1.0
3 3.0 3. 3.0
4 NaN 4. 3.0
因此,在上面的示例中,您可以轻松地看到位置 2nd 与位置 1st 具有相同的值,因为它是最接近位置 1 的值。总之,请记住,在“最近”插值中,缺失值将在最近的周围值的帮助下由相同的值填充。
In method='nearest', fill_value='extrapolate'
您可以在示例中看到它将用第五个位置的相同值填充最后一个值。该概念与填充缺失值的概念保持相同,如上所述。
笔记:
此外,还有其他插值方法,例如“双线性”、“双三次”等。这都是关于填充缺失值的准确性。
我的建议是,如果您想从“最近”插值和“线性”插值中进行选择。我会说使用“线性”插值,因为它会比“最近”插值更准确地填充值。
希望这会对您有所帮助。祝你好运!