본문 바로가기
인공지능

KeyError: "[....] not in index"

by 녤 2023. 4. 6.

 

특정 columns을 원핫인코딩으로 바꾸고 사용하려고 할 때 해당 오류가 났다. 꽤 길게 고민했었는데 답은 간단했다. 

 

오류가 난 코드를 살펴보면 다음과 같다. 

 

#판다스 함수를 사용하여 원핫인코딩 
genre_labels = pd.get_dummies(data['genre'])
rating_labels= pd.get_dummies(data['genre'])

#설명 변수 x확인하기
#rating과 genre는 원핫인코딩을 한 'rating_labels'랑 'genre_labels'로 바꿔줌
movies_columns = ['score', 'votes', 'budget', 'rating_labels', 'genre_labels', 'runtime']

fig=plt.figure(figsize=(16, 20))
ax = fig.gca()

data[movies_columns].hist(ax=ax)
plt.show()

오류가 난 이유는 'rating_labels'와 'genre_lables'가 당연히 data에 없는 columns이기 때문이다. 

 

특정 컬럼을 전처리 한 후, 다시 사용하기 위해서는 (당연한 이야기이지만) 다시 해당 컬럼의 값을 넣어줘야 한다. 따라서 해당 오류를 해결하기 위해서는 

 

#판다스 함수를 사용하여 원핫인코딩 
genre_labels = pd.get_dummies(data['genre'])
rating_labels= pd.get_dummies(data['genre'])

#원핫인코딩한 값으로 바꿔줌
data['genre'] = genre_labels
data['rating'] = rating_labels

#설명 변수 x확인하기
#rating과 genre는 원핫인코딩을 한 'rating_labels'랑 'genre_labels'로 바꿔줌
movies_columns = ['score', 'votes', 'budget', 'rating', 'genre', 'runtime']

fig=plt.figure(figsize=(16, 20))
ax = fig.gca()

data[movies_columns].hist(ax=ax)
plt.show()

로 바꾸면 된다. 

 

 

허허..당연한 거를 가지고 3시간 넘게 고민했다.. 그래도 이걸로 배웠으니까 된거겠지 뭐

'인공지능' 카테고리의 다른 글

SettingWithCopyWarning:  (0) 2023.04.07