머신러닝 및 딥러닝/Python

[데이터 분석] 파이썬 Pandas 행, 열 삭제

밴B 2021. 6. 27. 19:45
728x90
반응형



이번 글에서는 유명한 Iris 데이터셋을 사용하여 판다스를 사용해 원하지 않는 데이터를 삭제하는 방법을 정리해봤습니다.

출처: Wikipedia 아이리스 꽃 데이터셋


먼저 판다스 라이브러리를 불러오고 데이터셋을 불러오겠습니다.

import pandas as pd 
iris = pd.read_csv("iris.csv")

iris 데이터셋의 첫 5줄을 확인하면 아래와 같습니다.

iris 데이터셋의 첫 5줄


데이터셋 크기 (행, 열 개수) 확인하기

iris.shape

위 코드를 실행하면 (150, 5)가 출력됩니다. (행, 열) 순서로 iris 데이터셋에는 150개의 행과 5개의 열으 이루어져 있다는 걸 확인할 수 있습니다.



행 삭제하기

1. drop으로 인덱스 index 사용해서 삭제하기
데이터프레임.drop(인덱스)를 사용하여 삭제하고 싶은 행의 인덱스를 입력하면 됩니다.

new_df = old_df.drop(10, axis=0)

iris 데이터셋에서 index=2인 행을 삭제한 모습


넘파이와 같이 판다스에서 행은 axis=0이며 열은 axis=1로 지정할 수 있습니다.
디폴트 값이 axis=0이기 때문에 행을 삭제할 경우 생략 가능합니다.

출처: Medium (이미지 클릭하면 이동)



한꺼번에 여러 개의 행을 삭제하고 싶을 경우 인덱스를 리스트 형식으로 넣는 것도 가능합니다.

new_iris = iris.drop([1,2]) 
new_iris.head()

index=1과 index=2인 열을 삭제한 예제


범위를 사용하여 행 삭제하기

iris2 = iris.drop(labels=range(40, 45), axis=0)





2. 파이썬 slice 사용하기
파이썬의 슬라이스를 사용하여 데이터 선택 및 삭제가 가능합니다.

  • data[:끝] - e.g. data=data[:10] 첫 9행 제외하고 다 삭제하기
  • data[시작:] - e.g. data=data[10:] 첫 10행 삭제하기
  • data[시작:끝]
iris[1:10]

인덱스 1부터 10을 제외하고 삭제하기

 

 


열 삭제하기

1. drop으로 열 이름을 사용해서 삭제하기

iris.drop('variety', axis=1) 또는 iris.drop('variety', axis = 'columns')

variety 열을 삭제한 모습


리스트를 사용해서 여러 개의 열을 한 번에 삭제할 수 있습니다.

iris = iris.drop(['sepal.length', 'sepal.width'], axis=1)

열 두개를 지운 데이터의 첫 5줄


숫자를 사용하여 삭제도 가능합니다.
밑은 iris 데이터셋의 첫 번째 (0), 두 번째 (1), 네 번째 (3) 열을 삭제하는 예제 코드입니다.

iris = iris.drop(iris.columns[[0,1,3]], axis=1)

숫자로 행을 삭제


inplace = True or False?

pandas documentation

  • inplace=True: 기존 데이터 프레임을 변경하기
  • inplace=False: 데이터프레임을 변경 후 copy를 return 하기

판다스에서 drop을 사용할 때 inplace의 default 값은 False입니다.
위의 예제와 같이 drop에서 inplace를 따로 지정을 해주지 않으면 기존 데이터 프레임은 보존됩니다.

inplace를 설정 안했을때

inplace=False 경우 변경된 (행이나 열이 제거된) 데이터 프레임의 copy가 return이 되기 때문에 데이터 프레임을 지정해주면 됩니다.

inplace=True를 쓰는 경우 기존 데이터 프레임에 변화가 생깁니다.

inplace=True를 쓴 예시

"inplace=True" 설정값으로 적용하니 기존 데이터 프레임에서 'variety' 열이 사라진 걸 확인할 수 있습니다.

728x90
반응형