Как сделать столбец скользящего градиента для фрейма данных - PullRequest
0 голосов
/ 20 июня 2020

У меня есть временной ряд, например:

            United Kingdom
Time (CET)                
2020-02-15         1739771
2020-02-16         1649750
2020-02-17         1887394
2020-02-18         1922006
2020-02-19         1957194
2020-02-20         1878259
2020-02-21         1890076
2020-02-22         1677928
2020-02-23         1688218
2020-02-24         1948947
[...]

Я хотел бы создать новый столбец, который представляет собой градиент скользящего окна длиной 5. Таким образом, первая запись будет градиентом прямой линия, проходящая через [1739771, 1649750, 1887394, 1922006, 1957194], вторая - градиент прямой линии, проходящей через [1649750, 1887394, 1922006, 1957194, 1878259], и т. д.

Код для соответствия прямой линии и, следовательно, возврата градиента:

import numpy as np
Polynomial = np.polynomial.Polynomial
def fitcurve(sequence):
    poly = Polynomial.fit(range(len(sequence)), sequence, 1)
    a = poly.convert().coef
    return a[0], a[1]  #  a[1] is the gradient we want.

Первые 4 записи в новом столбце должны быть NaN, и это нормально.

Как мне создать этот новый столбец?

1 Ответ

2 голосов
/ 20 июня 2020

Следует использовать функцию прокрутка . Примерно так должно работать:

df["UK Rolling"] = df["United Kingdom"].rolling(5).apply(lambda x: fitcurve(x)[1])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...