【发布时间】:2018-12-15 00:06:59
【问题描述】:
我的目标是对多行进行回归分析,并将结果存储在单独的列中,附加到我加载的数据框中。
所以,我找到了下面的代码,它给出了一个 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 13 14 15 16 17 18 19 20 21 22 23 24];
[100 10 61 55 29 77 61 42 70 73 98 62 25 86 49 68 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 值和标准差。
我尝试用这段代码迭代每一行(这会产生一个新的数据框,这也可以):
def linreg(row):
z = scipy.stats.linregress(x,y)
linreg_df = pd.DataFrame(z)
return(linreg_df)
full_dataframe = None
for index,row in df.iterrows():
z = linreg(index)
if full_dataframe is None:
full_dataframe = z.T
else:
full_dataframe = full_dataframe.append([z.T])
full_dataframe.to_excel('Directory\\File.xlsx')
但它给了我以下错误:
有没有人可以告诉我我做错了什么以及正确的解决方案是什么?
谢谢,
史蒂文
【问题讨论】:
标签: python python-3.x windows statistics anaconda