Пользовательский бросок применять Python, используя два столбца для вычисления движущегося наклона - PullRequest
0 голосов
/ 03 июля 2019

Я хочу написать функцию крена, чтобы получить наклон заданного числа точек, предшествующих данной строке.

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

Я сделал это с помощью цикла for, но, как вы можете себе представить, этосовершенно неэффективно.

Я написал функцию наклона, которую я буду применять для прокатки.Он использует sklearn.linear_model

from sklearn.linear_model import LinearRegression
def slope(x,y):
    x=x.values.reshape(-1,1)
    y=y.values.reshape(-1,1)
    regressor=LinearRegression()
    regressor.fit(x,y)
    return regressor.coef_[0][0]

Так, например, у меня есть следующий фрейм данных:

i   time    var_A   var_B
0   0.1 0.327   1.080
1   0.2 0.618   1.275
2   0.3 0.841   1.478
3   0.4 0.972   1.562
4   0.5 0.995   1.443
5   0.6 0.909   1.119
6   0.7 0.723   0.677
7   0.8 0.457   0.264
8   0.9 0.141   0.025
9   1   -0.191  0.045
10  1.1 -0.501  0.319

Таким образом, целью было бы написать функцию для получения наклона дляскользящее окно 4, дающее следующий результат.

df.rolling(window=4).apply(slope(df.time,df.var_A))

i   time    var_A   var_B   slope_A
0   0.1 0.327   1.080   NaN
1   0.2 0.618   1.275   NaN
2   0.3 0.841   1.478   NaN
3   0.4 0.972   1.562   2.157
4   0.5 0.995   1.443   1.262
5   0.6 0.909   1.119   0.227
6   0.7 0.723   0.677   -0.833
7   0.8 0.457   0.264   -1.801
8   0.9 0.141   0.025   -2.570
9   1   -0.191  0.045   -3.057
10  1.1 -0.501  0.319   -3.207

Надеюсь, это имеет смысл!

...