본문 바로가기

Pandas/실전

판다스 - 로그데이터 분석 : 고객 이탈률이 높은 페이지는?

반응형

웹서버가 request를 받으면 해당 요청에 대한 log 정보가 남는다.

 

log 정보

ip / 세션아이디 / 사용자아이디 / 시각 / 요청 페이지 / 상태코드 / 바이트사이즈 등이 있다.



세션 아이디

사용자가 로그인을 해서 일련의 활동을 하는데, 그 활동이 활발하게 이루어지는 그 기간

즉, 사용자가 Active하게 해당 사이트를 이용하는 기간을 의미한다.

간혹 어떤 페이지에서 장시간 움직임이 없으면 자동으로 로그아웃되는데

이는 세션 아이디가 리셋되는 것이라 생각하면 된다.

 

 

 

 

 

데이터 불러오기

 

 

이는 실제 로그 데이터가 아닌 임의로 작성된 데이터를 밝힘.

 

 

 

 

 

사용자가 어떤 과정을 거치는지는 url 컬럼을 확인한다.

 

 

 

 

 

url컬럼의 고유값

 

 

여기서 /checkout을 제외한 4단계를 살펴볼 예정이다.

 

 

 

 

 

 

날짜 컬럼 전처리

 

 

필요 없는 대괄호는 없애준다.

 

 

to_datetime을 이용해서 datetime자료형으로 바꿔준다.

 

여기서 형식을 반드시 지정해줘야 원하는 대로 날짜가 나온다.

 

첫행의 기존 데이터를 보면 

 

01/Dec/2019T00:47:11

 

일/월/연T시:분:초 이렇게 구성되어 있다.

 

 

구성에 맞게

 

일 : %d / 3자리 월 : %b / 4자리 연도 : %Y

T

24시간 : %H 

2자리 분 : %M

2자리 초 : %S

 

위 포맷을 전달해주면 된다.

 

 

 

 

 

datetime이 보기 좋게 바뀌었다.

 

 

 

 

 

 

 

 

funnel step 데이터프레임 제작

 

 

위에서 봤던 url 컬럼의 4가지 값을 추출하여 단계별로 순서를 맞춰놓는다.

 

제품 리스트 → 제품 설명 → 장바구니 → 결제 완료

 

이 순서이다.

 

 

 

 

 

 

session과 url로 그룹핑

 

user_id가 아닌 session을 기준으로 잡아야한다.

 

그 이유는 동일한 유저라도 다른 세션으로 접속했다면 다른 경우로 간주하기 때문이다.

 

 

 

위 grouped에서 필요한 것은 사실 datetime 컬럼이다.

 

 

그룹별 datetime 컬럼의 가장 빠른 시간대를 살펴보자

 

 

 

시간대가 가장 빠른 이벤트를 추출하는 것이다.

 

 

 

 

 

 

위 grouped를 데이터프레임화

 

 

 

 

url별 숫자로 순서를 나타내기 위해

 

전에 만든 funnel_stpes와 merge 실행

 

 

 

 

 

 

결과

 

 

 

funnel_steps의 /check_out 단계는 merge할 대상이 없기에

 

기존 1290행에서 1115행으로 줄어들었다.

 

 

 

 

 

funnel 제작

 

 

grouped의 인덱스를 리셋한 다음

 

session_id를 인덱스로, step_no를 컬럼으로 피벗해서

 

funnel 데이터프레임을 만든다.

 

 

 

 

 

 

다만 1,2,3,4로 보기엔 헷갈리니 컬럼명을 단계별 이름으로 바꿔주자

 

 

 

첫번째 행 세션아이디는 제품 리스트를 보고 디테일까진 갔지만 장바구니로 연결되진 않았다.

 

세번째의 경우에는 장바구니까진 갔지만 결제가 완료되진 않았다.

 

 

 

 

 

 

퍼널 카운트 계산

 

 

각 스텝별로 얼마나 누락값이 생기는지

 

즉, 이탈을 얼마나 하는지 계산

 

리스트로 바로 담아줬다.

 

 

 

 

 

 

 

 

funnel 시각화

 

각 funnel별 스텝 이름과

 

각 funnel별 카운트 값을 이용해 Funnel 그래프를 그린다.

 

 

세번째 장바구니 단계의 경우

 

처음의 62.3%가 남았고

 

바로 그 전 단계인 produce_list에서는 74.4%가 남았다.

 

확실히 order_complete까지 가는데 이탈자가 많은 것을 볼 수 있다.

 

 

 

 

 

 

평균 시간 계산

 

각 퍼널별 평균 소요 시간을 살펴보자

 

 

제품 리스트에서 제품 상세까지 가는데 걸리는 평균 시간은 16분

 

제품 상세에서 장바구니로 이동하는데 걸리는 평균 시간은 18분

 

그러나 장바구니에서 결제 완료까지 걸리는 평균 시간은 33분.

 

확실히 제품 결제하는 단계에서의 User 맞춤형 편리화를 재고할 필요가 있다.

 

 

 

반응형