Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 不同行的线性回归结果列_Python_Python 3.x_Windows_Statistics_Anaconda - Fatal编程技术网

Python 不同行的线性回归结果列

Python 不同行的线性回归结果列,python,python-3.x,windows,statistics,anaconda,Python,Python 3.x,Windows,Statistics,Anaconda,我的目标是对几行进行回归分析,并将结果存储在单独的列中,附加到我加载的数据帧中 所以,我找到了下面的代码,它给出了一个x和一个y变量的结果 import pandas as pd import numpy as np import scipy.stats df = pd.read_excel("Directory\File.xlsx") x = df.iloc[0,:] y= df.iloc[1,:] scipy.stats.linregress(x,y) 这给了我以下结果: 本例的初始数据

我的目标是对几行进行回归分析,并将结果存储在单独的列中,附加到我加载的数据帧中

所以,我找到了下面的代码,它给出了一个x和一个y变量的结果

import pandas as pd
import numpy as np
import scipy.stats
df = pd.read_excel("Directory\File.xlsx")
x = df.iloc[0,:]
y= df.iloc[1,:]
scipy.stats.linregress(x,y)
这给了我以下结果:

本例的初始数据帧包含3行24列

[1 2 3 4 5 6 7 8 9 10 11 12 14 16 17 19 20 21 22 24]

[100 10 61 55 29 77 61 42 70 73 98 62 25 86 49 68 26 35 62 100 56 10 97]

[57 89 25 89 48 56 67 17 98 10 25 90 17 52 85 56 18 20 74 97 82 63 45 87]

零行始终是x轴:自变量。第1行和第2行是 因变量,即y轴。现在,我想执行这个回归分析,对于每一行(从第1行开始),它必须计算结果并将它们附加到数据帧。最后,我们将增加5列,每行包含斜率、截距、右值、p值和标准差

我试着用这段代码迭代每一行(这会生成一个新的数据帧,也可以):

但它给了我以下错误:

有没有人能告诉我我做错了什么,什么是正确的解决办法

谢谢


Steven

使用
\u asdict
方法将lineregress的结果转换为OrderedDictionary,然后您可以在数据帧的构造函数中使用该字典:

这是一个MCVE:

import pandas as pd
import scipy.stats


X = [1,2,3,4,7]
y = [2,4,6,9,13]

r = scipy.stats.linregress(X,y)

df = pd.DataFrame(r._asdict(), index=[0])
print(df)
输出:

      slope  intercept    rvalue    pvalue   stderr
0  1.858491   0.481132  0.989413  0.001306  0.15739
      slope  intercept    rvalue    pvalue    stderr
1  0.083478  58.123188  0.021827  0.919366  0.815204
2  0.399565  51.963768  0.096415  0.654034  0.879439
更新: 输出:

      slope  intercept    rvalue    pvalue   stderr
0  1.858491   0.481132  0.989413  0.001306  0.15739
      slope  intercept    rvalue    pvalue    stderr
1  0.083478  58.123188  0.021827  0.919366  0.815204
2  0.399565  51.963768  0.096415  0.654034  0.879439

使用
\u asdict
方法将lineregress的结果转换为OrderedDictionary,然后可以在数据帧的构造函数中使用该字典:

这是一个MCVE:

import pandas as pd
import scipy.stats


X = [1,2,3,4,7]
y = [2,4,6,9,13]

r = scipy.stats.linregress(X,y)

df = pd.DataFrame(r._asdict(), index=[0])
print(df)
输出:

      slope  intercept    rvalue    pvalue   stderr
0  1.858491   0.481132  0.989413  0.001306  0.15739
      slope  intercept    rvalue    pvalue    stderr
1  0.083478  58.123188  0.021827  0.919366  0.815204
2  0.399565  51.963768  0.096415  0.654034  0.879439
更新: 输出:

      slope  intercept    rvalue    pvalue   stderr
0  1.858491   0.481132  0.989413  0.001306  0.15739
      slope  intercept    rvalue    pvalue    stderr
1  0.083478  58.123188  0.021827  0.919366  0.815204
2  0.399565  51.963768  0.096415  0.654034  0.879439

我希望每一行都能做到。我怎么做?你的X排是什么?并且,您的y行与数据帧的其余部分交互?我的x行是第0行。我的y行确实在数据帧的其余部分进行迭代。谢谢Scott!我试了三排,但他只给了我前两排中的一排。代码是否需要调整?我调整了df.iloc中的值,但似乎没有做任何事情源数据帧有三行吗?然后是的,第一行是X,在第1行和第2行上运行两个回归。如果源数据帧有4行,那么应该得到三个回归。不需要修改。我希望它对每一行都这样做。我怎么做?你的X排是什么?并且,您的y行与数据帧的其余部分交互?我的x行是第0行。我的y行确实在数据帧的其余部分进行迭代。谢谢Scott!我试了三排,但他只给了我前两排中的一排。代码是否需要调整?我调整了df.iloc中的值,但似乎没有做任何事情源数据帧有三行吗?然后是的,第一行是X,在第1行和第2行上运行两个回归。如果源数据帧有4行,那么应该得到三个回归。不需要修改。