我正在
TypeError:不可用类型:' slice'
执行以下代码以在Python中编码分类数据时。有人可以帮忙吗?
# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# Importing the dataset
dataset = pd.read_csv('50_Startups.csv')
y=dataset.iloc[:, 4]
X=dataset.iloc[:, 0:4]
# Encoding categorical data
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_X = LabelEncoder()
X[:, 3] = labelencoder_X.fit_transform(X[:, 3])
答案 0 :(得分:82)
X
是一个数据框,无法通过X[:, 3]
等切片术语进行访问。您必须通过iloc
或X.values
进行访问。但是,您构建X
的方式使其成为副本......所以。我使用values
# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# Importing the dataset
# dataset = pd.read_csv('50_Startups.csv')
dataset = pd.DataFrame(np.random.rand(10, 10))
y=dataset.iloc[:, 4]
X=dataset.iloc[:, 0:4]
# Encoding categorical data
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_X = LabelEncoder()
# I changed this line
X.values[:, 3] = labelencoder_X.fit_transform(X.values[:, 3])
答案 1 :(得分:6)
在创建变量X或编码时使用值,如上所述
# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# Importing the dataset
# dataset = pd.read_csv('50_Startups.csv')
dataset = pd.DataFrame(np.random.rand(10, 10))
y=dataset.iloc[:, 4].values
X=dataset.iloc[:, 0:4].values
答案 2 :(得分:4)
创建矩阵X
和Y
向量时使用values
。
X=dataset.iloc[:,4].values
Y=dataset.iloc[:,0:4].values
这肯定会解决你的问题。
答案 3 :(得分:2)
如果在创建矩阵X和Y向量时使用.Values将会解决此问题。
y=dataset.iloc[:, 4].values
X=dataset.iloc[:, 0:4].values
当您使用.Values时,它将创建一个创建的矩阵的Object表示,并且将删除轴。 检查下面的链接以获取更多信息
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.values.html
答案 4 :(得分:0)
我得到了同样的错误(TypeError:unhashable type:'slice'),代码如下:
included_cols = [2,4,10]
dataset = dataset[:,included_cols] #Columns 2,4 and 10 are included.
通过在数据集之后放置iloc解决了以下代码:
included_cols = [2,4,10]
dataset = dataset.iloc[:,included_cols] #Columns 2,4 and 10 are included.
答案 5 :(得分:0)
尝试通过将标签编码器中的X [:,3]更改为X.iloc [:,3]
答案 6 :(得分:-2)
您的x和y值未运行,因此首先您要开始写这一点
import numpy as np
import pandas as pd
import matplotlib as plt
dataframe=pd.read_csv(".\datasets\Position_Salaries.csv")
x=dataframe.iloc[:,1:2].values
y=dataframe.iloc[:,2].values
x1=dataframe.iloc[:,:-1].values
价值点已经发布