Интерполяция
Интерполяция (линейная) - это, по сути, прямая линия между двумя заданными точками, где отсутствуют точки данных между этими двумя:
- Известны две красные точки
- Синяя точка отсутствует
источник: википедия
Хорошо объясните, но покажите мне данные.
Прежде всего формула для линейной интерполяции этоследующее:
(y2-y0) / (x2-x0)
Допустим, у нас есть три точки данных из приведенного выше графика:
df = pd.DataFrame({'Value':[0, np.NaN, 3]})
Value
0 0.0
1 NaN
2 3.0
Как мы видим, строка 1 (синяя точка) отсутствует. Итак, следующая формула сверху:
(3-0) / (2-0) = 1.5
Если мы интерполируем их, используя метод панд Series.interpolate
:
df['Value'].interpolate()
0 0.0
1 1.5
2 3.0
Name: Value, dtype: float64
Для большего набора данных это будет выглядеть следующим образом:
df = pd.DataFrame({'Value':[1, np.NaN, 4, np.NaN, np.NaN,7]})
Value
0 1.0
1 NaN
2 4.0
3 NaN
4 NaN
5 7.0
df['Value'].interpolate()
0 1.0
1 2.5
2 4.0
3 5.0
4 6.0
5 7.0
Name: Value, dtype: float64
Импутация
Когда мы вменяем данные с помощью (arithmetic) mean
, мы следуем следующей формуле:
sum(all points) / n
Так что для нашего второго кадра данных мыполучить:
(1 + 4 + 7) / 3 = 4
Так что, если мы вменяем наш фрейм данных с Series.fillna
:
df['Value'].fillna(df['Value'].mean())
0 1.0
1 4.0
2 4.0
3 4.0
4 4.0
5 7.0
Name: Value, dtype: float64