Scipy linregress 传递 Pandas d 时返回元组

2024-04-18 07:27:03 发布

您现在位置:Python中文网/ 问答频道 /正文

使用Pandas,我从CSV文件中读取数据,然后尝试使用linregresse对其执行线性回归。我能够从文件中提取和操作数据,但是,当我使用linregresse时,虽然它似乎运行回归,但它返回一个元组,并且似乎没有slope、intercept和其他属性。你知道吗

我得到的错误如下:

Traceback (most recent call last):
  File "Plot test.py", line 24, in <module>
    UP_S_m = UP_S_stats.slope
AttributeError: 'tuple' object has no attribute 'slope'

代码如下:

import csv
import pandas as pd
import matplotlib.pyplot as plt
from scipy.stats import linregress

headers = ['UnitPrice', 'FinalPrice', 'ProductName', 'gSugar', 'gProtein', 'gFat', 'Calories', 'ContainerNum', 'Ounces']

data = pd.read_csv("Yogurt Sugar - All Data CSV.csv", names = headers, skiprows = 1)

UnitPrice = data.UnitPrice
FinalPrice = data.FinalPrice
Sugar = data.gSugar
Protein = data.gProtein
Fat = data.gFat
Calories = data.Calories
Ounces = data.Ounces

#
# Run regressions.
#

UP_S_stats = linregress(UnitPrice, Sugar)

UP_S_m = UP_S_stats.slope

我看了几个例子,包括this very similar one,但不能确定哪里出了问题。你知道吗


Tags: csvimportdataasstatssugarslopepd
1条回答
网友
1楼 · 发布于 2024-04-18 07:27:03

从scipyversion0.16.0开始,^{}返回一个^{},允许您使用属性名访问元组的元素。如果您使用的是早于0.16的SciPy版本,则返回值是一个普通元组,因此必须使用常规索引获取斜率,例如

UP_S_m = UP_S_stats[0]

或者直接从函数调用中解包名称,例如

slope, intercept, rvalue, pvalue, stderr = linregress(UnitPrice, Sugar)

相关问题 更多 >