MLOps 부트캠프 by 한경+토스뱅크/Python

DataFrame - drop() 함수로 데이터 삭제하기(feat.axis)

나니니 2024. 8. 2. 17:44

 drop() 함수는 Pandas 라이브러리에서 데이터프레임이나 시리즈에서 특정 행이나 열을 삭제할 때 사용되는 메서드다. 주로 데이터 분석을 할 때 필요 없는 데이터나 특정 기준으로 데이터를 정리하고 싶을 때 유용하다. 

 

로우를 삭제할 때는 함수 안에 바로 삭제할 로우의 인덱스 값을 넣어 주면 되고, 컬럼을 삭제할 때는 columns라는 파라미터를 사용해서 삭제할 컬럼의 이름을 넣어 주면 된다.

# married 컬럼 삭제하기
loan_df.drop(columns='married')

 

import pandas as pd

# 데이터프레임 생성
df = pd.DataFrame({
    '이름': ['철수', '영희', '민수', '지영'],
    '수학': [85, 92, 70, 88],
    '영어': [78, 88, 95, 76],
    '과학': [92, 85, 80, 91]
})

# '민수' 행 삭제
result = df.drop(labels=[2], axis=0)

# '영어' 열 삭제
result = df.drop(labels=['영어'], axis=1)

# 원본 데이터프레임에서 '지영' 행 삭제
df.drop(labels=[3], axis=0, inplace=True)

 

axis 파라미터 - 연산 방향(컬럼/로우) 결정

drop() 함수를 쓸 때 axis라는 파라미터를 많이 사용하는데, 연산을 컬럼 방향으로 할지, 로우 방향으로 할지 정할 수 있는 함수에서 주로 사용된다.

drop()에서는 이 값에 따라 로우를 삭제할지, 컬럼을 삭제할지 정할 수 있는데, axis의 기본값은 로우를 삭제하는 것을 의미하는 0이다. 

컬럼을 삭제할 때는 drop()에서 columns 값에 바로 컬럼명을 넣을 수도 있고, axis 값을 1이나 columns로 줄 수도 있다.

두 방법 모두 같은 결과물을 얻을 수 있지만 전자가 코드도 좀 더 짧고, 이해하기 쉽다는 장점이 있다. 

 

예제) 

대출 심사 기준이 변경되어 신청자들의 대출 승낙 여부를 다시 심사해야 한다고 합니다. loan_df에서 loan_status 컬럼을 삭제해 주세요.

import pandas as pd

loan_df = pd.read_csv('data/loan.csv')
loan_df = loan_df.set_index('loan_id')
new_columns = {'married_or_not': 'married',
               'self_employed_or_not': 'self_employed',
               'applicant_income': 'income',
               'loan_amount': 'amount'}
loan_df = loan_df.rename(columns=new_columns)

loan_df.drop('loan_status', axis=1)


결과값