Innovate With Data

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

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

Dataframe에서 특정 조건을 만족하는 행만 추출하기(Feat. Pandas)

데이터위자드 2024. 4. 4. 23:23
반응형

Dataframe에서 특정 조건을 만족하는 행만 추출하기(Feat. Pandas)

Pandas Dataframe 활용 중 특정 조건을 만족하는 행만 추출하고 싶었다.

 

 안녕하세요? 데이터위자드입니다.

 

 

  Pandas 라이브러리로 즐거운 데이터 생활을 하고 있으신 분들은 특정조건을 만족하는 행만 추출하거나 삭제하는 작업을 꽤 자주 수행하실 것이라 생각됩니다. 저 또한, 업무나 개인적으로 활용 중인 주식 투자 RPA와 같은 경우에 종종 사용하게 되는데요. 오늘은 그중에서도 특정 조건을 만족하는 (혹은 포함하는) 행만 추출하는 예제를 살펴보도록 하겠습니다.

 

 아마, 데이터 분석 업무를 하실 때 두고두고 사용하게 되실 것이라 사료됩니다.

 

 오늘도 역시 사용할 파이썬 라이브러리는 Pandas가 되시겠습니다.

 

 

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

 

pandas

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

pypi.org

 

 

 데이터 분석이 필요한 경우에 Numpy와 더불어 거의 기본이 되는 라이브러리다 보니 파이썬으로 여러 가지 일을 하시는 분들이라면 한 번쯤 그 이름을 들어보셨을 테니 더 이상 부연설명이 필요하진 않을 것이라 생각됩니다.

 

 

 Pandas 라이브러리 하나만을 다룬 굉장히 두꺼운 책이 있을 정도로 Pandas는 다재다능한 기능을 가지고 있으니, 시간을 가지고 천천히 공부하시길 권해드립니다.

 

 

Pandas를 이용한 데이터 분석 실습:라이브러리로 다양한 실제 데이터 분석

COUPANG

www.coupang.com

 

 

 

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

 

 

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

 

 

 
import pandas as pd
 

 

 

 다음으로, 데이터프레임에서 특정 열의 데이터가 조건보다 크거나 작을 때를 가정해 보겠습니다.

예시를 위해,

 

  • 원본 dataframe 변수명 : df

  • 조건을 만족하는 열만 추출한 후 선언되는 dataframe 변수명 : df_sell

  • 원본 dataframe에서 조건식을 걸 특정 열 : 'profit'

 

이라고 하고,

 

 주식 투자 자동화 RPA에서 어떤 종목이 설정된 수익률을 초과하였을 때, df_sell이라는 dataframe 추출한 후 매도하는 시나리오라고 해보겠습니다.

 

먼저 'profit' 열에서 수익률이 30 % 이상 초과한 경우 익절 하는 경우를 상정해 봅시다 

 

원본 데이터프레임에서 위 조건을 만족하는 행을 추출해 줍니다.

 

 

       
df_sell = df[(df['profit'] > 30.0)]
 

 

 

참 쉽죠?
참 쉽죠?

 

 

그리고, 수익률이 -10%를 하회하여 손절하는 경우도 생각해 보면,

 

       
df_sell = df[(df['profit'] < -10.0)]
 

 

 

역시 간단히 정리할 수 있겠습니다.

 

 

하지만, 익절과 손절 조건 중 하나라도 만족하는 경우(OR 조건)인 경우는 어떻게 해야 할까요?

위 두 개의 조건식을 각각 실행 후 dataframe을 합칠 수도 있겠지만, 간단하게 OR 조건을 걸어서 해결할 수도 있겠습니다.

 

 

       
df_sell = df[(df['profit'] > 30.0) | (df['profit'] < -10.0)]
 

 

dataframe에서 'OR' 조건은  기호로 합니다.  

 

 

이후, 추출된 df_sell을 가지고 매도를 하든 알람을 띄우든 하면 우리가 원하는 기능 완성입니다.

 

 
# 수익률 초과 OR 수익률 하회 종목 시장가 익절 / 손절
sellAllStock(df_sell)
# Slack 푸시 알람
slackOut("시장가 매도 발생, 잔고 확인")
 

 

 

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

 

* 본 포스팅에서 언급된 라이브러리, 단체는 필자와 무관함을 알립니다.

 

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

 

 

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

반응형