Innovate With Data

데이터로 더 큰 가치를 제공합니다.

맨땅에 프로그래밍/Python 복기장

Dataframe에서 특정 단어를 포함한 행 삭제 하기(Feat. Pandas)

데이터위자드 2023. 6. 27. 22:31
반응형

Pandas 특정 문자 포함한 행 삭제하기

Pandas Dataframe에서 활용 중 특정 문자를 포함한 행을 삭제하고 싶었다.

 

  Pandas 패키지 이하 Dataframe을 활용하여 여러 가지 데이터를 활용하시는 분들이라면, 한 번쯤은 경험해 보게 되는 상황일 것이라 생각됩니다. 저는 개인적으로 주식 데이터를 가져와서 Dataframe으로 만들고 퀀트 투자를 하는데요. 데이터를 가져오다 보면, 특정 문자를 포함한 종목을 필터링해야 하는 상황이 생기곤 하였습니다.

 

 비단 퀀트뿐만 아니라, 다른 데이터 분석에서도 특정 문자를 포함한 데이터를 삭제하기 위해 사용하게 되니 알아두시면 두고두고 편리하게 사용하게 되실 것이라 생각됩니다.

 

 당연한 얘기지만 이번에 사용할 파이썬 패키지는 Pandas입니다.

 

https://pypi.org/project/pandas/

 

pandas

Powerful data structures for data analysis, time series, and statistics

pypi.org

 

 데이터 분석 환경에서는 뭐 워낙 유명한, 아니 필수적인 패키지 때문에 부연설명이 더 필요하진 않을 것이라 생각됩니다.

(Pandas에 대해서 나온 책이나 블로그 유튜브도 워낙 다양하고 방대하니 그쪽으로 따로 공부해 보시는 것을 추천드립니다.)

 

pandas dataframe에서 특정 문자 포함 행 삭제하기

 

먼저, 데이터 프레임 처리를 위해 pandas 패키지를 import 하여 줍니다.

 

 
import pandas as pd
 

 

 데이터프레임에서 특정 문자를 포함한 행을 삭제하기 위해서는 두 가지 방법이 있습니다. (예시를 위해, '종목명' 열에서 '리츠'와 '인베스트'를 포함한 행을 삭제하도록 하겠습니다.)

 

첫 번째 방식은 다음과 같습니다.

 

 
df_finance = df_finance[~df_finance['종목명'].str.contains("리츠", na=False, case=False)]
df_finance = df_finance[~df_finance['종목명'].str.contains("인베스트", na=False, case=False)]
 

 

내용을 풀이해 보자면

 

  1. 데이터프레임 df_finance 중에
  2. '종목명' 열에 '리츠'와 '인베스트'를 포함한 행을 여집합으로 하는
  3. 데이터 프레임을 df_finance에 할당하라.

 

라는 의미로 이해하시면 되겠습니다. (반대로 말하자면 단순히 특정 문자를 빼는 것과 같은 의미가 되겠네요.)

 

두 번째 방식은 다음과 같습니다. (예시로 '홀딩스'라는 문자를 포함한 행을 삭제하도록 하겠습니다.)

 

 
idx = df_finance[df_finance['종목명'].str.contains('홀딩스')].index
df_finance = df_finance.drop(idx)
 

 

  1. 데이터프레임 df_finance 중에
  2. '종목명' 열에 '홀딩스'를 포함한 데이터프레임을 만들고 idx에 할당 후
  3. 데이터 프레임을 df_finance에서 idx 데이터 프레임을 삭제(drop)하라.

 

라는 방식으로 특정 문자를 포함한 행을 삭제할 수 있습니다.

 

추가로, 특정 문자를 포함이 아닌 일치하는 행을 삭제하는 프로그램은 다음과 같습니다. (예시를 위해, '종목명' 열에서 'XXYY기업'을 데이터셋에서 삭제하도록 하겠습니다.)

 

 
df_finance = df_finance[df_finance['종목명'] != 'XXYY기업']                 # 특정 문자와 일치하는 행 삭제
 

 

참고하시어, 즐거운 데이터 생활 되시길 바랍니다.

 

 

도움이 되셨다면, 왼쪽 아래 '💗' 클릭 부탁드립니다. 감사합니다.

반응형