이번 포스팅에서는 데이터 분석 시 필수적으로 알아야 하는 Python Pandas 라이브러리의 함수 중 행 또는 열 제거 함수 drop 에 대해서 알아 보겠습니다.
행 또는 열 제거 함수 drop 설명
drop 함수는 행이나 열에서 지정된 라벨을 삭제합니다.
라벨 이름과 해당 축을 지정하거나 인덱스 또는 열 이름을 직접 지정하여 행이나 열을 제거합니다. 다중 인덱스를 사용하는 경우 레벨을 지정하여 다른 레벨의 라벨을 제거할 수 있습니다.
행 또는 열 제거 함수 drop 구문
행 또는 열을 제거하는 함수 drop 구문은 아래와 같고,
DataFrame.drop(labels = None, *,
axis = 0,
index = None,
columns = None,
level = None,
inplace = False,
errors = ‘raise’)
반환 값은 DataFrame 혹은 None 입니다.
drop 함수 인수
- labels : single label or list-like
- 삭제할 인덱스 또는 열 라벨입니다. 튜플은 단일 레이블로 사용되며 리스트와 같은 것으로 처리되지 않습니다(실제 데이터 분석 시 잘 사용하지 않는 인수로 참고하시면 됩니다.).
- axis : {0 or ‘index’, 1 or ‘columns’}, default 0
- 인덱스(0 또는 ‘index’) 또는 열(1 또는 ‘columns’)에서 라벨을 삭제할 지 여부를 결정합니다.
- index : single label or list-like
- 축을 지정할 수 있는 다른 인수입니다(두 개의 인수(labels, axis = 0)를 사용하는 것은 index = labels 와 동일합니다. ).
- columns : single label or list-like
- 축을 지정할 수 있는 다른 인수입니다(두 개의 인수(labels, axis = 1은 columns = labels 와 동일힙니다).
- level : int or level name, optional
- MultiIndex의 경우 라벨이 제거될 수준을 정의합니다.
- inplace : bool, default False
- True인 경우, 기존 DataFrame을 행 또는 열을 제거한 새로운 결과 DataFrame으로 업데이트 합니다.
- errors : {‘ignore’, ‘raise’}, default ‘raise’
- ‘ignore’를 선택하면 오류를 억제하고 기존 라벨만 삭제합니다.
drop 함수 사용 예시
사용 예시를 위한 임시 데이터 생성
import pandas as pd
import numpy as np
tempData = pd.DataFrame(np.arange(12).reshape(3, 4),columns=['A', 'B', 'C', 'D'])
tempData
------------------------------------------------------------------------------------
A B C D
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
열 제거 예시
# labels 과 axis 인수를 사용한 열 제거 예시
tempData.drop(['B', 'C'], axis = 1)
------------------------------------------------
A D
0 0 3
1 4 7
2 8 11
# columns 인수를 사용한 열 제거 예시
tempData.drop(columns = ['B', 'C'])
--------------------------------------------
A D
0 0 3
1 4 7
2 8 11
# => 결과는 위의 예제와 동일함
행 제거 예시
# index 인수를 사용한 행 제거 예시
tempData.drop([0, 1])
-----------------------------
A B C D
2 8 9 10 11
MultiIndex DataFrame의 열 또는 행 제거
# 멀티인덱스를 가지는 임시 DataFrame 생성
multiIndex = pd.MultiIndex(levels = [['llama', 'cow', 'falcon'],
['speed', 'weight', 'length']],
codes = [[0, 0, 0, 1, 1, 1, 2, 2, 2],
[0, 1, 2, 0, 1, 2, 0, 1, 2]])
tempData = pd.DataFrame(index = multiIndex, columns = ['big', 'small'],
data=[[45, 30], [200, 100], [1.5, 1], [30, 20], [250, 150], [1.5, 0.8], [320, 250], [1, 0.8], [0.3, 0.2]])
tempData
-----------------------------------------------------------------------------------------
big small
llama speed 45.0 30.0
weight 200.0 100.0
length 1.5 1.0
cow speed 30.0 20.0
weight 250.0 150.0
length 1.5 0.8
falcon speed 320.0 250.0
weight 1.0 0.8
length 0.3 0.2
아래 코드는 위의 DataFrame을 이용해서 MultiIndex DataFrame에서 특정 인덱스 조합을 제거하는 예시입니다. ‘falcon’ 및 ‘weight’ 조합을 삭제 인덱스로 정의하면 해당 행만 삭제할 수 있습니다.
tempData.drop(index = ('falcon', 'weight'))
------------------------------------------------------------
big small
llama speed 45.0 30.0
weight 200.0 100.0
length 1.5 1.0
cow speed 30.0 20.0
weight 250.0 150.0
length 1.5 0.8
falcon speed 320.0 250.0
length 0.3 0.2
# => 인덱스가 'falcon' & 'weight' 인 행이 제거됨
# 인덱스가 'cow' 이고, 열 이름이 'small' 인 데이터 제거하기
tempData.drop(index = 'cow', columns = 'small')
----------------------------------------------------------
big
llama speed 45.0
weight 200.0
length 1.5
falcon speed 320.0
weight 1.0
length 0.3
# 멀티인덱스를 가지는 dataFrame에서 level 인수 사용하기
tempData.drop(index = 'length', level = 1)
---------------------------------------------------
big small
llama speed 45.0 30.0
weight 200.0 100.0
cow speed 30.0 20.0
weight 250.0 150.0
falcon speed 320.0 250.0
weight 1.0 0.8
인덱스 ‘length’ 값을 가지는 레벨이 멀티인덱스 중 두번째 수준이므로 level = 1 을 지정하였습니다. 만약, 멀티인덱스 중 첫번째 수준에 해당하는 인덱스 값을 제거하려면, level = 0을 지정해야 합니다.
아래 예시를 참고하시면 됩니다.
tempData.drop(index = 'llama', level = 0)
---------------------------------------------
big small
cow speed 30.0 20.0
weight 250.0 150.0
length 1.5 0.8
falcon speed 320.0 250.0
weight 1.0 0.8
length 0.3 0.2
이상으로 DataFrame에서 행 또는 열을 제거하는 함수 drop 에 대해서 알아 보았습니다. 위에 나열된 예제 코드 중에서 실제 데이터 분석 시 가장 많이 사용하는 구문은 tempData.drop(columns = [‘칼럼명’]) 입니다. 위의 예시 중 하나만 기억해야 한다면, tempData.drop(columns = [‘칼럼명’]) 구문을 꼭 기억하시기 바랍니다.
감사합니다!