데이터 부트캠프 - Project

[파이썬 기초 분석 프로젝트] 프로모션 성과 분석 및 향후 프로모션 제안

onion95 2025. 1. 7. 18:06

PROJECT GOAL : 파이썬 라이브러리를 활용하여 스타벅스 프로모션 데이터 분석 수행하기

 

 

[프로젝트 개요]

 

  • 프로젝트 명 : 스타벅스 프로모션 결과 보고 및 프로모션 제안
  • 기간 : 2024년 12월 26일 ~ 2025년 1월 3일
  • 인원 : 팀 (4명)
  • 역할 : 데이터 EDA 및 분석 코드 작성, 프로젝트 흐름 설정, 최종자료 마무리 
  • 작업 도구 : 파이썬ROJECT GOAL : 파이썬 라이브러리를 활용하여 스타벅스 프로모션 데이터 분석 수행하기

 

 

[프로젝트 개요]

 

  • 프로젝트 명 : 스타벅스 프로모션 결과 보고 및 프로모션 제안
  • 기간 : 2024년 12월 26일 ~ 2025년 1월 3일
  • 인원 : 팀 (4명)
  • 역할 : 데이터 EDA 및 분석 코드 작성, 프로젝트 흐름 설정, 최종자료 마무리 
  • 작업 도구 : 파이썬

 

 

[데이터 개요]

 

출처 : https://www.kaggle.com/datasets/ihormuliar/starbucks-customer-data?resource=download&select=portfolio.csv

 

Starbucks Customer Data

Starbucks customer dataset

www.kaggle.com

  • 총 3개의 테이블 존재(프로모션 정보, 회원 정보, 프로모션 관련 고객 행동 및 구매 이력)
  • 명확하지 않은 컬럼 정의로 인해 분석 전 합의가 필요

portfolio.csv : 프로모션 정보

Columns   설명
reward 보상 프로모션에 참여함으로써 받게되는 보상의 척도(별 개수)
channels 프로모션 채널 프로모션이 발송되는 채널 종류
difficulty 프로모션 참여 장벽 프로모션에 참여하기 위한 단계(쿠폰 다운까지 클릭해야하는 것이 많다던가)를 나타내는 척도
duration 프로모션 지속 기간 프로모션이 지속되는 기간(일)
offer_type 프로모션 종류 단순 정보, bogo(1+1쿠폰), 할인 쿠폰
id 프로모션 id 각 프로모션을 구별하는 고유 id

 

profile.csv : 회원 정보

Columns   설명
gender 성별 F, M, O로 구분
결측값 존재 (정보 미입력 회원으로 예상)
age 나이 성별이 결측값인 경우 118로 일괄 입력(이상치)
id 고객 고유 id  
became_member_on 고객 가입 날짜  
income 수입  

 

portfolio.csv : 프로모션 정보

Columns   설명
person 고객 id  
event 고객 행동 프로모션 발송 받음, 프로모션 읽음, 프로모션 참여 완료, 거래
value 고객 행동에 관련된 프로모션 id, reward, 거래금액  json 형태의 값
time 프로모션 경과 시간 첫번째 발송 시간 = 0에서 시작하여 1시간 단위로 표현

 

 

[분석 목적 및 방법]

 

1. 분석 목적

  • 1차 : RFM 분석 기반 고객 세그먼트
  • 2차 : 고객 그룹별 프로모션 성과 분석 및 고객 특징 파악

 

2. 분석 방법

① 데이터 전처리

  • 컬럼별 통계 확인, 데이터 이상치/결측치 파악 및 처리, json형태 컬럼 값 처리 

② RFM 분석 기반 고객 세그먼트

  • 고객별 최근 구매 시기, 총 구매 횟수(단위기간), 총 구매 금액(단위기간)를 집계하여 점수를 책정하고 점수 조합에 따른 그룹 분류를 수행함

③ 고객 그룹별 프로모션 성과 분석 및 고객 특징 파악

  • 고객 그룹별, 프로모션별 참여율, 수익률, 1회 평균 결제 금액 분석
  • 고객 그룹별 고객 수, 성별, 나이, 수입 등 특징 확인

 

 

[분석 과정 및 결과]

 

1. 전처리

① portfolio.csv : 직관적인 프로모션 이름 부여

  • 기존 프로모션 id는 종류를 파악하기 어려운 형태로 되어있어 향후 프로모션별 분석 결과 해석의 편의를 위해 직관적인 프로모션 이름 생성

② profile.csv : 이상치, 결측치 처리

  • gender컬럼은 M,F,O 값이 있고 결측치가 존재 > gender 결측치인 경우 age는 118로 일괄 입력
  • age에서 100세 이상 값이 몇가지 있으나 boxplot 확인 결과 118만 이상치로 판별, gender가 결측치인 경우 모두 삭제

③ transcript.csv : json 데이터 변환

  • value컬럼의 데이터값 형태를 딕셔너리로 변환 후, 각 키를 새로운 컬럼으로 생성함

 

2. RFM 분석 기반 고객 세그먼트

  • 전체 데이터 기간 중, 구매 이력이 있는 고객만 필터링하였음 
  • 최근성(Recency), 빈도(Frequency), 지출(Monetary)의 정도를 확인하기 위해 고객별 집계를 수행하고 각 값들에 대한 기본 통계 확인

  • R/F/M에서 사분위수를 기준으로 1~4점을 부여하였음(최근에 구매했을수록, 자주 구매할수록, 지출비용이 많을 수록 높은 점수 부여)
  • 각 점수의 조합에 따라 4가지 고객 그룹으로 분류함

 

