저번에 수집했던 전처리한 데이터를 하나의 데이터 프레임으로 만든후 각 데이터를 비교해보이는 EDA를 시행해보겠습니다.
import pandas as pd
df1 = pd.read_csv('baecksansoo.csv')
df2 = pd.read_csv('isis.csv')
df3 = pd.read_csv('mongbest.csv')
df4 = pd.read_csv('samdasoo.csv')
df5 = pd.read_csv('seoksoo.csv')
df6 = pd.read_csv('sparkle.csv')
# unnamed :0 열이 생겨서 제거작업
df1.drop(['Unnamed: 0'], axis = 1, inplace = True)
df2.drop(['Unnamed: 0'], axis = 1, inplace = True)
df3.drop(['Unnamed: 0'], axis = 1, inplace = True)
df4.drop(['Unnamed: 0'], axis = 1, inplace = True)
df5.drop(['Unnamed: 0'], axis = 1, inplace = True)
df6.drop(['Unnamed: 0'], axis = 1, inplace = True)
#데이터 병합 및 새 인덱스 부여
df = pd.concat([df1,df2,df3,df4,df5,df6], ignore_index=True)
print(df)
type category review star
0 백산수 별점 타 상품에 비교해도 물 맛도 좋고 가격면에서도 만족해요 평점5
1 백산수 별점 좋아요 포인트까지해서 저렴학 잘 구매했어요 평점5
2 백산수 별점 가격도 저렴하고 배송도 빨라서 만족스러워요 평점5
3 백산수 별점 아기 배앓이에 좋다고해서 백산수만 먹여요 평점5
4 백산수 별점 생수계의 원탑이라 들었습니다 믈맛 좋아요 평점5
... ... ... ... ...
11854 스파클 별점 주기적으로 매번 잘 시켜 마시고 있어요 좋아요 평점5
11855 스파클 별점 최저가 개이득 다먹으면 또 시킬게요 평점5
11856 스파클 별점 깨끘하고 담백한 스파클언제나 감사해요 평점5
11857 스파클 별점 빠른배송과 저렴해서 꾸준히 구매합니다 평점5
11858 스파클 별점 항상 여유있게 시켜놓고 먹으니 편해요 평점5
[11859 rows x 4 columns]
6개의 브랜드의 후기를 각 2,000개씩 수집했지만 전처리 과정에서 141개의 리뷰가 제거된것을 확인할수있습니다. 그 다음 'star' 열에있는 데이터는 문자+숫자 형태라 문자를 제거 해주고 int로 인식을 할 수 있게 처리해줍니다.
# "평점5" -> "5" 숫자만 추출
df['star'] = df['star'].str.replace("[^0-9]","")
# int로 변환
df['star'] = pd.to_numeric(df['star'])
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 11859 entries, 0 to 11858
Data columns (total 4 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 type 11859 non-null object
1 category 11859 non-null object
2 review 11857 non-null object
3 star 11859 non-null int64
dtypes: int64(1), object(3)
memory usage: 370.7+ KB
'star'열의 부분만 int64 타입으로 바뀐것을 확인할수있습니다. 아직 토크나이저 전이기 때문에 EDA하기에는 한정적인 데이터 형식입니다 . 이번에는 간단히 type 별로 star의 평균값 정도 구할수 있을거같습니다.
df.groupby('type').mean('star')
star
type
몽베스트 4.841000
백산수 4.794486
삼다수 4.718534
석수 4.833082
스파클 4.898449
아이시스 4.822378
스파클이 제일높고, 삼다수가 제일 낮은것을 확인할수 있습니다.
# 글꼴 깨짐 방지 맟 평점 분포 확인
import seaborn as sns
import matplotlib.pyplot as plt
plt.rc("font", family = "Malgun Gothic")
sns.set(font="Malgun Gothic",
rc={"axes.unicode_minus":False}, style='darkgrid')
sns.countplot(df['star'])
df['star'].value_counts().sort_values(ascending=False) / df['star'].count()
5 0.871406
4 0.094274
3 0.023695
1 0.007505
2 0.003120
Name: star, dtype: float64
평점 분포도와 분포비율을 구하였습니다 . 5점이 압도적으로 많은것을 확인할수있습니다
'PYTHON' 카테고리의 다른 글
구매 영수증 데이터 전처리 (평균방문주기) (1) | 2022.09.19 |
---|---|
[NLP②] 네이버 쇼핑 리뷰 전처리 (0) | 2022.06.26 |
[NLP①] 네이버 쇼핑 리뷰 크롤링 (생수) (0) | 2022.06.19 |
[정규식] re 라이브러리 (0) | 2022.04.16 |
[PYTHON 기초] 가변인자 *변수명이란? (0) | 2021.02.27 |