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의 문자열 처리 기능을 활용하여 데이터를 효과적으로 가공해 보세요!
'Python > Pandas' 카테고리의 다른 글
Pandas 데이터 타입 변환 (astype()) - Pandas 데이터 변환과 가공 (0) | 2025.10.08 |
---|---|
Pandas 날짜 데이터 처리 (to_datetime(), dt 속성 활용) (0) | 2025.10.07 |
Pandas 컬럼 추가, 삭제 및 데이터 수정하기 (0) | 2025.10.05 |
Pandas 데이터 정렬 및 필터링 (sort_values(), query()) (0) | 2025.10.04 |
Pandas 중복 데이터 제거 (drop_duplicates()) (0) | 2025.10.03 |