[26일차].str.contains()와 인덱싱을 이용한 문자 탐색

김준석·2024년 1월 1일
post-thumbnail

이전 글에서 Series를 잘 다뤄야 우리가 원하는 데이터를 쉽게 쉽게 찾아낼 수 있다고 얘기한적 있다.

이번 글에서는 Series를 어떤식으로 다루는지 맛보기 형태로 알아보겠다.

문자 탐색 - .str.contains('문자')

문자를 탐색할때 사용하는 contains 메소드에 대해 알아보자.

1. .str 메소드

contains 메소드는 문자열을 이용하는 메소드이기 때문에 이름열을 문자열 형태로 바꿔보자.

df["이름"].str

이렇게 만들면 “이름”열에서 문자열 메소드를 실행할 수 있게 된다.

2. .str.contains

contains는 데이터가 특정 문자열에 포함이 되는지 확인해주는 메소드 이다.

이름열에 “정” 이들어가는 데이터를 boolean 형식으로 추출 해준다.

df["이름"].str.contains("정")

그럼 Series 형태로 반환됨.

3,4,22,23 번이 True 이므로 이름에 “정”이 들어간다는 것을 확인할 수 있다.

sum() 메소드를 활용해서 특정 데이터 갯수를 파악할 수 있다.

.str.contains 의 반환값은 boolean 형식임으로 True = 1, False = 0 이다.

즉 sum 함수를 활용하면 갯수를 파악할 수 있다.

이름에 “정”이 들어가는 사람의 갯수

sum(df["이름"].str.contains("정"))

4개로 확인.

체인형으로 sum()메소드

사용 가능

체인형이란?

함수를 .으로 연결하는 모습을 체인형이라 부름.

Pandas는 체인형이기 때문에 아래와 같은 형식으로도 적용 됨.

df["이름"].str.contains("정").sum()

특정 데이터를 추출할때에

기존 df[] 의 형태는 데이터프레임을 추출할때 사용한다고 했다.

그렇다면, 대괄호 안에 .str.contains 메소드를 넣으면 그 값을 추출할 수 있게된다.

이름에 “정”이 들어가는 사람들 추출.

df[df["이름"].str.contains("정")]


특정 위치를 추출할때에

위에서는 이름에 “정”이 들어가는 인원을 추출했다면

이번에는 정씨인 인원을 추출해 보자.

  1. 정씨 인가? T/F로 이루어진 시리즈 생성

    # 정씨 인가? T/F로 이루어진 시리즈 생성
    df["이름"].str[0] == "정"

    str[0] = 문자열 인덱스 0번이 "정"이냐

3,4번이 정씨임을 확인.

  1. 정씨에 해당하는 데이터프레임 생성
# 정씨에 해당하는 데이터프레임 생성
df[df["이름"].str[0] == "정"]


문자열 함수를 사용할 때에

위에서 문자열 함수 contanins를 사용해보았다.

이처럼 문자열 함수를 사용할 때에는 .str을 먼저 사용해 주어야 되는데, contanins 이외에도

.str.lower() .str.upper() .str.startwith() .str.endwith() 처럼 문자열 메소드를 활용할 수 있다.

  • .str.lower() - 소문자로 변경
  • .str.upper() - 대문자로 변경
  • .str.startswith() - 첫글자가 무엇인지
  • .str.endswith() - 마지막 글자가 무엇인지

str.startswith을 사용한 "정"씨 데이터 추출

df[df["이름"].str.startswith("정")]

0개의 댓글