프로젝트1 | eCommerce Events History in Cosmetics Shop (kaggle) 데이터 EDA

2024. 12. 5. 00:02·SQL
1. 프로젝트 기간 : 2024/12/2~2024/12/6 ( 5일간)
2. 선정 데이터 : eCommerce Events History in Cosmetics Shop (kaggle) 
3. 팀원 : 총 5명
4. 담당 업무 : 데이터 전처리, SQL 조회(RFM 고객 세분화 위주), 시각화, 인사이트 도출 및 액션 플랜 제안등

 

 

프로젝트1 | DBeaver에서 대용량 데이터 셋(csv) IMPORT 하기 / 오류 상황 해결법

이번 EDA 프로젝트에서 우리팀이 선정한 데이터 셋은 kaggle의 'eCommerce Events History in Cosmetics Shop' 데이터이다. 테이블 및 컬럼은 간단하게 구성되어있지만, 유저의 이벤트 데이터셋이므로 용량이

cookievlog.tistory.com

 

디비버에 데이터셋을 삽입하고 본격적으로 프로젝트를 진행했다.(대용량 데이터 셋 IMPORT 관련 : 위 링크 참고)

프로젝트 시작에 앞서, 테이블 EDA를 진행했다. 

📂 EDA 1. 테이블 user_id 와 user_session의 관계 파악 

  • 용량 문제로 feb_2월 기준으로 EDA를 진행했다. 
  • PK(고유키) 컬럼 관계성 파악 `왜?` 해당 데이터는 유저의 행동 로그 데이터이기 때문에 유저id와 세션 id의 관계성 파악이 필요
  • 결론 : user_id 와 user_session 은 n:m 관계이다. 즉, 유저당 여러개의 세션이 있고, 세션당 여러개의 유저가 있을 수 있다. ( = 세션이 중복 됨.)
  • 적용점 : 유저 event 관련 지표 활용시, 두 컬럼을 합쳐 복합키 생성 후 진행해야 누락 & 중복이 없음.
-- 1. user_id 와 user_session 의 관계 1:n
SELECT  user_id 
	   ,COUNT(DISTINCT user_session)
FROM feb_2020 f 
GROUP BY user_id 
ORDER BY 2 DESC;

-- 2. user_id 와 user_session 의 관계 m:1
SELECT  user_session 
	   ,COUNT(DISTINCT user_id)
FROM feb_2020 f 
GROUP BY user_session 
ORDER BY 2 DESC;

📂컬럼 별  NULL 값 OR 공백 값 확인

  • `왜?` 컬럼별 NULL 값 혹은 공백 값 확인 하여 집계 및 연산시 어떻게 처리할 것인지 결정 필요
  • 결론 : 전체 NULL 값은 없음. CATEGORY_CODE, CATEGORY_ID,BRAND 컬럼엔 공백(' ') 존재.
  • 적용점 : 빈 값 처리시 NULL 말고, 공백 행으로 구분하여 처리 해주어야 함
-- 1. NULL 값 확인 : 모든 행 수 동일(=NULL 없음)
SELECT COUNT(*)
	  ,COUNT(user_id)
	  ,COUNT(user_session)
	  ,COUNT(event_time)
	  ,COUNT(event_type)
	  ,COUNT(product_id)
	  ,COUNT(category_id)
	  ,COUNT(category_code)
	  ,COUNT(brand)
FROM feb_2020 f ;

-- 2. null 값 x, 공백값 존재
SELECT *
FROM feb_2020 f 
WHERE category_id = ' ' 
  OR category_id IS NULL
  OR brand = ' '
  OR brand IS NULL;

📂가격 (PRICE) 값 확인 (환불등 마이너스 지표 파악)

  • `왜?` 가격 컬럼 집계 및 연산시 마이너스 값을 고려하여 진행 해야함.  
  • 결론 : 1월에 마이너스 데이터 있음 / 환불 금액: -3,674.64, 환불 건수 :109
  • 적용점 : 가격 집계 시 마이너스값 제외 해야함. 마이너스 데이터의 의미 분석 필요
