▼ 프로젝트 기획안
1. 프로젝트 명
- 효과적인 미디어 플래닝을 위한 마케팅 성과 대시보드
2. 배경 및 문제정의
1) 배경
- 스파르타코딩클럽은 2025년부터 매출 증대를 위한 중장기적인 목표로 lead(잠재고객) 확보 마케팅 캠페인을 진행중
- 2025년 기준 전년대비 광고비 2.7배 가량 투여하며 공격적으로 마케팅한 결과, 총 리드수 2.3배 개선된 3.3만여 명 확보. lead CVR은 0.8%p 개선된 4.01%, CPL은 2.3만원대 기록
- 2026년은 광고 캠페인을 통해 지속적으로 잠재고객을 확보함과 동시에, 매체별 웹사이트 퍼널 분석으로 매출까지 이어지는 고관여 유저의 비중을 높여가고자 함
2) 문제정의
- 2026년 메인 KPI는 lead CVR 4.34%, CPL 18,434원, 서브 KPI는 구매 완료 수 434,520건
└ 2026년 11월 1일 기준으로 KPI 미달인 lead CVR 개선을 목표로 11~12월 미디어 플래닝 전략 마련 필요
3. 프로젝트 목적
리드 전환율(lead CVR) 증대를 위한 2026년도 11월 - 12월 미디어 플래닝 전략 마련
4. 세부 분석 주제
- 광고타입별(or 소스/미디엄별) 리드수 및 lead CVR 성과 분석
- 캠페인별 리드수 및 lead CVR 성과 분석
- 퍼널 분석을 통한 랜딩페이지 이탈률 및 구매 CVR 성과 분석
1. 데이터 설명
1) campaign_data.xlsx
- 기간: 2024-01-01~2026-10-31
- 광고 성과와 리드 전환 효율이 담긴 데이터셋
2) conversion_data.xlsx
- 랜딩페이지 내 이벤트 수와 시간대, 매체 정보가 담긴 데이터셋
2. 데이터 전처리
1) 파이썬을 활용한 카테고리 분류 수정
- (문제) 카테고리 분류가 미진한 부분이 있어 EDA 시 인사이트 도출에 부정적 영향
① 캠페인 데이터셋에 Digital Source(광고타입)의 other 비중이 높고,
② Medium의 유니크 칼럼 수가 많아 유의미한 형태로 정보 취합이 어려움
: ex. Medium의 vendoremail, vendor email, email, email blast 등 > email로 분류 수정 후, 해당 값 상위 카테고리는 Digital Souce의 Direct Media로 변경 가능
- 파이썬 replace() 함수를 원본 RAW 파일 수정
## 라이브러리/파일 불러오기
import pandas as pd
df = pd.read_excel('D:/project/campaign_data.xlsx')
## Medium 칼럼값 변경
df['Medium'] = df['Medium'].replace(to_replace=['email blast', 'vendoremail', 'vendor email'], value='email')
df['Medium'] = df['Medium'].replace(to_replace=['live web seminar', 'web seminar', 'seminar'], value='webinar')
df['Medium'] = df['Medium'].replace(to_replace=['syndicated bulletin'], value='syndicated content')
## Digital Source 칼럼값 변경
# Other > Direct media 로 변경
cond = (df['Digital Source']=='Other') & ((df['Medium']=='email') | (df['Medium']=='webinar')| (df['Medium']=='syndicated content')| (df['Medium']=='newsletter'))
df.loc[cond, 'Digital Source'] = df.loc[cond, 'Digital Source'].replace(to_replace='Other', value='Direct Media')
# Other > Paid Social 로 변경
cond2 = (df['Digital Source']=='Other') & ((df['Medium']=='social') | (df['Medium']=='paid social'))
df.loc[cond2, 'Digital Source'] = df.loc[cond2, 'Digital Source'].replace(to_replace='Other', value='Paid Social')
# Paid Social > Direct media 로 변경
cond3 = (df['Digital Source']=='Paid Social') & ((df['Medium']=='email') | (df['Medium']=='webinar'))
df.loc[cond3, 'Digital Source'] = df.loc[cond3, 'Digital Source'].replace(to_replace='Paid Social', value='Direct Media')
# Other > paid search로 변경
cond4 = (df['Digital Source']=='Other') & (df['Medium']=='paid search')
df.loc[cond4, 'Digital Source'] = df.loc[cond4, 'Digital Source'].replace(to_replace='Other', value='Paid Search')
## 처리내역 조회하기
df['Medium'].unique()
#array(['display', 'paid search', 'email', 'newsletter',
# 'syndicated content', 'paid social', 'webinar', 'sponsorship',
# 'social', 'custom article', 'organic social', 'microsite',
# 'partner', 'video', 'banners', 'telemarketing'], dtype=object)
df[df['Digital Source']=='Other']['Medium'].unique()
# array(['sponsorship', 'custom article', 'display', 'partner', 'telemarketing'], dtype=object)
df[df['Digital Source']=='Direct Media']['Medium'].unique()
# array(['email', 'display', 'newsletter', 'syndicated content', 'webinar', 'sponsorship', 'microsite', 'banners'], dtype=object)
df[df['Digital Source']=='Paid Social']['Medium'].unique()
# array(['paid social', 'social', 'organic social'], dtype=object)
df[df['Digital Source']=='Paid Search']['Medium'].unique()
# array(['paid search'], dtype=object)
## 파일 내보내기
df.to_excel("campain 수정.xlsx", index=False)
2) 태블로를 활용한 전처리 기준 적용 방법
- 데이터 전처리 기준
└ impressions 칼럼이 null인 경우 제외
└ clicks > impressions, leads > clicks인 경우 제외
└ 전환 데이터셋에 날짜가 2025-02-29일인 경우 제외 (실제로 없는 날짜)
- 계산식을 활용한 전처리 기준 적용
① 계산식 작성
IF (isnull([Impressions])
OR ([Date (conversion)]= DATE('2025-02-29'))
OR ([Clicks]>[Impressions])
OR ([Leads]>[Clicks]))
THEN "False" ELSE "True" END
② 필터 적용
(방법1) 생성된 계산식을 필터로 옮기고 'True' 값만 선택 & 해당 필터 워크시트 전체에 적용
(방법2) 데이터 원본에 필터 추가 (원본 자체에 적용되므로 필터에는 추가할 필요 없음)
'TIL' 카테고리의 다른 글
[240306] 실전 프로젝트: 태블로 퍼널 차트(Funnel Chart) (0) | 2024.03.07 |
---|---|
[240305] 실전 프로젝트: 태블로 시간대 영역 그래프 및 월별 주번호(week) 생성하여 캘린더 차트 만들기 (0) | 2024.03.05 |
[240229] SQL: 코드카타 145 & 파이썬: 코드카타 39 (0) | 2024.02.29 |
[240228] SQL: 코드카타 143~144 & 파이썬: 코드카타 38(map, index, strip) (4) | 2024.02.28 |
[240227] SQL: 코드카타 141~142 & 파이썬: 코드카타 37 (1) | 2024.02.27 |