본문 바로가기

데이터분석/pandas

pandas map 함수와 정규표현식을 이용한 텍스트 전처리

 

 

 pandas 의 map 함수를 이용하여 텍스트 전처리를 해보겠습니다. 

보통 텍스트 데이터를 가져와서 정제할 때, 정규표현식을 이용해서 정제를 하는데요. 

도메인 방향에 맞춰서 정제를 해야겠지만, 이번에는 자음,모음,html 태그, 특수기호를 제거해보겠습니다. 

 

 

그럼 데이터를 가져와서 바로 해보겠습니다. 

예전에 크롤링한 제품 리뷰 데이터를 그대로 쓰겠습니다. 

중간에 dropna 하고 해서 12584 개의 리뷰가 있습니다. 

 

 

 

 

 

 

10개 정도만 보겠습니다. 

 

 

 

 

 

ㅠㅠ 라든지 !! ~~ 같은 특수기호들이 눈에 보입니다. 

 

map 함수에 적용할 클리어링 함수는 아래와 같습니다. 

 

 

 

# cleasing 함수 

def cleasing(text):
    repl =''
    pattern = '([ㄱ-ㅎㅏ-ㅣ]+)' # 자음, 모음 제거
    text = re.sub(pattern= pattern, repl=repl, string=text)
    #pattern = '[^\w\s]' # 특수기호 제거
    pattern = '[^가-히\s]' # 특수기호 제거
    text = re.sub(pattern= pattern, repl=repl, string=text)
    pattern = '<[^>]*>' # html 제거
    text = re.sub(pattern = pattern, repl='',string=text)
    return text

 

 

기존 데이터프레임을 deepcopy 로 복사본을 만들겠습니다.

 

 

 

 

자, 이제 데이터프레임에서 내가 정제하려는 칼럼을 선택해서 .map 메서드를 사용합니다. 

(복사본 이름을 너무 길게 했네요 ㅠㅠ)

 

 

 

data_review_preprocessing01['review'] = data_review_preprocessing01['review'].map(lambda x: cleasing(x))

 

 

결과를 보겠습니다!

잘 정제 됐네요!

 

 

 

 

 

판다스의 시리즈 타입에는 map  함수가 있으니 이를 이용해서 편하게 전처리 하세요!

(for문보다 훨 빠르니 익숙하지 않은 분들은 map 함수에 익숙해지시길...)

 

이상 간단한 pandas tip 이었습니다!