WITH total AS ( -- 월별 전체 데이터 연결
	SELECT * FROM feb_2020 f WHERE PRICE<=0 AND event_type ='purchase'
	UNION
	SELECT * FROM dec_2019 d WHERE PRICE<=0 AND event_type ='purchase'
	UNION
	SELECT * FROM nov_2019 n WHERE PRICE<=0 AND event_type ='purchase'
	UNION
	SELECT * FROM oct_2019 o WHERE PRICE<=0 AND event_type ='purchase'
	UNION
	SELECT * FROM jan_2020 j WHERE PRICE<=0 AND event_type ='purchase'
)
SELECT COUNT(DISTINCT user_id) AS re_cnts -- 환불 건수 토탈(고객수)
    ,SUM(price) AS re_amount  -- 환불 금액 토탈
FROM total;

 

EDA의 중요성은 실습 및 문제풀이에서 체감 했지만, 이번 실습 과정에서 또 한번 EDA의 중요성을 느꼈다. 디테일한 EDA는 정확한 전처리를 가능하게 하고, 잘못 결론낼 수 있는 오류를 줄여주는 것 같다. 내일은 문제 정의와 목표 분석내용들을 담아보겠다. 

'SQL' 카테고리의 다른 글

SQL 실습 | 결제 이상치 (STD 통계 함수) / 월별 증감률 계산 (재귀적 CTE)  (0) 2024.12.06
코테 준비 | 프로그래머스 취소되지 않은 진료 예약 조회/자동차 대여 기록에서 대여중/ 대여 가능 여부 구분하기  (3) 2024.12.06
SQL 실습 | Kaggle 데이터 샘플로 분석하기 1 (Brazilian E-Commerce Public Dataset by Olist)  (0) 2024.12.03
프로젝트1 | DBeaver에서 대용량 데이터 셋(csv) IMPORT 하기 / 오류 상황 해결법  (0) 2024.12.03
코테 준비 | 해커 랭크 BINARY TREE NODES  (0) 2024.11.29
'SQL' 카테고리의 다른 글
  • SQL 실습 | 결제 이상치 (STD 통계 함수) / 월별 증감률 계산 (재귀적 CTE)
  • 코테 준비 | 프로그래머스 취소되지 않은 진료 예약 조회/자동차 대여 기록에서 대여중/ 대여 가능 여부 구분하기
  • SQL 실습 | Kaggle 데이터 샘플로 분석하기 1 (Brazilian E-Commerce Public Dataset by Olist)
  • 프로젝트1 | DBeaver에서 대용량 데이터 셋(csv) IMPORT 하기 / 오류 상황 해결법
성장하는 쿠키의 로그 기록
성장하는 쿠키의 로그 기록
성장하는 쿠키의 모든 로그를 담습니다.
  • 성장하는 쿠키의 로그 기록
    쿠키 로그
    성장하는 쿠키의 로그 기록
  • 전체
    오늘
    어제
    • 분류 전체보기 (143)
      • TODAY I LEARNED (2)
      • 데이터 분석 (13)
      • SQL (49)
      • PYTHON (39)
      • 통계,검정,머신러닝 (22)
      • TABLEAU (5)
      • 내배캠 | 데이터분석 부트캠프 (12)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    파이썬
    머신러닝
    티스토리챌린지
    sql코딩테스트
    오블완
    pandas
    데이터분석프로젝트
    데이터분석
    태블로
    Wil
    SQL
    프로그래머스
    코테준비
    데이터리안
    내배캠
    데이터분석가
    MySQL
    해커랭크
    Python
    코딩테스트준비
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
성장하는 쿠키의 로그 기록
프로젝트1 | eCommerce Events History in Cosmetics Shop (kaggle) 데이터 EDA
상단으로

티스토리툴바