네이버 플레이스 리뷰데이터 전처리하기 | 이모티콘, 특수문자, 엔터 제거하기❌

BLO·2022년 10월 26일
0

Intro👀

리뷰데이터를 분석하기에 앞서,
데이터를 깔끔하게 하기 위해서 군더더기를 제거해야겠다고 생각했다.
제거 전 데이터

이것저것 많이 시도해봤지만

  • 띄어쓰기까지 사라짐
  • 일부 이모티콘이 사라지지 않음

위 문제들 때문에 많이 실패했었다.

그래도 구글링 끝에 해결 방법을 찾았다.
결론부터 말하자면 emoji 패키지 사용 > 정규식 사용 순으로 진행하였다.

Emoji 패키지 사용🔧

데이터 불러오기

Pandas 를 임포트 해서 파일을 불러온다.

import pandas as pd
df = pd.read_excel(리뷰데이터 엑셀파일)
df

내가 가져온 데이터는 중간에 NaN 값이 있어서
공백으로 대체하는 코드를 삽입해주었다.

df = df.fillna("")

Emoji 패키지 설치 및 사용

본격적으로 emoji 패키지를 설치해서 전처리를 진행해본다.

pip install emoji
from emoji import core

실행이 느리다는 건 알지만,
나의 파이썬 지식이 아직 짧기 때문에 이중으로 for문을 작성해본다.

for name in df.columns: 
    for i in range(200): 
        text = df[name][i] # 각 매장의 200개의 리뷰를 가져온다.
        s = core.replace_emoji(text, replace="") 
        df[name][i] = s 
df.to_excel("결과파일.xlsx")

정규식 사용하여 특수문자 제거❌

1차적으로 이모티콘은 제거가 되었지만,
아직 특수문자엔터 는 사라지지 않았다.
특수문자, 엔터 포함 데이터

이를 없애기 위해 정규식을 사용해본다.

def extract_word(text): # 특수문자 제거하는 사용자지정함수
    hangul = re.compile('[^가-힣]') 
    result = hangul.sub(' ', text) 
    return result

for name in df.columns:
    for i in range(200):
        text = df[name][i]
        removed_text = extract_word(text)
        df[name][i] = removed_text
df.to_excel('결과파일.xlsx')

위 코드를 돌리면, 특수문자 포함 엔터까지 싹 제거된 것을 볼 수 있다.
제거 완료

마무리

띄어쓰기 = 이모티콘❓

처음에 하려고 했던 코드는

for name in df.columns:
    df[name] = df[name].str.replace(pat=r'[^\w]', repl=r'', regex=True)

이 코드였다.

돌렸을 때 이모티콘이며 특수문자며 엔터며 한 번에 제거되긴 하지만,
문제는 띄어쓰기도 다 사라졌다는 점이다.

아직도 왜인지 잘 이해는 안되지만
내가 모르는 뭔가가 있겠지... 하면서 다른 방법을 모색하여 해내긴 했다.

좀 더 내공이 쌓이면 이런 오류 쯤은 견뎌낼 수 있겠지?
🤦‍♀️

0개의 댓글