我有下面的数据框架,其中包含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