<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

image.png

<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

image.png

🙄 카테고리 별 이탈률

#유저 필터링
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