[Python] 연습

[Python] 판다스 특정 문자열 포함 판단하기

Simon Yoon 2022. 3. 12. 19:21

이번 포스팅에서는 데이터프레임의 열에 특정 문자열이 포함되었는지를 판단하고, 이 조건에 해당하는 행만 출력하는 방법을 알아보겠습니다. 이러한 경우에 사용할 수 있는 것이 str.contains( )입니다. 아래와 같은 예시 데이터를 통해서 코드를 실행해보겠습니다.

1. 하나의 열에서 특정 문자를 포함한 레코드만 출력하기

# 구매상품에 '투자'가 있는 레코드만 출력
df[df['구매상품'].str.contains('투자')]

구매상품에 '투자'라는 단어가 포함된 서적만 출력되었음을 알 수 있습니다.

 

2. 하나의 열에서 특정 문자를 포함한 레코드의 수를 구하기

# 구매상품에 '투자'가 포함된 레코드 수를 구하는 방법
len(df[df.구매상품.str.contains('투자')])
# 결과: 4

레코드의 수를 구하는 법은 크게 어렵지 않습니다. 1번에서 작성한 코드에 len()함수를 붙여주었습니다.

 

3. 서로 다른 두 개의 열에서 각각 특정 문자열을 포함한 레코드를 출력하기

# 회원등급이 Green이면서, 투자 관련 서적을 구매한 내역을 출력
df[df.회원등급.str.contains('Green') & df.구매상품.str.contains('투자')]

회원등급과 구매상품에 대한 조건이 잘 적용되었음을 확인할 수 있습니다.

 

4. 영어로 된 문자열을 대소문자 구분없이 찾아서 출력하는 법

먼저, str.contains( )는 대소문자를 구분하여 포함 여부를 판단합니다. 따라서 데이터의 정확한 내용을 안다면 직접 대소문자를 구분하여 코드를 작성할 수도 있지만 대소문자에 상관없이 포함 여부를 판단하기 위해서는 str.contains( ~~, case = False) 형식으로 작성해야 합니다.

아래와 같이 코드를 작성하면 회원등급이 VIP인 회원이 있음에도 불구하고 아무것도 출력하지 않습니다.

# 회원등급이 'VIP'인 회원을 출력
df[df['회원등급'].str.contains('vip')]

 

반면에 case = False를 포함하여 작성하면 원하던 결과를 얻을 수 있습니다.

df[df['회원등급'].str.contains('vip', case = False)]

 

'[Python] 연습' 카테고리의 다른 글

[Python] Series  (0) 2022.03.26
[Python] 데이터 정규화  (0) 2022.03.25
[Python] 판다스 문자열 구분자로 나누기  (0) 2022.03.11
[Python] Selenium Data Crawling 준비 (맥 용)  (0) 2022.02.17
[Python] 기초 문법 6  (0) 2022.01.08