У меня есть данные временного ряда с идентификаторами, датами, прогнозными значениями и фактическими значениями.Пример данных ниже.
Я пытаюсь произвести ежегодные сравнения для этих квартальных данных.В частности, я пытаюсь написать функцию, которая группирует по имени и дате и находит результат за 1 год до этого (если эти данные доступны).Затем я бы использовал это для создания дополнительных столбцов.Пример данных, которые я хочу сгенерировать, показан в трех крайних правых столбцах для первой строки в приведенном ниже примере.В этой строке я нахожу точку данных Jack от ближайшей к 1y до 2018-08-30, и она возвращает соответствующее значение 90.
Есть ли хороший способ в Python найти точку 1y ago (или ближайший к 1y, так как даты не идеально выровнены), а затем вернуть заданное значение?Кроме того, я понимаю, что хотел бы учитывать близость совпадений - другими словами, не должно быть значений, возвращаемых / генерируемых для имени «Пит» ниже, поскольку нет данных за 1 год до 7/2018.
Я не знаком с такими преобразованиями временных рядов и буду очень признателен за помощь.
Спасибо!
Name Date Predicted Actual Actual 1y Prior Predicted y/y Actual y/y
Jack 2018-08-30 60 22 91 -34.1% -75.8%
Jack 2018-06-01 60 22
Jack 2018-03-07 66 77
Jack 2017-11-17 29 17
Jack 2017-08-24 91 91
Jack 2017-05-25 87 33
Jack 2017-03-02 75 10
Jack 2016-11-18 33 27
Jack 2016-08-30 76 66
Jack 2016-05-26 98 69
Jack 2016-03-02 59 23
Jack 2015-11-20 76 37
Jack 2015-08-26 76 73
Jack 2015-05-28 9 2
Jack 2015-03-04 12 75
Jill 2018-08-14 31 84
Jill 2018-05-22 58 5
Jill 2018-02-21 38 78
Jill 2017-11-14 11 65
Jill 2017-08-15 27 97
Jill 2017-05-24 46 19
Jill 2017-02-21 92 57
Jill 2016-11-15 41 23
Jill 2016-08-16 64 4
Jill 2016-05-19 4 17
Jill 2016-02-11 55 55
Jill 2015-11-12 53 23
Jill 2015-08-13 58 94
Jill 2015-05-21 19 74
Pete 2018-07-27 68 23
Pete 2018-04-27 85 28
Pete 2018-02-02 98 43
Pete 2017-10-27 17 51