-
4. 데이터 분석가 프로젝트 5주차 수행일지마케터 관점의 데이터분석/데이터분석 프로젝트 2025. 9. 12. 11:00

4주차에는 광고 예산과 인력이 무한하지 않다는 점을 고려하여,
우선 가장 효율이 높은 고객 세그먼트를 선별해야 한다고 판단했다.
이에 따라 5주차에는 데이터를 기반으로 분석을 진행해,
어떤 그룹을 우선 공략했을 때 ROI가 가장 높을지를 도출했다.[멀티캠퍼스 KDT 데이터 분석가 최종 프로젝트 5주차 수행일지]
1. 데이터 준비
import pandas as pd df = pd.read_csv("tourist_data.csv") df.head()데이터 출처: 외래관광객 조사 2분기 잠정치
주요 변수: 점유율, 성장률, 만족도, 방문객 규모
2. ROI 점수 산출
from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() df[['점유율_n','성장률_n','만족도_n','방문객규모_n']] = scaler.fit_transform( df[['점유율','성장률','만족도','방문객규모']] ) df['ROI_score'] = df[['점유율_n','성장률_n','만족도_n','방문객규모_n']].mean(axis=1) df[['세그먼트','ROI_score']].sort_values(by='ROI_score', ascending=False).head()네 가지 지표를 정규화 후 평균하여 ROI Score로 정의
결과: 여성 청년층(친구·커플), 여성 30~40대, 가족 동반이 Top3
3. 클러스터링(KMeans)
from sklearn.cluster import KMeans X = df[['점유율_n','성장률_n','만족도_n','방문객규모_n']] km = KMeans(n_clusters=2, random_state=42) df['cluster'] = km.fit_predict(X) df.groupby('cluster').mean()데이터 기반으로 행동 그룹을 도출 (Cluster 0: 가족 중심, Cluster 1: 여성 중심)
4. 시각화
import matplotlib.pyplot as plt plt.scatter(df['성장률'], df['만족도'], s=df['방문객규모']/50, c=df['ROI_score'], cmap='coolwarm', alpha=0.7) plt.xlabel("성장률") plt.ylabel("만족도") plt.title("세그먼트별 성장률 vs 만족도 (버블=규모, 색=ROI)") plt.colorbar(label="ROI Score") plt.show()버블차트: 성장률 vs 만족도, 버블 크기=방문객 규모, 색=ROI Score

Top ROI 세그먼트 (버블 크고, 색 진하게 나온 그룹)
여성 청년층 (친구·커플 여행)
성장률↑, 만족도↑, 방문객 규모↑ → ROI Score 가장 높음
여성 30~40대 (자녀 동반 가능)
체류기간·지출 여력 높음, 성장률도 안정적 → ROI 상위권
가족 동반 (청소년 포함)
방문객 규모 크고 만족도도 준수 → ROI 점수 상위ROI 중간 세그먼트
일부 여성 기타 그룹: 규모는 있지만 성장률/만족도가 중간 수준
여성 청년(커플 외 단체): 반응은 있으나 ROI Score은 상위권 대비 다소 낮음ROI 낮은 세그먼트
액티브 시니어 남성: 방문객 규모가 작아 ROI Score 낮음
기타 소수 그룹: 성장률·만족도 모두 낮아 우선순위에서 제외
5. 마케팅 인사이트 도출
여성 청년층(친구·커플) → SNS·인플루언서 / K-뷰티·패션 연계
여성 30~40대 (자녀 동반 가능) → 쇼핑·패밀리 패키지 상품
가족 동반 청소년 포함 → 체험형 패밀리 콘텐츠 / 여행 패키지
남성(액티브 시니어) → 레저·스포츠·역사 체험 패키지
6. A/B 테스트 설계 & 시뮬레이션
1. 가설 설정
대상: 여성 청년층(친구·커플)
A안: 기존 메시지/광고
B안: 인플루언서·SNS 강조 메시지
목표: 전환율 +10% 이상 개선, p<0.05 유의
2. 표본 수 계산 (시뮬레이션)
from statsmodels.stats.power import NormalIndPower from statsmodels.stats.api import proportion_effectsize p1 = 0.020 # 현재 전환율 (2%) mde = 0.10 # +10% 개선 목표 p2 = p1 * (1 + mde) es = proportion_effectsize(p1, p2) n = NormalIndPower().solve_power(effect_size=es, alpha=0.05, power=0.8) print("그룹당 최소 노출수:", int(n))→ 결과: 그룹당 최소 노출수 80637 (시뮬레이션 기준)
3. 가상 데이터로 검정 (시뮬레이션)
from statsmodels.stats.proportion import proportions_ztest conv_A, imp_A = 950, 50000 # A안 전환수/노출수 conv_B, imp_B = 1100, 50000 # B안 전환수/노출수 z, p = proportions_ztest([conv_A, conv_B], [imp_A, imp_B]) cr_A, cr_B = conv_A/imp_A, conv_B/imp_B lift = (cr_B-cr_A)/cr_A print(f"CR_A={cr_A:.2%}, CR_B={cr_B:.2%}, Lift={lift:.1%}, p={p:.4f}")결과 (시뮬레이션): CR_A=1.9%, CR_B=2.2%, Lift=+15%, p<0.05
→ 메시지 B가 더 효과적일 가능성을 확인6주차 계획
5주차에서 우선 공략할 핵심 그룹을 도출했으므로,
6주차에는 이를 기반으로 실제 캠페인 상황을 가정한
A/B 테스트 시뮬레이션을 진행하여,
실행 가능성과 기대 효과를 검증할 예정이다.
주요 계획
• 가상 캠페인 로그 생성: 세그먼트별(A/B) 노출·전환·비용·매출 데이터 준비
• 통계 검정: 전환율 차이에 대한 z-test, Lift%, p-value 산출
• 효율 분석: CAC/ROAS 계산으로 비용 대비 효과 평가
• 의사결정 규칙 적용: p<0.05 & Lift≥+10% 충족 시 채택, 그렇지 않으면 재실험/메시지 조정추가 시뮬레이션
SEO & 검색광고 시뮬레이션 (고려)
SEM (검색광고)입력: 키워드, 월간검색량, CPC, 경쟁도
산출: 예상 노출수, 클릭수, 전환수, 비용 (예산 한도 내)
활용: 예산 대비 효율 키워드 선별SEO (검색최적화)
입력: 키워드 난이도(kd), 페이지 점수(콘텐츠/백링크/기술)
산출: 기대순위(rank_exp), Top10/Top3 진입 확률, 예상 클릭수/전환수
활용: 중장기적으로 SEO 투자 가치 있는 키워드 식별'마케터 관점의 데이터분석 > 데이터분석 프로젝트' 카테고리의 다른 글
6. 데이터 분석가 프로젝트 7주차 수행일지 (1) 2025.09.26 5. 데이터 분석가 프로젝트 6주차 수행일지 (0) 2025.09.19 3. 데이터 분석가 프로젝트 4주차 수행일지 (4) 2025.09.05 2. 데이터 분석가 프로젝트 3주차 수행일지 (9) 2025.08.26 1. 데이터 분석가 프로젝트 1~2주차 수행일지 (4) 2025.08.19