데이터 부트캠프 - Project

[SQL 분석 프로젝트] 이커머스 이벤트 히스토리 분석

onion95 2024. 12. 10. 17:04

PROJECT GOAL : SQL만 이용하여 데이터에서 인사이트 도출하기

 

 

[프로젝트 개요]

 

  • 프로젝트 명 : [SQL 분석 프로젝트] 이커머스 이벤트 히스토리 분석
  • 기간 : 2024년 12월 2일 ~ 2024년 12월 6일
  • 인원 : 팀 (4명)
  • 역할 : 질문 및 가설 아이디어 디벨롭, 분석 쿼리 작성, 최종 PPT 제작 및 발표
  • 작업 도구 : SQL

 

 

 

[데이터 개요]

 

출처 : https://www.kaggle.com/datasets/mkechinov/ecommerce-events-history-in-cosmetics-shop

 

eCommerce Events History in Cosmetics Shop

This dataset contains 20M users' events from eCommerce website

www.kaggle.com

 

  • 온라인 스토어의 5개월(2019년 10월~2020년 2월) 동안의 행동 데이터 포함
  • 파일의 각 행은 이벤트를 나타냄
  • 각 이벤트는 제품과 사용자 간의 다대다 관계와 같음(같은 (사용자,제품) 조합에서 여러 이벤트 발생 가능)
Columns   설명
evnet_time 이벤트 시간 이벤트가 발생한 시간(UTC)
event_type 이벤트 유형
(고객 행동 유형)
view : 사용자가 제품을 봄
cart : 사용자가 장바구니에 제품을 추가함
remove_from_cart : 사용자가 장바구니에서 제품을 제거함
purchase : 사용자가 제품을 구매함
product_id 제품 아이디  
category_id 카테고리 아이디  
category_code 카테고리 코드 주요 카테고리에 대해 제공, 다양한 액세서리 유형은 생략
brand 제품 브랜드  
price 제품 가격  
user_id 사용자 아이디  
user_session 사용자 세션 사용자의 온라인 스토어 접속 단위

 

※ 데이터의 용량이 너무 커서(한 파일당 백만 행이 넘어감) 샘플링 된 데이터로 분석

    → 2020년 2월 이벤트가 가장 많이 발생한 유저 상위 1% (3,000명)의 5개월 간의 로그 데이터 추출

 

 

 

[분석 목적 및 방법]

 

1. 분석 목적

  • 1차 분석 : 시간대별 고객 행동 특징 및 특이 패턴 파악
  • 2차 분석 : 서비스 성장하고 있는가?에 답하기

 

2. 분석 방법

  • 데이터 EDA 및 전처리 : 데이터의 기본 개요와 컬럼별 통계 등을 확인하여 이상치, NULL값 처리 등 고민
  • 질문 및 가설 확인을 위한 SQL 쿼리 작성

 

 

 

[분석 과정 및 결과]

 

1. EDA 및 전처리

기본적인 EDA

  • 카테고리 코드와 브랜드명에서 빈 값이 너무 많아 브랜드별, 품목별 자세한 분석은 어려울 것으로 보임
  • 가격에서 음수가 있긴 하나 1건이고, purchase에서 발생한 것으로, 환불건이라고 생각됨
  • purchase를 제외한 행동에서 가격이 0인 경우가 있는데, 이것은 무엇으로 해석할 것인가? 

 

2. 시간대별 특징 파악

시간대별 고객 행동 발생 건수 쿼리
시간대별 고객 행동 발생 건수 결과

  • 시간대별 총 이벤트 발생 건수 비교 결과, 저녁 시간에 고객 행동이 가장 몰려있음

