2017-04-08 46 views
9

kodlamak için. Herkes yardım edebilir mi?Python "TypeError: unhashable türü: 'dilim'" Python kategorik veri kodlama için aşağıdaki kodu çalıştırırken ben <blockquote> <p>TypeError: unhashable type: 'slice'</p> </blockquote> <p></p> alıyorum kategorik verileri

# 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]) 
+2

Csv dosyasında ne var? Hangi satırda TypeError var? –

+1

Lütfen sorunuza karşılık gelen yığın izini ekleyin. –

+0

Veri kümesi hakkında bilgi verilsin mi? Ben 'iloc' dilimleme gibi 2d dizisi değil, bir dize sütun etiket bekliyor sanıyorum. Hata, bir "dilim" in (ör. 0: 4) sözlük anahtarı olarak veya bunun gibi bir şeyde kullanıldığı anlamına gelir. – hpaulj

cevap

23

X bir dataframe ve X[:, 3] gibi dilim terminoloji ile erişilemez. iloc veya X.values aracılığıyla erişmeniz gerekir. Ancak, X yolunu oluşturduğunuzda, bir kopyasını oluşturdu. Değişken X oluşturulurken ya 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]) 
0

kullanım değerleri kullanmak ya da matrisini X ve Y vektör kullanımı values oluştururken kodlama sırasında

# 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 
1

yukarıda sözü edildiği gibi olur.

X=dataset.iloc[:,4].values 
Y=dataset.iloc[:,0:4].values 

Sorununuzu kesinlikle çözecektir.