Python

배열 값에 존재하는 column 필터하기: pandas

PSAwesome 2021. 1. 4. 00:33
반응형

안녕하세요.

 

pandas.DataFrame을 사용할 때 꼭 필요한 기능 중 하나가 `필터`라고 생각하는데요.

 

필터의 역할을 하는 작업 중 pd.DataFrame.isin() 사용 방법에 대한 글입니다.

 

데이터는 SK HUB의 오픈 데이터 중 통화 데이터입니다.

 

문법

filter_list = ['2020-01-01','2019-10-01']  # 추출하고 싶은 컬럼

filtering = t_df['일자'].isin(filter_list)  # filtering 생성 True or False

t_df[filtering]  # target DataFrame에서 추출하기

 

데이터 생성

# sample data
columns = ['일자(YYYYMMDD)', '연령', '성별', '발신지', '대분류', '중분류', '통화비율(시군구내)', '년월',
       '일자']
data = [[20191230, 40, '남성', '경기 구리시', '의료편의', '의료시설', 0.0003, '2019-12','2019-12-30'],
[20191019, 30, '남성', '경기 성남시 수정구', '음식점', '한식', 0.0001, '2019-10','2019-10-19'],
[20191001, 30, '여성', '경기 안성시', '금융편의', '제2금융', 0.0004, '2019-10','2019-10-01'],
[20200311, 40, '여성', '경남 남해군', '쇼핑', '정보통신기기', 0.0002, '2020-03','2020-03-11'],
[20200317, 50, '여성', '서울 송파구', '음식점', '한식', 0.0001, '2020-03','2020-03-17'],
[20200204, 60, '남성', '강원 원주시', '서비스산업', '공공기업', 0.0001, '2020-02','2020-02-04'],
[20200210, 50, '남성', '강원 고성군', '금융편의', '주요금융', 0.0005, '2020-02','2020-02-10'],
[20200531, 50, '남성', '충남 논산시', '생활편의', '생활편의', 0.0002, '2020-05','2020-05-31'],
[20200914, 40, '여성', '경남 양산시', '쇼핑', '정보통신기기', 0.0001, '2020-09','2020-09-14'],
[20200417, 50, '여성', '전남 신안군', '서비스산업', '공공기업', 0.0001, '2020-04','2020-04-17']]


t_df = pd.DataFrame(data=data, columns=columns)


# filter list
# 맨 마지막 컬럼, 일자가 2020-04-17, 2020-02-10 인 row를 추출하고 싶을 때

추출하기

t_df[t_df['일자'].isin(filter_list)].head()

 

전체 데이터의 상태

  • 한 날짜에 다양한 데이터가 존재합니다.
  • 특정 그룹 후 해당 일자 기준의 max 통화비율을 추출하는 과정입니다.

 

EDA에서 DataFrame을 다루는 능력은 중요하다고 생각합니다.

기능 단위로 익혀두면 나중에 도움이 많이 될 것 같네요!

 

감사합니다!

반응형