[이전 글] MYSQL을 사용하여 데이터를 살펴보기
[Kaggle/MySQL] 식품 배송 데이터분석1️⃣ Instacart Market Basket Analysis
Instacart Market Basket Analysis | Kaggle www.kaggle.com 데이터 생성 이번에는 Instacart라는 e-commerce 회사의 데이터를 분석해 보는 시간을 가져보자. 먼저 해당 데이터 세트는 kaggle(Machine Learning Competition)에 존
supercomputer.tistory.com
이전까지 매출과 관련된 지표들을 주로 살펴보았다면, 이제는 구매자에 집중해 데이터를 살펴보자.
먼저 10분위 분석을 통해 서비스의 주문 수가 VIP 고객에게 얼마나 집중되어 있는지 살펴보자.
구매자 분석(10분위 분석)
- 10분위 분석이란?
전체를 10분위로 나누어 각 분위 수에 해당하는 집단의 성질을 나타내는 방법.
10분위 분석을 진행하려면 먼저 각 구매자의 분위 수를 구해야 한다. 우리는 고객들의 주문 건수를 기준으로 분위 수를 나눈다.
고객별 주문 건수에 따라 순위
SELECt *,
ROW_NUMBER() OVER(ORDER BY F DESC) RNK
FROM
(SELECT USER_ID,
COUNT(DISTINCT ORDER_ID) F
FROM INSTACART.ORDERS
GROUP
BY 1) A
각 등수에 다른 분위 수로 설정
SELECT *,
CASE WHEN RNK BETWEEN 1 AND 316 THEN 'Quantile_1'
WHEN RNK BETWEEN 317 AND 632 THEN 'Quantile_2'
WHEN RNK BETWEEN 633 AND 948 THEN 'Quantile_3'
WHEN RNK BETWEEN 949 AND 1264 THEN 'Quantile_4'
WHEN RNK BETWEEN 1265 AND 1580 THEN 'Quantile_5'
WHEN RNK BETWEEN 1581 AND 1895 THEN 'Quantile_6'
WHEN RNK BETWEEN 1896 AND 2211 THEN 'Quantile_7'
WHEN RNK BETWEEN 2212 AND 2527 THEN 'Quantile_8'
WHEN RNK BETWEEN 2528 AND 2843 THEN 'Quantile_9'
WHEN RNK BETWEEN 2844 AND 3159 THEN 'Quantile_10' END quantile
FROM
(SELECT *,
ROW_NUMBER() OVER(ORDER BY F DESC) RNK
FROM
(SELECT USER_ID,
COUNT(DISTINCT ORDER_ID) F
FROM INSTACART.ORDERS
GROUP
BY 1) A) A
각 분위 수별 전체 주문 건수의 합 구하기
CREATE TEMPORARY TABLE INSTACART.USER_QUANTILE AS
SELECT *,
CASE WHEN RNK <= 316 THEN 'Quantile_1'
WHEN RNK <= 632 THEN 'Quantile_2'
WHEN RNK <= 948 THEN 'Quantile_3'
WHEN RNK <= 1264 THEN 'Quantile_4'
WHEN RNK <= 1580 THEN 'Quantile_5'
WHEN RNK <= 1895 THEN 'Quantile_6'
WHEN RNK <= 2211 THEN 'Quantile_7'
WHEN RNK <= 2527 THEN 'Quantile_8'
WHEN RNK <= 2843 THEN 'Quantile_9'
WHEN RNK <= 3159 THEN 'Quantile_10' END quantile
FROM
(SELECT *,
ROW_NUMBER() OVER(ORDER BY F DESC) RNK
FROM
(SELECT USER_ID,
COUNT(DISTINCT ORDER_ID) F
FROM INSTACART.ORDERS
GROUP
BY 1) A) A
SELECT QUANTILE,
SUM(F) F
FROM INSTACART.USER_QUANTILE
GROUP
BY 1
주문 전체 건수
SELECT SUM(F) FROM INSTACART.USER_QUANTILE;
각 분위 수의 주문 건수를 전체 주문건수로 나누기
SELECT QUANTILE,
SUM(F)/3220 F
FROM INSTACART.USER_QUANTILE
GROUP
BY 1
결과를 보면 각 분위 수별로 주문 건수가 거의 균등하게 분포되어 있다.
즉 해당 서비스는 매출이 VIP에게 집중되지 않고, 전체 고객에 고르게 분포되어 있음을 알 수있다.
'데이터 분석 프로젝트' 카테고리의 다른 글
[Kaggle/MySQL] E-Commerce 데이터분석1️⃣ Actual transactions from UK retailer (0) | 2024.02.04 |
---|---|
[Kaggle/MYSQL]식품 배송 데이터분석 3️⃣Instacart Market Basket Analysis (0) | 2024.02.03 |
[Kaggle/MySQL] 식품 배송 데이터분석1️⃣ Instacart Market Basket Analysis (0) | 2024.01.16 |
[DACON]학습 플랫폼 이용자 구독 갱신 예측 해커톤 후기(~12.11) (0) | 2023.12.12 |
[MySQL] VSCode와 MySQL 연결하면서 생긴 문제들☹︎(feat.sqlite3) (0) | 2023.11.28 |