Pandas Interpolate «время» против «линейный» - PullRequest
0 голосов
/ 04 марта 2019

In Pandas interpolate function , method='time' эквивалентно method='linear', когда индекс времени одинаково разнесен?

Базовый пример предполагает, что это так:

even_index = pd.date_range('2019-02-20 10:00 am', 
                           '2019-02-20 2:00 pm', freq='1 h')
values = [10, np.nan, 30, np.nan, 50]

pd.DataFrame(values, index=even_index).interpolate(method='time')

                        0
2019-02-20 10:00:00  10.0
2019-02-20 11:00:00  20.0
2019-02-20 12:00:00  30.0
2019-02-20 13:00:00  40.0
2019-02-20 14:00:00  50.0


pd.DataFrame(values, index=even_index).interpolate(method='linear')

                        0
2019-02-20 10:00:00  10.0
2019-02-20 11:00:00  20.0
2019-02-20 12:00:00  30.0
2019-02-20 13:00:00  40.0
2019-02-20 14:00:00  50.0

Разница между «временем» и «линейным», по-видимому, возникает только в том случае, если временной индекс не имеет одинакового интервала:

uneven_index = pd.to_datetime(['2019-02-20 10:00 am', 
               '2019-02-20 10:30 am', '2019-02-20 12:30 pm', 
               '2019-02-20 1:30 pm', '2019-02-20 2:00 pm'])


pd.DataFrame(values, index=uneven_index).interpolate(method='time')

                             0
2019-02-20 10:00:00  10.000000
2019-02-20 10:30:00  14.000000
2019-02-20 12:30:00  30.000000
2019-02-20 13:30:00  43.333333
2019-02-20 14:00:00  50.000000

pd.DataFrame(values, index=uneven_index).interpolate(method='linear')

                        0
2019-02-20 10:00:00  10.0
2019-02-20 10:30:00  20.0
2019-02-20 12:30:00  30.0
2019-02-20 13:30:00  40.0
2019-02-20 14:00:00  50.0

Мой вопрос заключается в том, всегда ли это выполняется.Можно ли предположить, что с равным интервалом времени индекс method='time' всегда будет выполнять линейную интерполяцию?

1 Ответ

0 голосов
/ 04 марта 2019

Да, это

Из документации:

'linear': игнорировать индекс и рассматривать значения как одинаково расположенные

Следовательно,если ваш индекс расположен на одинаковом расстоянии, и вы используете правильный метод (метод time для индекса времени в вашем примере, но это также может быть метод index для числового индекса с одинаково расположенными значениями), вы действительно получитетот же результат.

...