리뷰데이터를 분석하기에 앞서,
데이터를 깔끔하게 하기 위해서 군더더기를 제거해야겠다고 생각했다.
이것저것 많이 시도해봤지만
위 문제들 때문에 많이 실패했었다.
그래도 구글링 끝에 해결 방법을 찾았다.
결론부터 말하자면 emoji 패키지 사용 > 정규식 사용
순으로 진행하였다.
Pandas
를 임포트 해서 파일을 불러온다.
import pandas as pd
df = pd.read_excel(리뷰데이터 엑셀파일)
df
내가 가져온 데이터는 중간에 NaN
값이 있어서
공백으로 대체하는 코드를 삽입해주었다.
df = df.fillna("")
본격적으로 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)
이 코드였다.
돌렸을 때 이모티콘이며 특수문자며 엔터며 한 번에 제거되긴 하지만,
문제는 띄어쓰기도 다 사라졌다는 점이다.
아직도 왜인지 잘 이해는 안되지만
내가 모르는 뭔가가 있겠지...
하면서 다른 방법을 모색하여 해내긴 했다.
좀 더 내공이 쌓이면 이런 오류 쯤은 견뎌낼 수 있겠지?
🤦♀️