본문 바로가기
Data Science/SQL

[SQL로 맛보는 데이터 전처리 분석] 상품 리뷰데이터를 이용한 리포트 작성(실습) - 1

by 루크 Luke 2022. 7. 22.
반응형

데이터셋

- 캐글에 공개되어 있는 여성 의류 이커머스 관련 리뷰 데이터를 활용함

- https://www.kaggle.com/datasets/nicapotato/womens-ecommerce-clothing-reviews

 

Women's E-Commerce Clothing Reviews

23,000 Customer Reviews and Ratings

www.kaggle.com

- 데이터 모양 확인하기

SELECT *
FROM mydata.reviews

[DB] mydata > [Table] reviews

 

1) Division별 평점 분포 계산

- Division별로 평균 Rating을 계산함

SELECT `Division Name`,
	AVG(Rating) AS AVG_Rating
FROM mydata.reviews
GROUP BY `Division Name`
ORDER BY AVG_Rating DESC

Division이 없는 경우도 있음

 

- Department별 평균 Rating도 구할 수 있음

SELECT `Department Name`,
	AVG(Rating) AS AVG_Rating
FROM mydata.reviews
GROUP BY `Department Name`
ORDER BY AVG_Rating DESC

Department도 비어있는 경우가 있음

 

2) 분포 확인

- 연령대별 리뷰 분포를 알고자 한다.

- 일단 연령대를 구해야 함

- 2가지 방법이 있음 : (1) Case When, (2) Floor

 

- (1) CASE WHEN

SELECT *,
	CASE WHEN Age BETWEEN 10 AND 19 THEN '10s'
		WHEN Age BETWEEN 20 AND 29 THEN '20s'
		WHEN Age BETWEEN 30 AND 39 THEN '30s'
		WHEN Age BETWEEN 40 AND 49 THEN '40s'
		WHEN Age BETWEEN 50 AND 59 THEN '50s'
		WHEN Age BETWEEN 60 AND 69 THEN '60s'
		WHEN Age BETWEEN 70 AND 79 THEN '70s'
		WHEN Age BETWEEN 80 AND 89 THEN '80s'
		WHEN Age BETWEEN 90 AND 99 THEN '90s' END AS Age_band
FROM mydata.reviews

맨 우측 컬럼에 Age_band가 생긴 것을 확인할 수 있다.

 

- (2) FLOOR

SELECT *,
	CONCAT(FLOOR(Age/10)*10, 's') Age_band
FROM mydata.reviews

CASE WHEN과 동일하게 생겼음을 알 수 있다.

 

- FLOOR가 개인적으로는 더 간단한 것 같다.

- 이렇게 만든 Age_band를 활용해서, Department = Trend인 경우의 연령 분포를 구할 수 있다.

SELECT CONCAT(FLOOR(Age/10)*10, 's') Age_band,
	COUNT(*) CNT
FROM mydata.reviews
WHERE `Department Name` = 'Trend'
GROUP BY Age_band
ORDER BY Age_band

나이를 기준으로 오름차순 정리했다.


- 해당 연령의 리뷰를 추가로 확인하는 부분을 대시보드에 보여주면 좋을 것 같다.

- 50대의 3점 이하의 리뷰를 남긴 사람들의 리뷰를 확인할 수 있다.

SELECT *
FROM mydata.reviews
WHERE FLOOR(Age/10)*10 = 50
	AND `Department Name` = 'Trend'
	AND Rating <= 3

 

반응형

댓글