Скользящая средняя в Пандах - PullRequest
0 голосов
/ 23 января 2019

У меня есть датафрейм с 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 Ответ

0 голосов
/ 23 января 2019

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

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

Вывод:

        Price
23 Jan  97.5
22 Jan  92.5
21 Jan  NaN
...