Я использую Linregress в Python, чтобы получить наклон, перехват и т.д.
Результатом является файл csv. Однако вывод данных не имеет заголовков в столбцах. Вывод данных равен: наклон = 5.562, перехват = 223.5 и т.д.
Изображение прилагается к тому, что я вижу в записной книжке Jupyter (левое изображение), и мне нужно, чтобы данные были как (правое изображение). t переупорядочивает данные, так что заголовки не видны горизонтально, но вертикально.
Будет здорово, если я смогу помочь в этом.
Спасибо за прочтение!!
Вы могли бы сделать что-то вроде:
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']