每列的线性回归,而无需创建for循环或函数

时间:2019-04-17 03:04:18

标签: python pandas scipy regression

对pandas数据框中的每一列或每一行应用回归,而无需使用for循环。

对此有类似的帖子; Apply formula across pandas rows/ regression line,对每个“行”都进行回归,但是绘制给出的答案是错误的。我无法对此发表评论,因为我没有足够的声誉,主要的问题是,它接受列的值,然后在每一行上使用apply函数。

目前,我只知道如何做每一列。

qstat -f -Q

我希望在不创建函数或for循环的情况下找到答案,类似于;熊猫df.sum(),但是我想做一个回归,而不是求和,从而导致斜率,截距,r值,p值和标准误差。

1 个答案:

答案 0 :(得分:2)

看下面的例子:

import numpy as np
import pandas as pd
from scipy.stats import linregress

np.random.seed(1997)
df = pd.DataFrame(pd.np.random.rand(100, 10))

df.apply(lambda x: linregress(df.index, x), result_type='expand').rename(index={0: 'slope', 1: 
                                                                                  'intercept', 2: 'rvalue', 3:
                                                                                  'p-value', 4:'stderr'})

它应该返回您想要的。