<aside>
담당 가설: 무반응형 신규 유저 -
<aside> 📓
페르소나 조건에 맞는 유저 필터링 +duration_group_label (pdp 체류시간별)
df_filtered_org = df[
(df['user_type'] == 'new') &
(df['price_band'].isin(['mid_50k_150k', 'under_50k'])) &
(df['review_clicked'] == False) &
(df['discount_exposed'] == False) &
(df['traffic_source'] == 'ad')
]
df_filtered_org['is_abandon'] = df_filtered_org['add_to_cart'] == "No"
result = (
df_filtered_org
.groupby('duration_group_label')
.agg(total_users=('add_to_cart', 'count'), abandon_users=('is_abandon', 'sum'))
)
result['abandon_rate'] = result['abandon_users'] / result['total_users'] * 100
result = result.reset_index()
result

<aside>
음(김재이 작성중)
이탈률 극단적 → 상세페이지 ‘김’ → ㄹㅇ 메리트 없어서 이탈
충격요법느낌으로? ㅋㅋㅋ 괜츈하죠 이게 상세페이지를 진짜 못만들었나바여
무슨 리터닝 유저들도 오래보면 다 빠져나가고 그냥 회사 문닫기 직전인듯요
좀 돈 좀 쓰지 너무 안써서 이런
그리고 광고 비중 제일 적은거 보면 신생회사같음
이정도면 디자이너 잘려야됨 옷이 개구려서그런듯..
그나마 ㅇ
</aside>
<aside>
지표가 진짜 짧게 본 경우도 거진 80프로 이탈하는데 길게보면 아예 전멸
전 체류시간 구간에서 이탈률이 극단적으로 높다는 건... 답이없단 얘기!
신규 유저인데,
➤ 이건 그냥 “나 여기 왜 왔지?” 바로 뒤로가기~
PDP 내용 이전에, 진입 장벽이 너무 박하다는 느낌
광고로 유입된 신규 유저는 처음부터 지갑 열 가능성이 거의 없음
이들에게 리뷰/할인/추천 상품/심리적 이득요소가 안 보이면,
“이탈이 아니라 안착할 이유가 없다”는 생각
</aside>
결론 이데이터는 표본도 적고 지표도 극단적이라 답이 없다 생각.
df_filtered_rev = df[
(df['user_type'] == 'new') &
(df['price_band'].isin(['mid_50k_150k', 'under_50k'])) &
(df['review_clicked'] == True) &
(df['discount_exposed'] == False) &
(df['traffic_source'] == 'ad')
]
df_filtered_rev['is_abandon'] = df_filtered_rev['add_to_cart'] == "No"
result = (
df_filtered_rev
.groupby('duration_group_label')
.agg(total_users=('add_to_cart', 'count'), abandon_users=('is_abandon', 'sum'))
)
result['abandon_rate'] = result['abandon_users'] / result['total_users'] * 100
result = result.reset_index()
result

#유저 필터링
import pandas as pd
# CSV 파일 불러오기
df = pd.read_csv("df.csv")
# 조건 필터링
df_filtered = df[
(df['price_band'].isin(['under_50k', 'mid_50k_150k'])) &
(df['user_type'] == 'new') &
(df['traffic_source'] == 'ad') &
(df['review_clicked'] == False) &
(df['discount_exposed'] == False)
]
print("전체 유저 수:", df.shape[0])
# 카테고리 별 이탈률 적용
# 1. 이탈 여부 플래그 생성
df_filtered['is_abandon'] = df_filtered['add_to_cart'] == "No"
# 2. product_category별 총 유저 수와 이탈 유저 수 집계
abandon_summary = (
df_filtered
.groupby('product_category')
.agg(
total_users=('add_to_cart', 'count'),
abandon_users=('is_abandon', 'sum')
)
.reset_index()
)
# 3. 이탈률 계산 (%)
abandon_summary['abandon_rate'] = (abandon_summary['abandon_users'] / abandon_summary['total_users']) * 100
# 결과 출력
abandon_summary