我正在Python中使用Linregress来获取坡度,截距等
输出是一个csv文件。但是,数据输出的列中没有标题。数据输出为:slope = 5.562,intercept = 223.5等
随信附上一张我在Jupyter笔记本中看到的图像(左图)与我需要的数据(右图)。 t正在重新排列数据,以使标头不会在水平方向看到,而在垂直方向上可见。
如果能在这方面获得帮助,那将是很棒的事情。
感谢阅读!
答案 0 :(得分:1)
您可以执行以下操作:
res = df.groupby('Test_event')[['x','y']].apply(linregress).apply(pd.Series)
res.columns = ['slope','intercept','rvalue','pvalue','stderror']
尽管链接的apply
不够理想
示例:
>>> df
Test_event x y
0 5 1 4
1 5 1 5
2 5 2 6
3 6 3 8
4 6 4 10
5 6 5 11
>>> res = df.groupby('Test_event')[['x','y']].apply(linregress).apply(pd.Series)
>>> res.columns = ['slope','intercept','rvalue','pvalue','stderror']
>>> res
slope intercept rvalue pvalue stderror
Test_event
5 1.5 3.000000 0.866025 0.333333 0.866025
6 1.5 3.666667 0.981981 0.121038 0.288675
或者,您可以执行此操作,但是我不确定它是否更有效:
res = (df.groupby('Test_event')
.apply(lambda group: pd.Series(linregress(group['x'],group['y']))))
res.columns = ['slope','intercept','rvalue','pvalue','stderror']