이번에는 저번시간에 수집했던 리뷰데이터를 전처리 해보도록하겠습니다. 일반적인 전처리의 범위는 중복제거, 결측치 제거, 특수문자 제거 등이 있으며 리뷰를 의미있는 최소한의 단위로 쪼개서 품사를 태깅하는 행위를 형태소분석 및 토크나이징이라고 하는데 이건 다음 시간에 하도록 하고 이번에는 중복제거, 특수문자 제거 등의 처리를 해보겠습니다.
참고로 이 데이터는 저번시간에 수집한 네이버 쇼핑 리뷰를 사용하여 이어나가보도록 하겠습니다.
df4=add_dataframe(name_,category_,reviews,stars,cnt)
df4
df4.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 2000 entries, 1 to 2000
Data columns (total 4 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 type 2000 non-null object
1 category 2000 non-null object
2 review 2000 non-null object
3 star 2000 non-null object
dtypes: object(4)
memory usage: 78.1+ KB
df4.isnull().sum()
type 0
category 0
review 0
star 0
dtype: int64
총 2,000개의 리뷰가 수집되었으며 결측치는 없는것을 확인할수있습니다. 또한, 수집한 데이터를 살펴보면 빨간색으로 표시한곳에서 보이다시피 특수문자, 이스케이프 문자등이 있는것을 알 수 있습니다. 이스케이프 문자가 어떤건지 모르시는분은 다음 페이지에 기술해뒀습니다.
# review 한글과 공백을 제외하고 모두 제거
df4['review'] = df4['review'].str.replace("[^ㄱ-ㅎㅏ-ㅣ가-힣a-zA-Z ]","")
df4['review'].replace('', np.nan, inplace=True)
print(df4.isnull().sum())
type 0
category 0
review 0
star 0
dtype: int64
df4.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 2000 entries, 1 to 2000
Data columns (total 4 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 type 2000 non-null object
1 category 2000 non-null object
2 review 2000 non-null object
3 star 2000 non-null object
dtypes: object(4)
memory usage: 78.1+ KB
영어, 한글, 공백을 제외한 모든 문자를 ""값으로 바꾸고 빈칸인 모든값을 nan값으로 바꿔준 다음 결측치값을 확인해봐도 없는것을 알 수 있습니다. 위에 결측치값을 확인했지만 이러한 방식으로 다시 확인하는 이유는 가끔 빈칸을 결측치로 인식하는게 아닌경우가 있기 때문입니다.
# review 중복 제거
df4 = df4.drop_duplicates('review', keep='first').reset_index(drop=True)
df4.info
<bound method DataFrame.info of type category review star
0 몽베스트 별점 타 브랜드 제품에 비해 갈증이 덜한거같아서 재구매했어용 라벨이 없어 분리수거 하기에편해요 평점5
1 몽베스트 별점 저번엔 플라스틱이 너무 얇아서 칼로 바깥비닐 열려고 했는데 물이 나와 깜짝 이번엔 ... 평점5
2 몽베스트 별점 항상 생수는 몽샵에서 구입해요 깜빡하고 늦게 시켜도 배송도 빠르고 좋아요 평점5
3 몽베스트 별점 무라벨이라 환경을 생각하는 점이 매우 좋고 물맛도 좋아요 평점5
4 몽베스트 별점 물맛도 다 다르구나 자취하면서 알게되었네욬ㅋㅋ맛잇어요 평점5
... ... ... ... ...
1995 몽베스트 별점 배송도 빠르고 너무 좋아요택배 기사님께 죄송하지만 많이 시키고 싶을 정도로 좋아요 평점5
1996 몽베스트 별점 처음 시켜봅니다 배송 빠르고 좋네요저렴하게 잘산거 같네요감사합니다 평점5
1997 몽베스트 별점 좋아요 재구매 각 평점5
1998 몽베스트 별점 물을 많이 마시다보니 집에서까지 짜리로 먹기엔쓰레기가 넘 많이 나와 부담이라리터가 ... 평점5
1999 몽베스트 별점 친정집에 사드렸어요 마트에서는 배달불가라 배송기사님 넘 수고 하셨네요 평점5
[2000 rows x 4 columns]>
df4.to_csv('mongbest.csv')
마지막으로 혹시 수집과정에서 중복이 발생할수도 있으니 위와같이 중복제거처리를 해줍니다. 다행히 중복은 없습니다.
최종적으로 데이터를 csv 형태로 저장해줍니다
'PYTHON' 카테고리의 다른 글
구매 영수증 데이터 전처리 (평균방문주기) (1) | 2022.09.19 |
---|---|
[NLP③] 데이터 병합 및 INT화 (0) | 2022.07.04 |
[NLP①] 네이버 쇼핑 리뷰 크롤링 (생수) (0) | 2022.06.19 |
[정규식] re 라이브러리 (0) | 2022.04.16 |
[PYTHON 기초] 가변인자 *변수명이란? (0) | 2021.02.27 |