3. 고객 그룹별 프로모션 성과 분석 및 고객 특징 파악

① 고객 그룹별 특징 파악

  • 그룹별 고객 수

  • 그룹별 성별 구성 비교

  • 그룹별 나이 분포 비교

 

② 성과 분석 : 참여율

  • 참여율 = offer complete / offer received 로 계산함 > 프로모션 발송 대비 실제 참여(구매)한 비율

  • 지출 잠재 고객(potential)과 이탈 위험 고객(risk) 그룹의 프로모션 참여율이 상당히 낮음

  • 프로모션별 참여율을 확인해본 결과, 고객 그룹별로 상위 프로모션 패턴이 거의 일치함
  • 할인 프로모션에 대한 참여율이 확연히 높고, 특히 지출 잠재 고객(potential)그룹에서는 그 차이가 더 두드러짐

  • 그래프로도 지출 잠재 고객 그룹의 참여율 편차가 상대적으로 큰 것을 확인할 수 있음

 

③ 성과 분석 : 수익률

 

더보기

※ 추가 전처리

  • transaction event 발생 후에 항상 offer completed event가 발생하였고, 2가지 event의 time값이 동일함
  • 이는 프로모션 쿠폰을 사용하여 구매를 완료한, 프로모션 참여 구매를 의미
  • 일반 거래를 제외한 프로모션이 적용된 거래액만 확인하기 위해 offer completed의 윗행인 transaction의 amount 값을 가져와서 null값을 대체함
  • 수익률 = 프로모션이 적용된 거래액 / 전체 거래액

  • 수익률은 VIP와 지출 잠재 고객(potential) 그룹이 상대적으로 낮게 나타남

  • 그룹 4개 모두 공통적으로 할인(보상2 어려움10) 프로모션에서 많은 수익 비중을 차지하고 있긴 하지만 대체로 각 프로모션의 수익 비중이 비슷함
  • 지출 잠재 고객(potential) 그룹에서 상위 4개 프로모션의 수익이 전체 프로모션 수익에서 75%를 차지한다는 특징이 보임

  • 그래프를 통해 지출 잠재 고객(potential) 그룹의 수익률 편차가 큰 것을 확인할 수 있음

 

④ 성과 분석 : 1회 평균 결제 금액

  • 프로모션을 적용하지 않은 일반 거래가 포함된 평균 결제 금액과 프로모션을 적용한 거래의 평균 결제 금액을 확인할 결과, 평균적으로 고객들은 프로모션을 적용한 거래에 더 많은 지출을 하는 것을 확인함
  • 지출 잠재 고객(potential) 그룹의 평균 결제액은 다른 그룹에 비해 상당히 낮음 > 참여율도 낮은 그룹으로, 프로모션에 영향을 받지 않고 매일 커피 한잔 정도의 소비를 하는 루틴이 있는 그룹으로 보임

  • 참여율이 높았다고하여 지출 금액이 큰 것은 아니며, 지출 잠재 고객 그룹을 제외하면 할인(보상5 어려움20) 프로모션의 결제 금액이 가장 높았음

  • 방문 잠재 고객(low)는 대체로 VIP보다도 평균 결제 금액이 조금 더 높게 나타나고 있음
  • 방문 빈도나 최근성 점수가 낮은 그룹으로, 구매 빈도를 향상시키는 전략이 필요해 보임

 

4. 프로모션 성과 분석 종합

 

 

5. 종합 결론(프로모션 제안 방향)

  • 결론적으로 마케팅 전략을 수립하여 집중해야할 고객 그룹은 방문 잠재 고객(low)과 지출 잠재 고객(potential) 그룹임
  • 방문 잠재 고객(low)의 경우 출석체크 이벤트, 중년층을 대상으로 하는 특정 시간대의 선호 메뉴 할인 이벤트 등을 제공하여 방문 빈도를 향상시키는 전략 필요
  • 20대의 비율이 높았던 지출 잠재 고객(potential) 그룹의 경우 중장년층 뿐만 아니라 20대를 공략해야 한다는 특징이 있으므로, 베이커리 콤보 구매시 할인 또는 월 10만원 이상 구매시 기프트 키트 혹은 한정 이벤트를 제공하는 등 지출 금액을 높이는 전략 필요

 

 

[배운 점]

 

EDA부터 체계적인 분석 단계를 거쳐서 정리하는 것의 효율성

 

  • 분석의 첫 단계에서 꼼꼼한 EDA를 진행하지 않았기 때문에 향후 다양한 분석 과정에서 특정 컬럼의 갯수, 결측값의 갯수 등과 같은 기본적인 통계값을 재확인하는 과정을 왔다갔다 해야 했음
  • 혼자 분석하는 것이라면 모르겠지만, 협업의 관점에서 효율적이지 못하다고 느낌(분석이 끝난 후에 다른 사람이 뭔가 논리적 오류를 발견하면 다시 기본적인 내용을 재합의 해야한다던가 - 나이 이상치는 어디서부터 제외할건지,, 같은)

 

데이터 컬럼의 정의는 확실하지 않은 경우가 많다(현업에서 조차도...)

 

  • 실제로 컬럼의 정의는 해당 서비스?제품?의 기획자가 가장 잘 알고, 기획자는 퇴사해도 없을 수도 있으며.... 이러저러한 이유로 데이터의 내용을 명확하게 알 수 없는 경우는 많음
  • 분석가로서 합리적인 상상(추론)도 필요한 것...

 

 

[향후 보완점]

 

  • 결과가 들쑥날쑥했던 potential 그룹을 더 세분화 해봐도 좋겠다는 피드백