일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- SQL
- 데이터 분석
- 전처리
- 프로젝트
- 머신러닝
- cross join
- 히트맵
- jd
- 시각화
- data analyst
- 군집화
- 기초프로젝트
- 클러스터링
- streamlit
- 크롤링
- da
- GA4
- 서브쿼리
- 태블로
- 최종 프로젝트
- If
- 기초통계
- 팀프로젝트
- Chat GPT
- pandas
- SQLD
- lambda
- Python
- 프롬프트 엔지니어링
- 데이터분석
- Today
- Total
세조목
실전 프로젝트 8일차(24.03.07) 본문
1. 문제 풀기
실전 프로젝트 8일차입니다.
금일은 지옥 난이도 문제와 대시보드 작업을 진행했습니다.
지옥 난이도의 문제는 앞선 고급-2 문제의 연장선으로,
고급-2에서 세션의 간격이 30분이 넘어가는 경우가 차지하는 비중이 어느정도인지 확인했다면
지옥 난이도에서는 30분이 넘어가는 이유에 대해서 확인해야했습니다.
우선 세션의 간격이 30분이 넘어가는 session_id들만을 별도로 확인해보았는데요,
event_type에 하나의 패턴을 발견할 수 있었습니다.
department-product-cart가 반복되는 패턴입니다.
여러가지 가설들을 세워보긴했으나 이렇다할 가설은 찾을수 없었습니다.
하지만 created_at 컬럼을 보았을때 각각의 event들간 간격이 짧은건 초 단위, 조금 긴건 분 단위인것으로 미루어보아
department-product-cart 한 쌍의 패턴이 여러 번 반복되는 것은 시스템상의 오류일수도 있겠다고 생각했습니다.
그리고 다시 한 번 created_at 컬럼을 보면 거의 대부분
장바구니(cart)담기부터 구매(purchase)까지 몇 일 이상씩 소요되는 것을 확인할 수 있습니다.
이는 session 간격이 30분을 넘어가지 않는 경우에도 마찬가지였기때문에
저희는 '고객들이 구매 의사결정을 내리기까지 꽤 오랜 시간을 고민하는구나' 하는 생각을 했습니다.
참고로 department-product-cart 한 쌍이 하나의 session_id에 두 번 이상 나타나며
각각의 product-id는 동일하면 안 된다는 로직에 대한 코드는 아래와 같이 작성했습니다.
# 패턴이 2개 이상이고, 모든 product_id가 같은 session id 빈 리스트 만들어놓기
over2_pattern_same_product_sessions = []
# 패턴이 2개 이상인 세션 아이디 찾기
for session_id, i in final.groupby('session_id'):
event_types = ''.join(i['event_type'])
# 패턴이 2개 이상인 경우
if event_types.count('departmentproductcart') >= 2:
# product_id의 고유값 수가 1인 경우 (=product id가 모두 같음)
product_id_countd = i[i['event_type'] == 'product']['product_id'].unique()
if len(product_id_countd) == 1:
over2_pattern_same_product_sessions.append(session_id)
# 해당하는 세션 아이디들의 데이터프레임 행을 뽑기
df_over2pattern_sameproduct = final[final['session_id'].isin(over2_pattern_same_product_sessions)]
# session 간격이 30분을 넘어가는 session_id 中 department-product-cart 한 쌍이 두 번 이상 반복되는 경우의 비중
total_sessionid = final['session_id'].nunique()
over2pattern_sameproduct_sessionid = df_over2pattern_sameproduct['session_id'].nunique()
ratio = over2pattern_sameproduct_sessionid / total_sessionid
print('True가 한 개 이상 있는 (세션 만료가 있는) session_id 그룹')
print('전체 세션 아이디 카운트(고유):', total_sessionid)
print('패턴 2회 이상 반복 및 product_id가 같은 세션 아이디 카운트(고유)', over2pattern_sameproduct_sessionid)
print('비율', ratio)
이렇게 코드를 돌렸을때의 결과값은 아래와 같았습니다.
session 간격이 30분을 넘어가지 않는 경우는 어땠을까요?
session 간격이 30분을 넘어갔을때 패턴이 2번 이상 반복되는 경우가 99%였던 것과는 달리
30분을 넘어가지 않을때 패턴이 2번 이상 반복되는 경우는 3%에 불과했습니다.
이같은 결과를 통해서도 department-product-cart 한 쌍이 두 번 이상 반복되는 경우가 많은 것이
session 간격이 30분을 넘어가는데 충분히 영향을 줄 것이라고 생각해볼 수도 있을 것입니다.
2. 대시보드 작업
모든 데이터 품질 검사를 마치고 대시보드 작업에 들어갔는데요,
금일은 큰 틀 정도만 잡아놓았고, 나머지는 내일 오전에 팀원들과 함께 다듬을 예정입니다.
'데이터 분석 공부 > 프로젝트' 카테고리의 다른 글
실전 프로젝트 회고 (0) | 2024.03.13 |
---|---|
실전 프로젝트(9일차~12일차) (0) | 2024.03.11 |
실전 프로젝트 7일차(24.03.06) (0) | 2024.03.06 |
실전 프로젝트 6일차(24.03.05) (0) | 2024.03.05 |
실전 프로젝트 4~5일차(24.03.03~04) (0) | 2024.03.04 |