PROJECT GOAL : 파이썬 라이브러리를 활용하여 스타벅스 프로모션 데이터 분석 수행하기
[프로젝트 개요]
- 프로젝트 명 : 스타벅스 프로모션 결과 보고 및 프로모션 제안
- 기간 : 2024년 12월 26일 ~ 2025년 1월 3일
- 인원 : 팀 (4명)
- 역할 : 데이터 EDA 및 분석 코드 작성, 프로젝트 흐름 설정, 최종자료 마무리
- 작업 도구 : 파이썬ROJECT GOAL : 파이썬 라이브러리를 활용하여 스타벅스 프로모션 데이터 분석 수행하기
[프로젝트 개요]
- 프로젝트 명 : 스타벅스 프로모션 결과 보고 및 프로모션 제안
- 기간 : 2024년 12월 26일 ~ 2025년 1월 3일
- 인원 : 팀 (4명)
- 역할 : 데이터 EDA 및 분석 코드 작성, 프로젝트 흐름 설정, 최종자료 마무리
- 작업 도구 : 파이썬
[데이터 개요]
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)그룹에서는 그 차이가 더 두드러짐
- 그래프로도 지출 잠재 고객 그룹의 참여율 편차가 상대적으로 큰 것을 확인할 수 있음
③ 성과 분석 : 수익률
더보기
![](https://blog.kakaocdn.net/dn/b8bjhm/btsLFhvK9dc/fPdQ3kFz5g5w9MBY6221n1/img.png)
※ 추가 전처리
- transaction event 발생 후에 항상 offer completed event가 발생하였고, 2가지 event의 time값이 동일함
- 이는 프로모션 쿠폰을 사용하여 구매를 완료한, 프로모션 참여 구매를 의미
- 일반 거래를 제외한 프로모션이 적용된 거래액만 확인하기 위해 offer completed의 윗행인 transaction의 amount 값을 가져와서 null값을 대체함
![](https://blog.kakaocdn.net/dn/b8bjhm/btsLFhvK9dc/fPdQ3kFz5g5w9MBY6221n1/img.png)
- 수익률 = 프로모션이 적용된 거래액 / 전체 거래액
- 수익률은 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 그룹을 더 세분화 해봐도 좋겠다는 피드백
'데이터 부트캠프 - Project' 카테고리의 다른 글
[머신러닝 심화 프로젝트] 영국 내 현대 중고차 가격 예측 모델링 (0) | 2025.02.09 |
---|---|
[SQL 분석 프로젝트] 이커머스 이벤트 히스토리 분석 (1) | 2024.12.10 |