본문 바로가기

Pandas/실전

판다스 - 가상 쇼핑몰 고객 주문 데이터 : 고객 코호트(cohort) 분석

반응형

https://steadiness-193.tistory.com/155

 

판다스 - 가상 쇼핑몰 고객 주문 데이터 : 연월별 매출, 요일별 매출

https://steadiness-193.tistory.com/154 판다스 - 가상 쇼핑몰 고객 주문 데이터 : 전체 매출, 국가별 매출 https://steadiness-193.tistory.com/153 판다스 - 가상 쇼핑몰 고객 주문 데이터 : 전처리, Data clea..

steadiness-193.tistory.com

전처리, 컬럼 추가 등은 위 포스팅 참조

 

 

 

 

 

데이터 불러오기

 

 

 

 

 

연도, 월 컬럼 추가

 

 

 

코호트 분석을 위해선

 

고객별로 첫 구매가 언제인지 파악해야한다.

 

 

 

 

이번 코호트 분석은

 

월 단위로 분석한다.

 

 

 

 

 

고객별 첫 구매 연도 추출

 

 

고객별로 (CustomerID)로 그룹핑한 다음

 

InvoiceDate 컬럼의 최솟값을 구해

 

transform으로 기존 인덱스를 유지한 채 첫 구매 일자를 추출한다.

(apply를 이용해도 된다.)

 

 

 

 

 

 

dt연산자를 이용해 연도만 뽑아냈다.

 

 

 

 

 

고객별 첫 구매 월 추출

 

 

dt연산자를 이용해 월만 뽑아냈다.

 

 

 

 

 

 

첫 구매 연, 월을 컬럼으로 추가

 

 

 

맨 뒤 5행을 보면

 

 

아래 5행의 고객은

 

구매는 2011년 12월에 했으나 첫 구매는 2011년 8월에 했다.

 

4개월 뒤에도 구매를 한 것이다.

 

 

 

 

 

 

 

 

첫 구매후 몇 개월만의 구매인지 찾기

 

 

(구매 연도 - 첫 구매 연도) x 12

+

(구매 월 - 첫 구매 월)

 

 

 

 

 

 

위 Month_Passed를 컬럼으로 추가

 

 

맨 아래 5명의 고객을 보면

 

2011년 8월에 구매한 뒤

 

4개월만에 또 주문한 것을 볼 수 있다.

 

 

 

 

 

 

첫 주문한 연, 월 컬럼을 연월 컬럼으로 추가

 

 

추후 분석의 용이함을 위해

 

첫 구매 연도와 첫 구매 월을 한꺼번에 연결해서 첫구매 [연월] 컬럼을 만들었다.

 

 

 

 

 

 

 

Start_ym과 Month_Passed 컬럼으로 그룹핑

 

 

두개의 컬럼으로 그룹핑한 다음

 

첫 행만 뽑아봤다.

 

 

 

해석을 해보자

 

우선 첫 구매는 2010년 12월인 고객들만 보인다.

 

Month_Passed가 0인 것은 2012년 12월에 구매한 고객을 나타낸다.

 

Month_Passed가 1인 것은 2012년 12월 이후, 1개월 뒤에 또 구매를 한 고객을 나타낸다.

 

 

 

그러면 그룹별로 CustomerID의 고유값을 구하면 되겠다.

 

 

 

첫 구매 연월로부터 N개월이 지나고도 또 구매한 고객들의 ID를 구했다.

 

다만

 

고유값보다는 고유값의 개수를 구하는 것이 분석에 필요해보인다.

 

 

 

 

 

그룹별 고객ID의 고유값 개수 구하기

 

 

 

 

 

 

데이터프레임으로 전환 (reset_index)

 

 

 

 

 

 

Month_Passed를 컬럼으로 이동 (pivot)

 

 

 

 

 

 

 

Month_Passed 가 0인 컬럼으로 정규화 후 반올림

 

 

 

 

 

 

 

 

히트맵으로 시각화

 

 

확실히 첫 구매 이후 1개월만에 10-20%대로 재구매율이 급락하는 것을 볼 수 있다.

 

연말이었던 2010년 12월에는 그래도 꾸준히 30%대 이상을 유지하고 있다.

 

 

 

 

 

 

반응형