TensorFlow - Help Protect the Great Barrier Reef대회 문제를 풀다가 train을 찍어보니 아래처럼 0번부터 15번까지는 결측치가 있다는 걸 확인했다. 이를 지워주고자 한다.
train = train[train['annotations'].str.len()>0].reset_index(drop = True)
위 코드를 확인해보자.
우선 train안에서 string의 길이가 0 이상인 애들만 annotations
에 남기려고 한다.
뒤에 reset_index(drop = True)
는 인덱스를 처음부터 재배열 해주는 함수다. drop = True
옵션을 주게 되면 기존 인덱스를 버리고 재배열해준다.
더 자세한 인덱스 활용을 참고하자.
이렇게 했더니 결측치가 사라지지 않는다.
결측치 안의 값에 문제가 있는 것 같았다.
train['annotations'][0]
를 찍어서 확인해봤다.
이런 결과가 나온다. 대괄호 좌우에 `가 붙어있어서 문자형으로 출력되기 때문에 문제가 생겼던 모양이다.
.apply(eval)
로 리스트로 변환해주자.
train['annotations'] = train['annotations'].apply(eval)
다시 train['annotations'][0]
를 찍어서 확인해보자.
이제 train을 다시 찍어보면 결측치가 제거되었다.