尝试在.csv数据集上进行linregress时,Scipy.stats错误“无法解包的值太多”

问题描述

我正在尝试对实验数据进行调整。当我运行代码时,通常会出现错误

回溯(最近通话最近): 在第21行的文件“ /home/h/oscillator1.py” 斜率,截距,r_value = scipy.stats.linregress(数据) ValueError:太多值无法解包(预期3)

这是我的代码

import matplotlib.pyplot as plt 
import pandas as pd 
import numpy as np 
import scipy.stats


data = pd.read_csv("/home/h/Documents/oscillator1.csv",decimal='.')

plt.plot(
         data['t (s)'],data['x (cm)'],marker='+',linestyle="None",label="Data"
         )

plt.xlabel("t [s]",fontsize=13) 
plt.ylabel("x [cm]",fontsize=13) 
plt.xticks(np.arange(0,1300,step=150),size = 13) 
plt.yticks(np.arange(-11,2,step=1),size = 13) 
plt.title("x vs t from torsion balance measurements",fontsize=16)

slope,intercept,r_value = scipy.stats.linregress(data) 
print("slope = {},intercept = {} and r-value = {}".format(slope,r_value**2))

plt.plot(data['t (s)'],data['t (s)']*slope+intercept,label="Linear regression"
         )

plt.legend(fontsize=12) plt.show()

感谢任何帮助。

解决方法

请参阅documentation page。函数scipy.stats.linregress返回5个值:

  1. 坡度
  2. 拦截
  3. 右值
  4. pvalue
  5. stderr

您将需要修改对scipy.stats.linregress的呼叫,如下所示:

slope,intercept,r_value,p_value,stderr = scipy.stats.linregress(data)