Скользящая средняя в Пандах

У меня есть датафрейм с 2 столбцами - дата и цена. Сначала данные сортируются по самой новой дате (23 января в первой строке, 22 января во второй строке и т. Д.).

Date   Price
23 Jan 100
22 Jan 95
21 Jan 90
.
.
.

Я хочу рассчитать скользящую среднюю цену за 2 дня для данных этого временного ряда. Я использую это:

df.rolling(2).mean()

Для этого он назначает NaN первой строке (23 января), а затем для второй строки выдает выходные данные в виде среднего значения цен 23 января и 22 января. Это бесполезно, поскольку среднее значение 22 января использует форвардные данные (цена 23 января). Что мне нужно, так это то, что значение скользящей средней для 23 января является средним значением 23 января и 22 января. Таким образом, последним значением МА будет NaN вместо первого значения.

То, что я не хочу делать, это сначала отсортировать эти данные по самым старым, вычислить, а затем применить.

У меня была такая же проблема с pct_change(). Тем не менее, pct_change(-1) решил эту проблему. Но прокатка не принимает отрицательное значение в качестве входа. Пожалуйста, предложите решение этой проблемы. Благодарю.

1 ответ

Решение

Так как вы не хотите сортировать, вот один из обходных путей. Вы можете перевернуть свой фрейм данных, взять скользящее среднее, а затем снова перевернуть его.

df[::-1].rolling(window=2).mean()[::-1]

Выход:

        Price
23 Jan  97.5
22 Jan  92.5
21 Jan  NaN
Другие вопросы по тегам