我想在数据框中获得数据集的斜率(使用线性回归模型或sk-learn模型)。
df1:
A B C D
0 15 25 55 100
1 15.5 25.5 56 101
2 14.8 24.5 54.2 99.8
3 15.5 25.5 55.5 102
4 16 26 57 108
我想以pd.Series的形式获得每个柱子('A','B','C','D')的斜率。你能帮帮我吗?谢谢。
我想要的输出类似于下面(我只使用虚拟数字,而不是真正的斜率!):
slopes:
A 2.5
B 2.8
C 3.1
D 3.3
我相信这样做,这是一个简单的线性回归与numpy
import numpy as np
slopes = df.apply(lambda x: np.polyfit(df.index, x, 1)[0])
>>> slopes
A 0.20
B 0.20
C 0.35
D 1.70
如果您想要显示数据和拟合的斜坡:
for i in df.columns:
plt.scatter(df.index, df[i], label=i)
plt.plot(np.polyval(np.polyfit(df.index, df[i], 1), df.index))
plt.legend()
plt.show()