math
CHAPTER 6 / 15
읽기 약 2분
FUNCTION
비율과 퍼센트: RPM, CTR, 전환율의 수학
핵심 개념
비례식·백분율 — AdSense RPM·CTR·전환율·A/B 테스트의 수학적 기초.
본문
비율 vs 백분율
비율 (ratio): a:b 또는 a/b (1:2, 0.5)
백분율 (percent): 100을 기준으로 한 비율 (50%)
비례식 (proportion): a:b = c:d (4:5 = 8:10)백분율 변환
def to_percent(part, whole):
"""0~1 비율 → 백분율"""
return (part / whole) * 100
def from_percent(percent):
"""백분율 → 0~1 비율"""
return percent / 100
# 사용
print(to_percent(45, 200)) # 22.5
print(from_percent(22.5)) # 0.225
# 실전 — 절감률 계산
original = 100
discounted = 75
saving_rate = (original - discounted) / original * 100
print(f"절감률: {saving_rate}%") # 25.0%AdSense RPM 계산
# RPM = 1,000회 노출당 수익 (Revenue Per Mille)
def calculate_rpm(revenue: float, page_views: int) -> float:
return (revenue / page_views) * 1000
# 실전 데이터
def adsense_summary(revenue, page_views, ad_impressions, clicks):
rpm = calculate_rpm(revenue, page_views)
cpc = revenue / clicks if clicks > 0 else 0 # 클릭당 단가
ctr = (clicks / ad_impressions) * 100 if ad_impressions > 0 else 0
return {
'RPM': f'${rpm:.2f}',
'CPC': f'${cpc:.3f}',
'CTR': f'{ctr:.2f}%',
}
# 사용
result = adsense_summary(
revenue=42.50,
page_views=15000,
ad_impressions=22500,
clicks=180,
)
print(result)
# {'RPM': '$2.83', 'CPC': '$0.236', 'CTR': '0.80%'}CTR (Click-Through Rate)
# CTR = 클릭 수 / 노출 수 × 100
# 검색·광고·이메일 모두 동일 공식
def calculate_ctr(clicks: int, impressions: int) -> float:
if impressions == 0:
return 0.0
return (clicks / impressions) * 100
# 채널별 CTR 비교
channels = [
{'name': 'Google Ads', 'clicks': 1200, 'impressions': 80000},
{'name': 'Naver Ads', 'clicks': 800, 'impressions': 60000},
{'name': 'Facebook', 'clicks': 450, 'impressions': 75000},
{'name': 'Email', 'clicks': 350, 'impressions': 5000},
]
for c in channels:
c['ctr'] = calculate_ctr(c['clicks'], c['impressions'])
ranked = sorted(channels, key=lambda x: -x['ctr'])
for c in ranked:
print(f"{c['name']:12} CTR: {c['ctr']:.2f}%")
# Email CTR: 7.00%
# Google Ads CTR: 1.50%
# Naver Ads CTR: 1.33%
# Facebook CTR: 0.60%전환율 (Conversion Rate)
# 전환율 = 목표 액션 수행 수 / 방문자 수 × 100
# 단계별 깔때기 (Funnel) 분석
funnel = [
{'step': '랜딩 방문', 'count': 10000},
{'step': '제품 페이지', 'count': 4500},
{'step': '장바구니', 'count': 850},
{'step': '결제 시작', 'count': 420},
{'step': '결제 완료', 'count': 380},
]
print("\n=== 단계별 전환율 ===")
for i in range(1, len(funnel)):
prev = funnel[i-1]['count']
curr = funnel[i]['count']
rate = (curr / prev) * 100
drop = prev - curr
print(f"{funnel[i-1]['step']:12} → {funnel[i]['step']:12} {rate:5.1f}% (-{drop} 이탈)")
# 전체 전환율
overall = funnel[-1]['count'] / funnel[0]['count'] * 100
print(f"\n전체 전환율: {overall:.2f}%") # 3.80%
# 가장 큰 이탈 구간 찾기
biggest_drop = max(
range(1, len(funnel)),
key=lambda i: funnel[i-1]['count'] - funnel[i]['count'],
)
print(f"🔴 최대 이탈: {funnel[biggest_drop-1]['step']} → {funnel[biggest_drop]['step']}")비례식 — A/B 테스트 표본 수
# 변형 A: 1000명 중 50명 전환 → 5%
# 변형 B: 1000명 중 65명 전환 → 6.5%
# 향상률(lift) = (6.5 - 5) / 5 × 100 = 30%
def calculate_lift(rate_a: float, rate_b: float) -> float:
return (rate_b - rate_a) / rate_a * 100
lift = calculate_lift(0.05, 0.065)
print(f"향상률: {lift:.1f}%") # 30.0%
# 변형 B가 통계적으로 유의미한지는 다음 모듈에서 (Z-test)다음 챕터
CH.7 "지수와 로그" — 빅데이터 처리 시간과 알고리즘 복잡도의 언어.
AI 프롬프트
🤖 AI에게 잘 물어보는 법 — 모델·전략별 프롬프트
Claude
무료: Sonnet 4.6 / Pro $20/mo: Opus 4.6
내 GA4 데이터의 채널별 CTR/전환율을 분석해서 가장 효율적인 채널과 개선 우선순위를 알려줘.
ChatGPT
무료: GPT-5.5 / Plus $20/mo: GPT-5.5 Pro
한국 SaaS 5개의 결제 깔때기 전환율을 비교 분석해서 업계 평균과 우수 사례를 알려줘.
Gemini
무료: 2.5 Flash / Pro $19.99/mo: 3.1 Pro
내 매출 데이터에서 RPM/CPC/CTR/전환율을 6개월 추이로 분석하고 트렌드 + 예상 시나리오 3가지를 만들어줘.
Grok
무료: Grok 4.1 / SuperGrok $30/mo
2026년 한국 AdSense RPM 평균과 Niche별(개발/금융/요리) 차이를 실제 데이터로 솔직히 알려줘.
⭐ 이것만 기억하세요
비율과 퍼센트: RPM, CTR, 전환율의 수학은 이 3가지만 확실히 잡으세요
1.비율·백분율은 비즈니스 수학의 기본 — RPM·CTR·전환율·향상률 모두 단순 사칙연산
2.단계별 깔때기(Funnel) 분석은 비율 비교의 가장 실전적 응용 — 가장 큰 이탈 구간 발견이 핵심
3.다음 챕터 CH.7에서 지수와 로그 — 알고리즘 시간복잡도(O(log n))의 수학적 의미
공유하기
진행도 6 / 15