[Python Pandas] 행 또는 열 제거 함수 drop 이해하기

이번 포스팅에서는 데이터 분석 시 필수적으로 알아야 하는 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 = [‘칼럼명’]) 구문을 꼭 기억하시기 바랍니다.

감사합니다!

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다