본문 바로가기
Python/Data Analysis

[텍스트 분석] Python 문법 , 정규표현식으로 텍스트 분석하기 - basic

by skwkiix 2024. 2. 17.
728x90

텍스트 전처리 단계

1. 데이터 정제 (Python 문법, 정규표현식 사용)

2. 한글/영어에 따라 전처리 진행(nltk, konlpy)

  • 토큰화 : 텍스트의 단위를 token으로 나누기
    • 문장토큰화/단어토큰화/단어보다 더 작은 형태로 토큰화
  • 정규화 : 어간 추출, 표제어 추출
    • ex) go, goes > go
  • 품사 태깅 : 명사, 대명사, 형용사 등으로 분석 요구에 따라 태깅

 

👉  이번 포스팅은 파이썬 문법과 정규표현식을 활용하는 데이터 정제 에 관한 내용이다.


1. 데이터 정제 - Python 기본 문법

기본 문법

 

str : 시리즈 데이터 형태.str.다른문법 형태로 사용 (pandas 에서 제공) > 파이썬 문법들과 응용해서 사용한다!

       - ex) df['text'].str.strip()


 

- strip() : 공백제거 (lstrip, rstrip)

- pad(width = , side = '', filchar = '') : 패딩 맞추기

- ljust,rjust(width = ,fillchar = '') : 왼쪽, 오른쪽에 맞춰서 패딩 맞추기

- zfill(width = ) : 0값을 width 길이에 맞춰서 앞에 채우기

- split(' ', n = , expand = ) : 문자열 나누기( 나누는 기준,  expand = True 여러컬럼으로 나누기, expand = False 1개 컬럼에 나누기)

 

영문 대소문자 바꾸기

 

- lower() : 소문자로 변경

- upper() : 대문자로 변경

- capitailize() : 앞문자 대문자로 변경

- title() : 단위별 앞문자 대문자로 변경

- swapcase() :  소문자 > 대문자, 대문자 > 소문자로 변경

 

- replace(pat = '', repl ='', regex = ) : 대체

- find(sub = '') : 해당문자 위치를 인덱스로 반환 (-1 : 없음)

- slice(start = , stop = ) : 특정 인덱스 값을 반환

- slice_replace(start = , stop = , repl = '' ) : 해당 인덱스 값을 다른 값으로 대체

 


데이터 정제 - 정규표현식

정규표현식은 아래 포스팅을 참고한다.

https://datapilots.tistory.com/31

 

텍스트 마이닝 Basic - 1. 정규표현식(전화번호 패턴, 이메일 패턴)

정규표현식 개념 문자열 내에서 패턴을 찾거나 변형하는데 사용되는 문자열 패턴 매칭 도구 정규표현식 기본 문법 문자 및 메타문자: .: 어떤 문자 하나와 일치. *: 바로 앞의 패턴이 0번 이상 반

datapilots.tistory.com


2. 문법 적용 예시

# strip(): 공백 제거
print('양쪽 공백 제거한 결과:')
print(df['text'].str.strip())

# pad(): 패딩 맞추기
print('패딩 맞춘 결과:')
print(df['text'].str.pad(width=30, side='both', fillchar='-'))

# ljust(), rjust(): 왼쪽, 오른쪽에 맞춰서 패딩 맞추기
print('왼쪽으로 패딩 맞추기:')
print(df['text'].str.ljust(width=60, fillchar='*'))

print('오른쪽으로 패딩 맞추기:')
print(df['text'].str.rjust(width=60, fillchar='*'))

# zfill(): 0 값으로 앞에 채우기
print('0 값으로 앞에 채운 결과:')
print(df['text'].str.zfill(width=60))

# split(): 문자열 나누기
print('문자열 나누기:')
print(df['text'].str.split(' ', n=2, expand=True))

# 영문 대소문자 바꾸기
print('소문자로 변경:')
print(df['text'].str.lower())

print('대문자로 변경:')
print(df['text'].str.upper())

print('첫 글자 대문자로 변경:')
print(df['text'].str.capitalize())

print('단어의 첫 글자 대문자로 변경:')
print(df['text'].str.title())

print('대소문자 변경:')
print(df['text'].str.swapcase())

# replace(): 대체
print('대체 결과:')
print(df['text'].str.replace('text', 'string'))

# find(): 문자열 위치 찾기
print('문자열 위치 찾기 결과:')
print(df['text'].str.find('영화'))

# slice(): 문자열 슬라이싱
print('문자열 슬라이싱 결과:')
print(df['text'].str.slice(start=5, stop=10))

# slice_replace(): 슬라이스한 부분 대체
print('슬라이스한 부분 대체 결과:')
print(df['text'].str.slice_replace(start=5, stop=10, repl='replaced'))