Python/Pandas

Pandas에서 문자열 데이터 다루기: str.contains(), str.replace()

임베디드 친구 2025. 10. 6. 21:11
반응형

Pandas에서 문자열 데이터 다루기: str.contains(), str.replace()

Pandas는 데이터 분석과 가공을 위한 강력한 라이브러리로, 특히 문자열 데이터를 효율적으로 다룰 수 있는 다양한 기능을 제공합니다. 본 포스팅에서는 str.contains()str.replace()를 활용하여 문자열 데이터를 필터링하고 변환하는 방법을 살펴보겠습니다.

1. str.contains()를 활용한 문자열 필터링

str.contains() 메서드는 특정 문자열이나 패턴이 포함된 데이터를 필터링하는 데 유용합니다. 이는 정규 표현식(Regular Expression)과 함께 사용할 수도 있어 강력한 검색 기능을 제공합니다.

사용법

Series.str.contains(pat, case=True, na=np.nan, regex=True)
  • pat: 찾고자 하는 문자열 또는 정규 표현식
  • case: 대소문자 구분 여부 (기본값: True)
  • na: 결측값 처리 방식 (기본값: np.nan)
  • regex: 정규 표현식 사용 여부 (기본값: True)

예제: 특정 단어 포함 여부 확인

import pandas as pd

# 데이터 생성
data = {'상품명': ['사과즙', '배즙', '포도즙', '사과주스', '오렌지주스']}
df = pd.DataFrame(data)

# '사과'가 포함된 행 필터링
df_filtered = df[df['상품명'].str.contains('사과')]
print(df_filtered)

출력 결과

     상품명
0    사과즙
3  사과주스

위 코드에서는 '사과'라는 단어가 포함된 행만 필터링되었습니다.

예제: 대소문자 구분 없이 검색

df_filtered = df[df['상품명'].str.contains('사과', case=False)]

case=False 옵션을 주면 대소문자 구분 없이 검색할 수 있습니다.

예제: 정규 표현식 활용

정규 표현식을 활용하면 더욱 강력한 필터링이 가능합니다.

# '즙' 또는 '주스'가 포함된 행 찾기
df_filtered = df[df['상품명'].str.contains('즙|주스', regex=True)]
print(df_filtered)

출력 결과

     상품명
0    사과즙
1     배즙
2    포도즙
3  사과주스
4  오렌지주스

'즙' 또는 '주스'라는 단어가 포함된 모든 행이 필터링되었습니다.


2. str.replace()를 활용한 문자열 변환

str.replace() 메서드는 특정 문자열을 다른 문자열로 치환하는 기능을 제공합니다. 이를 활용하여 데이터 정제 및 변환을 수행할 수 있습니다.

사용법

Series.str.replace(pat, repl, case=True, regex=False)
  • pat: 변경할 문자열 또는 정규 표현식
  • repl: 대체할 문자열
  • case: 대소문자 구분 여부 (기본값: True)
  • regex: 정규 표현식 사용 여부 (기본값: False)

예제: 문자열 단순 치환

# '즙'을 '음료'로 변경
df['상품명'] = df['상품명'].str.replace('즙', '음료')
print(df)

출력 결과

       상품명
0    사과음료
1     배음료
2    포도음료
3  사과주스
4  오렌지주스

예제: 정규 표현식을 활용한 치환

# '즙'이나 '주스'를 모두 '음료'로 변경
df['상품명'] = df['상품명'].str.replace('즙|주스', '음료', regex=True)
print(df)

출력 결과

       상품명
0    사과음료
1     배음료
2    포도음료
3    사과음료
4    오렌지음료

정규 표현식을 활용하여 '즙' 또는 '주스'라는 단어를 한꺼번에 '음료'로 변경할 수 있습니다.

예제: 숫자 제거

문자열에서 숫자를 제거하고 싶다면 정규 표현식을 활용할 수 있습니다.

# 샘플 데이터 생성
data = {'상품코드': ['A100', 'B200', 'C300']}
df = pd.DataFrame(data)

# 숫자 제거
df['상품코드'] = df['상품코드'].str.replace(r'\d+', '', regex=True)
print(df)

출력 결과

  상품코드
0     A
1     B
2     C

숫자를 제거하고 알파벳만 남길 수 있습니다.


3. str.contains()str.replace()를 함께 활용하기

두 메서드를 조합하면 더욱 강력한 문자열 처리 기능을 구현할 수 있습니다.

예제: 특정 단어가 포함된 행의 문자열 치환

# '사과'가 포함된 상품명을 '사과음료'로 변경
df.loc[df['상품명'].str.contains('사과'), '상품명'] = '사과음료'
print(df)

출력 결과

       상품명
0    사과음료
1     배즙
2    포도즙
3    사과음료
4  오렌지주스

결론

Pandas의 str.contains()str.replace() 메서드는 문자열 데이터를 효율적으로 검색하고 변환하는 데 매우 유용합니다.

  • str.contains()는 특정 단어가 포함된 데이터를 필터링하는 데 활용됩니다.
  • str.replace()는 특정 문자열을 원하는 값으로 치환하는 데 유용합니다.
  • 정규 표현식을 함께 사용하면 더욱 강력한 데이터 처리가 가능합니다.

이제 여러분도 Pandas의 문자열 처리 기능을 활용하여 데이터를 효과적으로 가공해 보세요!

반응형