Python的TypeError:str和int

Python的TypeError:str和int,python,statistics,linear-regression,scatter-plot,Python,Statistics,Linear Regression,Scatter Plot,我在试图编译代码时收到了这个错误。我从xlsx文件中提取数据并创建了一个数据框,将空值替换为0,将所有值转换为sting,以便能够散点打印,当我试图显示线性回归的结果时,我收到了这个错误 TypeError: unsupported operand type(s) for /: 'str' and 'int' 这就是我到目前为止所做的代码 import pandas as pd import numpy as np import matplotlib.pyplot as plt def pr

我在试图编译代码时收到了这个错误。我从xlsx文件中提取数据并创建了一个数据框,将空值替换为0,将所有值转换为sting,以便能够散点打印,当我试图显示线性回归的结果时,我收到了这个错误

 TypeError: unsupported operand type(s) for /: 'str' and 'int'
这就是我到目前为止所做的代码

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
def predict(x):
return slope * x + intercept
from scipy import stats
xlsxfile = pd.ExcelFile("C:\\Users\\AchourAh\\Desktop\\PL14_IPC_03_09_2018_SP_Level.xlsx") 
data = xlsxfile.parse('Sheet1', index_col = None, header = None) 
data1 = data.fillna(0) #Replace null values of the whole dataset with 0
data1 = data1.astype(str)
print(data1)
X = data1.iloc[0:len(data1),1] 
print(X)
Y = data1.iloc[0:len(data1),2] 
print(Y)
axes = plt.axes()
axes.grid() 
plt.scatter(X,Y)     
slope, intercept, r_value, p_value, std_err = stats.linregress(X, Y)
注意到我是这方面的初学者。最后一行导致错误 这是数据帧的第一列COP COR和PAUS,我试图对其应用一些线性回归:

 0            PP   SP000045856 COP COR  SP000045856 PAUS   
 1          201723                    0              2000   
 2          201724                12560             40060   
 3          201725               -17760             15040   
 4          201726                -5840             16960   
 5          201727                10600             4480   
 6          201728                    0             14700   
 7          201729                 4760             46820  

。。。直到第27行,Excel文件中的数据在第一行有标题信息,因此设置
header=None
是数据中有字符串值而不是列名称的原因。
如果删除标题kwarg

xlsxfile = pd.ExcelFile("C:\\Users\\AchourAh\\Desktop\\PL14_IPC_03_09_2018_SP_Level.xlsx") 
data = xlsxfile.parse('Sheet1', index_col = None)
一切都应该正常工作,您应该得到如下数据帧:

data

   0      PP  SP000045856 COP COR  SP000045856 PAUS
0  1  201723                    0              2000
1  2  201724                12560             40060
2  3  201725               -17760             15040
3  4  201726                -5840             16960
4  5  201727                10600              4480
5  6  201728                    0             14700
6  7  201729                 4760             46820
但是,通过直接使用pandas的
read\u excel
-功能,您可以在更短的时间内完成同样的任务:

data = pd.read_excel('C:\\Users\\AchourAh\\Desktop\\PL14_IPC_03_09_2018_SP_Level.xlsx', 'Sheet1')
然后可以绘制散点图,例如

data.plot('SP000045856 COP COR', 'SP000045856 PAUS', 'scatter')
或者更好的可读性,但相同:

data.plot.scatter('SP000045856 COP COR', 'SP000045856 PAUS')
线性回归可以这样做

slope, intercept, r_value, p_value, std_err = stats.linregress(data['SP000045856 COP COR'], data['SP000045856 PAUS'])

您好,欢迎来到苏。为什么
将所有值转换为字符串以便能够散点打印??为什么您认为需要字符串才能创建散点图?但是-
stats.linregresse
需要数字数组,因为它计算一些独立变量(如时间或其他)的线性回归,例如一些测量值,例如噪声数据。。。也许您可以简单地看一下这个函数的文档:为了完整起见,我的建议是:不要将数据转换为字符串,以实现您想要实现的目标。事实上,使用两个字符串数组作为参数时,分散有效且不会抛出错误并不一定意味着,结果对您有用或有意义。如果我删除astype行,我会收到以下消息:TypeError:0不是散点图行中的字符串,这就是我转换为字符串的原因。您知道如何在不接收此错误的情况下散点图吗?请将您的数据框作为示例发布,以便我们可以看到您正在处理的数据。(请不要截图,像代码一样发布,如果太大,可能只是
data.head()
)我可以通过向
plt.scatter
提供一个包含字符串和整数的列表来重现您的错误。您是否可能在数据的第一行中有标题名。。。?