<aside> 📌 Task : 구글 폼 제출

</aside>

<aside> 📌 실행 및 진행 사항 정리

분석 흐름 요약 데이터 통합

user_demographics.csv, user_activity.csv, book_reading_status.csv를 user_id 기준으로 병합하여 하나의 마스터 테이블 생성

➜ pd.merge() 2번 사용

데이터 타입 정제 및 이상치 처리

pdp_duration_sec, birthday, last_access_timestamp 등 object 타입 → int 또는 datetime으로 변환

pdp_duration_sec에 있는 '98s' 같은 문자열에서 숫자만 추출 → int 형 변환 후 결측치는 평균 또는 중앙값으로 대체

describe() 및 boxplot()으로 수치형 컬럼 이상치 탐지 → 상위 1% 이상치는 IQR 기준 제거 또는 변환

결측치 처리

각 컬럼의 결측치 비율 확인

exit_position_numeric, dropout_reason_detail, pdp_duration_sec 등 주요 컬럼의 NaN 값은 유형별 평균/중앙값으로 대체하거나 ‘미응답’ 카테고리 추가

파생변수 생성

birthday → 나이로 변환

last_access_timestamp → 요일, 시간대, 주말 여부 생성

➜ df['weekday'] = df['last_access_timestamp'].dt.dayofweek

➜ 시간대 범주는 pd.cut()으로 새벽/오전/오후/저녁 등 분류

exit_position_numeric → 완독 여부 플래그 생성: 완독(True) if >=90, 이탈(False) if <90

유저 페르소나 정의

연령대 + 구독 플랜 + 기기 유형 + 장르 기반으로 세분화

예: 20대/여성/모바일/소설/월정액 구독 유저 그룹

시각화 및 탐색적 분석

장르별 이탈률, 구독 유형별 완독률, 시간대별 CTR, 추천 클릭 여부 vs 완독률 등

시각화 도구: matplotlib, seaborn, barplot, lineplot, pie chart, boxplot

상관관계/패턴 분석

exit_position_numeric과 pdp_duration_sec, recommendation_clicked, quick_preview_used의 상관관계 확인

완독 여부를 타깃으로 이진 분류 시나리오 준비 가능

</aside>

<aside> 📌 결과

</aside>

제출 완료