텍스트 전처리 단계
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'))
'Python > Data Analysis' 카테고리의 다른 글
[텍스트 분석] konlpy 한글 형태소 분석 (0) | 2024.02.22 |
---|---|
[텍스트 분석] nltk 영어 형태소 분석 - 토큰화/정규화/품사 태깅 (0) | 2024.02.21 |
코사인 유사도(CountVectorizer , TF-IDF 벡터화) (0) | 2024.02.12 |
Python 대용량 데이터 처리 라이브러리 - Dask (0) | 2024.02.04 |
Python 대용량 데이터 처리 파라미터 - Pandas (1) | 2024.02.01 |