시간대별 고객 행동 유형별 발생 건수 쿼리
시간대별 고객 행동 유형별 발생 건수 결과 1
시간대별 고객 행동 유형별 발생 건수 결과 2

  • 시간대별 많이 발생하는 이벤트 순서로 정렬, 대부분 view - remove_from_cart - cart - purchase 순으로 이벤트 발생 (purchase를 제외하면 발생 건수도 뭐 그렇게 차이가...?)
  • 새벽 시간에 remove_from_cart가 1위로 올라왔지만, 이 또한 발생 건수만 놓고 비교해보면 크게 의미있는 특이점은 아니라고 판단
특이 패턴이 없어서 흥미 파사삭

그런데!!! 
여기서 세션(한 고객이 사이트를 접속하는 단위) 당 발생한 모든 이벤트 수를 비교하는 방법이 적합할지, 세션당 발생한 이벤트를 한건으로 치고 비교하는 방법이 적합할지 고민이 필요하단 것을 알았음

세션... 숨어있던 빌런같은 새...ㄲ.....

이 때 부터 모든 생각이 꼬이고 머리가 아파지기 시작... 그래서 세션 중복을 제거해야하나..? 아니면 유저 중복을 제거한 건수를 봐야해...? 어리둥절

 

 

3. 서비스 성장 척도 파악

고민하던 우리 팀원의 질문에, 매니저님이 그래서 이걸 왜 알고싶은거죠? 라고 하셨다.

오.... 그러게요?  질문 및 가설 설정부터 명확하지 않았던 우리의 분석은 시작부터 잘못되었음
그래서, 비즈니스 시각에서 무엇이 궁금할까 고민, '그래서, 이 서비스는 성장하는 서비스인가?' 로 노선 변경

월별 이용자 수 비교
월별 매출 비교

  • 월별 이용자 수 변화와 월별 매출 변화를 확인한 결과, 지속적인 증가 경향 확인(2월 매출은 특히 폭발적 증가)

판매 물품의 가격 분포

  • 가격대별 분포를 살펴보니 해당 온라인 사이트는 10 이하 가격의 물품이 매출의 주를 차지함

제품 카테고리별 매출 비교

  • 물품별 매출 확인 결과, 알수 없는 카테고리(아마도 기타 잡화 예상)의 매출 증가액이 상당히 크고, vaccum, bath, cabinet에서 1월 대비 n배 이상의 증가율을 보임

 

4. 결론

  • 종합적으로 이용자 수와 매출액 모두 2020년 2월에 상당히 큰 폭을 증가한 것을 보아, 성장의 전환점으로 예상할 수 있음 (물론 더 정확한 판단을 위해서는 앞뒤 추가적인 달의 데이터 필요)
  • 사이트 내 프로모션 적용 여부, 판매 물건의 자세한 카테고리 등을 알아야 구체적인 성장 이유를 예상해볼 수 있음

 

 

 

[배운 점]

 

데이터 분석을 위한 질문 방향 설정은 매우 중요함

 

  • 우리는 질문 또는 가설의 정확한 목표가 없었고, 그저 특징이 있을거 같은데? 재밌을거같은데?의 시각에서 출발
  • 결국은 온라인 스토어 데이터이므로, 성장율 체크, 매출 증대, 마케팅 계획 등과 같은 비즈니스 목적이 있어야 함
  • 비즈니스 관점에서, 내가 오너나 담당자라면 어떤 것이 궁금할지 고민해야 분석의 방향을 계획할 수 있음

 

즉석에서 원하는 질문을 던지고 그에 맞는 쿼리 구조를 생각해내는 연습을 함

 

  • 분석에서 루틴화 하여 사용할 수 있는 구조가 보이는 듯 함 (앞으로 그런 쿼리를 따로 정리해보면 좋겠다!)

 

 

 

[향후 보완점]

 

  • 단순 이용자 수 변화나 매출 변화가 아닌, 성장 여부와 그 정도를 평가 할 수 있는 새로운 지표를 정의해서 추가 분석을 해보면 좋을 것 같음
  • 세션을 고려한 다양한 분석을 시도해보면 좋을 것 같음