* 1000000@D.We это большой вопрос, позвольте мне объяснить в глубине, и нет никакой проблемы с 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).
Emaple для «линейной» интерполяции:
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
Итак, в приведенном выше примере вы легко можете увидеть, что позиция 2 занимает то же значение, что и позиция 1, поскольку она является ближайшим значением к позиции 1.Вкратце, просто имейте в виду, что в «ближайшей» интерполяции недостающие значения заполняются одним и тем же значением с помощью ближайших окружающих значений.
В методе = «ближайшее», fill_value = «экстраполировать» выможете видеть, что в вашем примере он заполнит последние значения тем же значением 5-й позиции.Концепция остается той же, что и для заполнения пропущенных значений, как описано выше.
ПРИМЕЧАНИЕ. Кроме того, существуют другие методы интерполяции, такие как «билинейный», «бикубический» и т. Д. Все дело в точности заполненияпропущенные значения.
Я предлагаю, если вы хотите сделать выбор из «ближайшей» и «линейной» интерполяции.Я бы сказал, что следует использовать «линейную» интерполяцию, поскольку она будет заполнять значения более точно, чем при «ближайшей» интерполяции.
Надеюсь, это поможет вам.Удачи!