如何获得Python数据框架中多列的斜率



我有下面的数据框架,其中包含4列分数。如何找到数据帧中每个ID的这4个分数的斜率?

ID  t1  t2  t3  t4
a   1   2   3   4
b   3   2   1   
c   4   2   1   2
d   2   3   4   5
e   0   2   3   4

我希望斜率被附加回相同的数据帧,并在斜率计算后显示以下内容。

ID  Slope
a   1
b   -1
c   -0.7
d   1
e   1.3

您可以使用sklearn(或者可能是scipy)。例子:

import sklearn
model = sklearn.linear_model.LinearRegression()
def get_coeff(row, model=model):
# fit a row assuming points are separated by unit length and return the slope.

row = row.copy().dropna()
model.fit(np.arange(len(row)).reshape(-1,1), row.values.reshape(-1,1))
slope = model.coef_[0][0]
return slope

df["slope"] = df.apply(get_coeff, axis=1)

输出:

t1  t2  t3   t4  slope
ID
a    1   2   3  4.0    1.0
b    3   2   1  NaN   -1.0
c    4   2   1  2.0   -0.7
d    2   3   4  5.0    1.0
e    0   2   3  4.0    1.3

相关内容

  • 没有找到相关文章