해결된 질문
작성
·
313
0
안녕하세요~ ㅠㅠ
오늘도.. 강의를 복습하며 오류와의 싸움중입니다 ㅠㅠ
X_train = X_train.drop('ID',axis=1)
X_test_id = X_test.pop('ID')
다름이 아니고 불필요한 컬럼을 제거하는 과정에서 오류가 자주 발생하는데, 위 작업 진행 후 실행 -> 라벨인코딩 등 다른 코드 입력 후 재실행 할 경우 ID 컬럼이 이미 사라졌는데 또 실행되다보니(?) ID 컬럼은 찾을수 없다 라는 오류로 해석됩니다 ㅠㅠ
----> 4 X_train = X_train.drop('ID',axis=1)
5 X_test_id = X_test.pop('ID')
KeyError: "['ID'] not found in axis"
1) 위와 같은 오류는 어떻게 해결해야하나요?
2) 불필요한 컬럼을 삭제하는 과정은 꼭 필요한건가요?
3) X_train = X_train.drop('ID',axis=1) 의 경우 'X_train'에서 id 컬럼을 드랍한다 라고 이해했는데,
X_test_id = X_test.pop('ID') 는 'X_test_id' 라는 새로운 곳에 X_test의 ID 컬럼을 저장한다? 로 이해하면 되는건가요? ㅠㅠ
(이 질문을 하는 이유는 이전 예시문제 강의에서는 컬럼 명을 그대로 사용하여 cust_id = X_test.pop('cust_id') 로 사용했으나, 이번 강의에서는 ID = X_test.pop('ID') 가 아닌 'X_test_id'를 이용했기떄문입니다 ㅠㅠID = X_test.pop('ID') 요렇게 하면 안되나요? )
답변 1
0
주피터 노트북 형태에서 drop은 주의해주셔야 합니다.
한 번 실행하고 재실행시 이미 삭제되었기 때문에 위와 같은 오류가 발생해요
시험환경은 항상 처음부터 실행하기 때문에 이러한 오류가 발생하진 않습니다.
주피터 노트북에서 런타임 - 모두실행을 해주세요 :)
id 컬럼 삭제가 번거롭다면 놔둬도 됩니다. 머신러닝 모델이 중요도를 낮게 매깁니다. 다만 id컬럼이 object이면 어떻게 하는게 좋을까요? 놔두려면 라벨인코딩 해주거나 삭제해야 합니다.
pop은 2가지기능이 포함되어 있어요! 1)대입 후 2)삭제입니다.
변수명은 제가 임의로 만들고 있습니다. 원하는대로 본인이 알아볼 수있게만 하면됩니다.