Python 데이터 분석 공부

물음표_해당 칼럼에서 내가 원하는 문자열 찾아내기 str.contains()

데이터 분석가 초이 2022. 7. 1. 23:45

python DataFrame을 다룰 때 특정 칼럼에서 원하는 문자열을 뽑아야 할 때가 있습니다.

 

'상호명' column

 

'상호명'이라는 칼럼에는 원래 '스타벅스', '투썸', '이디야' 등 많은 커피 상호명이 담겨 있는데,

위 사진은 '할리스'를 포함한 문자열만을 뽑아낸 결과입니다.

 

이 과정에서 pandas.Series 문자열 메소드인 str.contains()를 사용했어요.

 

str.contains()을 활용하면 왜 좋을까요?

위 사진을 보면 '할리스' 상호명은 하나의 값으로 통일되어 있지 않고 '할리스커피', '할리스사상점' 등 다양하게 기록되어 있습니다.

그렇기 때문에 str.contains('할리스')를 통해서 '할리스'를 포함하고 있는 모든 할리스 상호명을 뽑아낼 수 있게 되는 거죠.

 

str.contains() 사용법 

# str.contains() 메소드 사용법

df['상호명'].str.contains('할리스')

df는 DataFrame을 의미하고, df[] 속에는 원하는 칼럼명을 넣으시면 돼요.

그리고, 마지막으로 str.contains() 안에는 찾고 싶은 문자열을 넣어주시면 됩니다.

 

주의사항! df['상호명'].str.contains('할리스') 까지만 입력했다면, 결과값은 True / False로 나오게 됩니다.

 

위 사진과 같이 뽑아내려면, 아래와 같이 필터링 과정이 꼭 필요합니다!

# 필터링 적용

df[df['상호명'].str.contains('할리스')]

 

NaN이 존재한다면?

 

해당 칼럼에 NaN 값이 있다면 True / False가 아닌 NaN을 반환하게 되는데

NaN값이 있는 상태로 필터링을 진행하면 에러가 발생합니다.

 

그렇기 때문에 NaN 결과를 아래와 같이 na를 통해서 바꿔주는 설정이 필요합니다.

# NaN 결과 바꿔주기

# NaN을 True로 바꾸기
df[df['상호명'].str.contains('할리스', na = True)]

# NaN을 False로 바꾸기
df[df['상호명'].str.contains('할리스', na = False)]