이번 글에서는 유명한 Iris 데이터셋을 사용하여 판다스를 사용해 원하지 않는 데이터를 삭제하는 방법을 정리해봤습니다.
먼저 판다스 라이브러리를 불러오고 데이터셋을 불러오겠습니다.
iris 데이터셋의 첫 5줄을 확인하면 아래와 같습니다.
데이터셋 크기 (행, 열 개수) 확인하기
위 코드를 실행하면 (150, 5)가 출력됩니다. (행, 열) 순서로 iris 데이터셋에는 150개의 행과 5개의 열으 이루어져 있다는 걸 확인할 수 있습니다.
행 삭제하기
1. drop으로 인덱스 index 사용해서 삭제하기
데이터프레임.drop(인덱스)를 사용하여 삭제하고 싶은 행의 인덱스를 입력하면 됩니다.
넘파이와 같이 판다스에서 행은 axis=0이며 열은 axis=1로 지정할 수 있습니다.
디폴트 값이 axis=0이기 때문에 행을 삭제할 경우 생략 가능합니다.
한꺼번에 여러 개의 행을 삭제하고 싶을 경우 인덱스를 리스트 형식으로 넣는 것도 가능합니다.
범위를 사용하여 행 삭제하기
2. 파이썬 slice 사용하기
파이썬의 슬라이스를 사용하여 데이터 선택 및 삭제가 가능합니다.
- data[:끝] - e.g. data=data[:10] 첫 9행 제외하고 다 삭제하기
- data[시작:] - e.g. data=data[10:] 첫 10행 삭제하기
- data[시작:끝]
열 삭제하기
1. drop으로 열 이름을 사용해서 삭제하기
iris.drop('variety', axis=1) 또는 iris.drop('variety', axis = 'columns')
리스트를 사용해서 여러 개의 열을 한 번에 삭제할 수 있습니다.
숫자를 사용하여 삭제도 가능합니다.
밑은 iris 데이터셋의 첫 번째 (0), 두 번째 (1), 네 번째 (3) 열을 삭제하는 예제 코드입니다.
inplace = True or False?
- inplace=True: 기존 데이터 프레임을 변경하기
- inplace=False: 데이터프레임을 변경 후 copy를 return 하기
판다스에서 drop을 사용할 때 inplace의 default 값은 False입니다.
위의 예제와 같이 drop에서 inplace를 따로 지정을 해주지 않으면 기존 데이터 프레임은 보존됩니다.
inplace=False 경우 변경된 (행이나 열이 제거된) 데이터 프레임의 copy가 return이 되기 때문에 데이터 프레임을 지정해주면 됩니다.
inplace=True를 쓰는 경우 기존 데이터 프레임에 변화가 생깁니다.
"inplace=True" 설정값으로 적용하니 기존 데이터 프레임에서 'variety' 열이 사라진 걸 확인할 수 있습니다.