24.01.12. 기초 프로젝트

예진·2024년 1월 12일
0

TIL

목록 보기
17/68
  • 주제 : 왜 한 번만 구매하고 떠날까?

  • 우리 고객은 한 번만 구매한 고객이 50% 이상이며, 재구매율이 낮은 이유를 밝혀야 한다. 재구매를 유도할 수 있도록 적절한 마케팅을 고민해야 한다.

  • 생각 정리하기

  • 재구매가 일어난 고객의 특성을 파악하면 한 번 구매한 고객도 재구매를 유도할 수 있다.

  • “한 번 구매한 고객”과 “두 번 이상 구매한 고객” 두 그룹을 비교하여 재구매에 영향을 주는 유의미한 요인 파악

  • 상관분석을 통해 재구매와 상관계수가 높은 요인을 찾아보자

  • 상관계수가 높은 요인을 세부적으로 분석

    ex. 배달 기간이 길어질 수록 재구매율이 낮다.
    특정 지역에서 발생한 주문 건은 배달 기간이 길다 - 재구매 전환 낮음

가설에 대한 질문 내용

1) 문제점과 이를 야기하는 요인(인과관계)를 명시하고 데이터 분석을 통해 해당 가설이 타당한지 채택/기각 여부를 따진 후, 채택 될 시 이에 상응하는 액션플랜을 제시하는 방식.

ex. 고객의 구매율이 저조하다. 낮은 구매율에 영향을 끼치는 요인은 무엇일까? 높은 가격대가 영향을 미칠 수 있다.

따라서, 가설은 “높은 가격이 낮은 구매율을 야기한다.” 이를 데이터 분석을 통해 검증하고, 가설이 채택 될 시 할인쿠폰 발행과 같은 액션을 제시한다.

2) 가설 내에 문제점에 영향을 주는 요인과 문제를 해결하기 위한 액션 플랜과 확인 가능한 지표를 함께 제시한다. (HOW?)

ex. 할인 쿠폰을 발행하면 구매율이 늘어날 것이다.

목적변수 ; 재구매율

일시적 ? : 품목에 따라 재구매율의 차이가 있을 것이다/

           카테고리별 재구매율 확인 / 피벗테이블로 확인 / t-test

      

문제점에 영향을 끼칠 수 있는 요인들을 세분화 하여 가설로 상정,

분석을 통해 해당 요인이 실제로 문제점에 영향을 주는지 검증

→ 영향을 주는게 맞다고 확인되면 (예컨대 그래프를 통한 추이를 확인하여)

→ 이를 해결하기 위한 전략/마케팅적 액션플랜을 제안. // 액션플랜이 가설 단계에 들어가지 않아도 됨.

→→ 영향을 주지 않는다고 판단되면(가설의 기각), 또 다른 영향을 줄 수 있는 요인을 발굴하거나, 요인들을 세분화하여 다시 가설 설정하기. 소그룹 분석 / 트리모양으로

  • 주문당 상품 개수 요인 분석

    재구매 여부 : “한 번 구매한 고객”과 “2번 이상 구매한 고객”으로 분류

    구매 상품 : “주문 당 상품 한 개만 구매한 고객” “주문 당 상품 여러 개 구매한 고객”

#한 사람 당 구매 개수
SELECT o.order_id,
       COUNT(s.sales_id) AS count_sales
FROM orders o RIGHT JOIN sales s on o.order_id=s.order_id 
GROUP BY order_id
ORDER BY 1

#고객 별 주문 횟수
SELECT COUNT(DISTINCT(o.order_id)) as count_orders,
       c.customer_id
FROM sales s RIGHT JOIN orders o on s.order_id = o.order_id 
             RIGHT JOIN customers c on o.customer_id = c.customer_id 
GROUP BY customer_id 
ORDER BY customer_id

#고객 별 주문 별 상품 개수
SELECT c.customer_id,
       c.customer_name,
       o.order_id,
       COUNT(s.product_id) AS CNT_products
FROM customers c JOIN orders o on c.customer_id = o.customer_id 
                 JOIN sales s on o.order_id = s.order_id 
GROUP BY c.customer_id, c.customer_name, o.order_id 
ORDER BY c.customer_id, o.order_id

#각 고객의 주문횟수 (일회주문, 다회주문)와 구매상품개수(단일상품, 다수상품)
SELECT
    c.customer_id,
    c.customer_name,
    CASE
        WHEN COUNT(DISTINCT o.order_id) >= 2 AND COUNT(s.product_id) >= 2 THEN '2+ orders, 2+ products'
        WHEN COUNT(DISTINCT o.order_id) >= 2 AND COUNT(s.product_id) = 1 THEN '2+ orders, 1 product'
        WHEN COUNT(DISTINCT o.order_id) = 1 AND COUNT(s.product_id) >= 2 THEN '1 order, 2+ products'
        ELSE '1 order, 1 product'
    END AS order_classification
FROM
    customers c
JOIN
    orders o ON c.customer_id = o.customer_id
JOIN
    sales s ON o.order_id = s.order_id
GROUP BY
    c.customer_id, c.customer_name
ORDER BY
    c.customer_id;

#깔끔한 결과 표?
SELECT
    c.customer_id,
    c.customer_name,
    CASE
        WHEN COUNT(DISTINCT o.order_id) >= 2 THEN '2+ orders'
        ELSE '1 order'
    END AS order_count_classification,
    CASE
        WHEN COUNT(s.product_id) >= 2 THEN '2+ products'
        ELSE '1 product'
    END AS product_count_classification
FROM
    customers c
JOIN
    orders o ON c.customer_id = o.customer_id
JOIN
    sales s ON o.order_id = s.order_id
GROUP BY
    c.customer_id, c.customer_name
ORDER BY
    c.customer_id;
profile
Data Analysis / 맨 땅에 헤딩

0개의 댓글