| 성별 | female | male |
|---|---|---|
| target_group | ||
| 2-3구간 O, 연령대 2030 O | 77 (0.49) | 80 (0.51) |
| group1 | ||
| 2-3구간 O, 연령대 2030 X | 164 (0.501) | 163 (0.498) |
| group2 | ||
| 2-3구간 X, 연령대 2030 O | 91 (0.5) | 91 (0.5) |
| group3 | ||
| 2-3구간 X, 연령대 2030 X | 176 (0.53) | 158 (0.47) |
| 장르 | 자기계발 | 웹툰 | 소설 | 경제/시사 |
|---|---|---|---|---|
| target_group | ||||
| 2-3구간 O, 연령대 2030 O | 48 (0.306) | 45 (0.287) | 38 (0.242) | 26 (0.166) |
| group1 | ||||
| 2-3구간 O, 연령대 2030 X | 110 (0.336) | 88 (0.269) | 75 (0.229) | 54 (0.165) |
| group2 | ||||
| 2-3구간 X, 연령대 2030 O | 54 (0.297) | 49 (0.269) | 55 (0.302) | 24 (0.132) |
| group3 | ||||
| 2-3구간 X, 연령대 2030 X | 117 (0.350) | 80 (0.240) | 93 (0.278) | 44 (0.132) |
| 이탈 사유 | 추천 실패 | UX 불편 | 지루함 | 너무 김 | 기술 이슈 | 급한 일 |
|---|---|---|---|---|---|---|
| target_group | ||||||
| 2-3구간 O, 연령대 2030 O | 58 (0.369) | |||||
| 48 (0.306) | 19 (0.121) | 15 (0.096) | 9 (0.057) | 8 (0.051) | ||
| group1 | ||||||
| 2-3구간 O, 연령대 2030 X | 164 (0.339) | 140 (0.289) | 65 (0.134) | 62 (0.128) | 22 (0.045) | 31 (0.064) |
| group2 | ||||||
| 2-3구간 X, 연령대 2030 O | 61 (0.335) | 49 (0.269) | 23 (0.126) | 25 (0.137) | 13 (0.071) | 11 (0.060) |
| group3 | ||||||
| 2-3구간 X, 연령대 2030 X | 100 (0.299) | 111 (0.332) | 42 (0.126) | 43 (0.129) | 15 (0.045) | 23 (0.069) |
| 유입 경로 | 추천 | 검색 | 홈메인배너 | 외부링크 |
|---|---|---|---|---|
| target_group | ||||
| 2-3구간 O, 연령대 2030 O | 83 (0.529) | 34 (0.217) | 34 (0.217) | 6 (0.038) |
| group1 | ||||
| 2-3구간 O, 연령대 2030 X | 257 (0.531) | 94 (0.194) | 109 (0.225) | 24 (0.050) |
| group2 | ||||
| 2-3구간 X, 연령대 2030 O | 104 (0.571) | 26 (0.143) | 39 (0.214) | 13 (0.071) |
| group3 | ||||
| 2-3구간 X, 연령대 2030 X | 173 (0.518) | 75 (0.225) | 62 (0.186) | 24 (0.072) |
| 추천 콘텐츠 클릭 여부 | True | False |
|---|---|---|
| target_group | ||
| 2-3구간 O, 연령대 2030 O | 107 (0.682) | 50 (0.318) |
| group1 | ||
| 2-3구간 O, 연령대 2030 X | 319 (0.659) | 165 (0.341) |
| group2 | ||
| 2-3구간 X, 연령대 2030 O | 125 (0.687) | 57 (0.313) |
| group3 | ||
| 2-3구간 X, 연령대 2030 X | 219 (0.656) | 115 (0.344) |
<aside> 💡
‘어떤 유저가, 어떤 환경에서 독서를 했고, 어떤 이유 때문에 완독하지 않았을까’를 데이터를 통해 근거를 들어 설명
<aside> 💻
(예시) 20대 여성, tablet 이용, pay_per_book 유저 → 전체 유저 중 12%
</aside>
🤔 2030대, 독서 중단 위치 2-3구간 → 전체 유저 중 15.7% (+ pay_per_book 유저 포함 보류)
⇒ 타깃 유저만의 특징은 X
*비율 반올림 O
</aside>
<aside> 1️⃣
이탈률에 대한 정의 - 이탈 지점에 대한 범위 (독서 중단 범위)
| 1구간 | 15% 미만 | 140 | |
|---|---|---|---|
| 2구간 | 15~40% | 239 | |
| 3구간 | 41~65% | 245 | |
| 4구간 | 66~90% | 278 | |
| 완독 | 90% 초과 | 98 |
# 구간별 유저 수
df['exit_po_group'] = pd.cut(
df['exit_position_numeric'],
bins=[-1, 14, 40, 65, 90, 100],
labels=['15% 미만', '15~40%', '41~65%', '66~90%', '90% 초과'],
right=True
)
>>>
target_group = df[(df['exit_po_group'] == '15~40%') | (df['exit_po_group'] == '41~65%')]
</aside>
<aside> 2️⃣
특정 유저의 특성 / 행동 데이터 파악하기
# 나이 구하기
birth = target_group['birthday_filled'].dt.year # 출생년도에서 년 정보만 추출
current_year = 2023 # 현재 년도 설정
year_age = current_year - birth + 1 # 나이 구하기 (연나이 기준)
target_group['age'] = year_age # 1000 non-null / int32 'age' 컬럼 생성
def age_categorize(age): # 나이대 범주화
age = (age // 10) * 10
return age
age_category = target_group.age.apply(age_categorize) # apply()로 age컬럼 전 데이터에 적용
target_group['age_category'] = age_category # 새로운 컬럼'age_category' 생성
>>>
age_category count
50 86
30 82
40 82
10 79
20 75
60 61
100 11
0 8
비율 ver
50 0.177686
30 0.169421
40 0.169421
10 0.163223
20 0.154959
60 0.126033
100 0.022727
0 0.016529
target_group_age = target_group[(target_group['age_category'] == 20) | (target_group['age_category'] == 30) ]
target_group_age['user_demographics_gender'].value_counts()
>>>
male 80
female 77
</aside>