Home 광고 데이터
Post
Cancel

광고 데이터

데이터 전처리 & 분석

  • 데이터 : 2025.08.01 ~ 2025.08.29 (임의 생성 데이터)

  • random.randint, random.choice 활용

  • 지표 계산 : CTR, CPC, 전환율, CPA, ROAS, CPM

  • 전처리 : INF → NaN → 0 대체, 반올림 처리, 정수형 변환



sample

1
df.head(5)
date노출수click전환수costrevenueCTRCPC전환율CPAROASCPM
2025-08-01764224381986557510000.571984.344556591133
2025-08-0235795398279376301.112366.78347302619
2025-08-03208604081492606890001.962273.436615964439
2025-08-04581585192771534680000.891385.202649951230
2025-08-05743435376891271720000.721661.12148541931199



1
df.info()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Data columns (total 12 columns):
 #   Column   Non-Null Count  Dtype         
---  ------   --------------  -----         
 0   date     29 non-null     datetime64[ns]
 1   노출수      29 non-null     int64         
 2   click    29 non-null     int64         
 3   전환수      29 non-null     int64         
 4   cost     29 non-null     int64         
 5   revenue  29 non-null     int64         
 6   CTR      29 non-null     float64       
 7   CPC      29 non-null     int64         
 8   전환율      29 non-null     float64       
 9   CPA      29 non-null     int64         
 10  ROAS     29 non-null     int64         
 11  CPM      29 non-null     int64



1
df.describe()
.노출수click전환수costrevenueCTRCPC전환율CPAROASCPM
count2929.00000029.00000029.0000029.00000029.00000029.00000029.00000029.00000029.00000029.000000
mean48840.000000444.37931013.58620780454.37931105241.3793101.107931184.8275863.15689715024.241379137.3448282034.448276
min20769.000000358.0000001.00000061016.000000.0000000.490000113.0000000.2100002179.0000000.000000860.000000
25%31284.000000400.0000006.00000069268.0000051000.0000000.680000154.0000001.1800003839.00000068.0000001150.000000
50%48693.000000438.00000013.00000082002.0000099000.0000000.890000169.0000003.0200006615.000000131.0000001633.000000
75%64732.000000484.00000021.00000089127.00000155000.0000001.640000227.0000004.68000013714.000000225.0000002502.000000
max79735.000000539.00000029.00000099976.00000278000.0000002.230000268.0000007.84000093159.000000304.0000004771.000000
std20123.50943960.8759949.20604312358.1827366029.0278010.54334541.0044152.23711121905.02773888.5172611127.575578

전반적으로 평균과 중앙값이 유사하지만 CPA, CPM의 분산이 매우 크다.



시각화

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import plotly.graph_objects as go
from plotly.subplots import make_subplots

# 추세 분석 (광고비 vs 매출액)
fig1 = go.Figure()
fig1.add_trace(go.Scatter(x=df["date"], y=df["cost"], mode="lines+markers", name="광고비"))
fig1.add_trace(go.Scatter(x=df["date"], y=df["revenue"], mode="lines+markers", name="매출액"))
fig1.update_layout(title="일자별 광고비 vs 매출액", template="plotly_white")
fig1.update_yaxes(tickformat=',')
               
# 퍼널 분석 (노출 → 클릭 → 전환)
fig2 = go.Figure(go.Funnel(
    y=["노출수", "클릭수", "전환수"],
    x=[df["노출수"].sum(), df["click"].sum(), df["전환수"].sum()],
    textinfo="value+percent initial"
))
fig2.update_layout(title="퍼널 분석 (노출 → 클릭 → 전환)")
fig2.update_yaxes(tickformat=',')

# 비용 효율성 비교 (CPC, CPM, CPA)
fig3 = go.Figure()
fig3.add_trace(go.Bar(x=df["date"], y=df["CPC"], name="CPC"))
fig3.add_trace(go.Bar(x=df["date"], y=df["CPM"], name="CPM"))
fig3.add_trace(go.Bar(x=df["date"], y=df["CPA"], name="CPA"))
fig3.update_layout(barmode="group", title="주차별 비용 효율 비교", template="plotly_white")
fig3.update_yaxes(tickformat=',')

# 상관관계 분석 (클릭수 vs 전환수, 광고비 vs 매출액)
fig4 = make_subplots(rows=1, cols=2, subplot_titles=("클릭수 vs 전환수", "광고비 vs 매출액"))
fig4.add_trace(go.Scatter(
    x=df["click"], y=df["전환수"],
    mode="markers",
    text=df["date"].dt.strftime("%m-%d"), 
    hoverinfo="text+x+y",
    name="클릭→전환"), row=1, col=1
)
fig4.add_trace(go.Scatter(
    x=df["cost"], y=df["revenue"],
    mode="markers",
    text=df["date"].dt.strftime("%m-%d"),
    hoverinfo="text+x+y",
    name="광고비→매출"), row=1, col=2 
)
fig4.update_layout(title="상관관계 분석", template="plotly_white")
fig4.update_yaxes(tickformat=',')

# 성과 비율 시각화 (CTR, 전환율)
conversion_rate = df["전환수"].sum() / df["click"].sum()
fig5 = go.Figure(data=[
    go.Pie(labels=["CTR 평균", "전환율 평균"],
           values=[df["CTR"].mean(), conversion_rate])
])
fig5.update_layout(title="CTR & 전환율 비율 비교")

# 효율지표 종합 대시보드 (ROAS, CPC, CPA)
fig6 = make_subplots(rows=1, cols=3, subplot_titles=("ROAS", "CPC", "CPA"))
fig6.add_trace(go.Bar(x=df["date"], y=df["ROAS"], name="ROAS", marker_color="skyblue"), row=1, col=1)
fig6.add_trace(go.Bar(x=df["date"], y=df["CPC"], name="CPC", marker_color="orange"), row=1, col=2)
fig6.add_trace(go.Bar(x=df["date"], y=df["CPA"], name="CPA", marker_color="green"), row=1, col=3)
fig6.update_layout(title="효율지표 종합 대시보드", template="plotly_white")
fig6.update_yaxes(tickformat=',')

fig1.show()
fig2.show()
fig3.show()
fig4.show()
fig5.show()
fig6.show()

(1) 일자별 광고비 vs 매출액

newplot (11)

  • 광고비는 일정하지만 매출은 들쭉날쭉

  • 광고비가 매출을 직접적으로 설명하지 못함(영향x)

  • 매출이 갑자기 튀는 구간은 특정 이벤트/프로모션, 채널별 차이일 가능성이 높다.

“광고비 증가 = 매출 증가”라는 단순 구조가 아님




(2) 퍼널 분석 (노출 → 클릭 → 전환)

  • 노출 대비 클릭률, 클릭 대비 전환률 모두 낮음

  • 광고는 보이지만 흥미를 못 끎 → 타겟팅 문제 가능성

  • 클릭 후 전환 장벽이 큼 → 랜딩 페이지 UX, 구매 과정 문제 가능성

개선 포인트: 타겟 세분화, 랜딩 페이지 개선




(3) 비용 효율성 (CPC, CPM, CPA)

  • CPC 낮음 → 클릭 자체는 잘 유도됨

  • CPM 중간 → 노출 대비 비용은 보통

  • CPA 높음 → 전환수가 적어 단위 비용이 급등

구조적 문제 : 클릭은 잘 되는데, 전환이 안 되는 병목 존재




(4) 상관관계 분석

  • 클릭수 ↔ 전환수 : 강한 선형 패턴 없음 → 상관성 낮음

  • 광고비 ↔ 매출액 : 상관성 약함 → 광고비 증액이 매출 증가를 보장하지 않음(다른 외부 요인 영향 큼)

광고비 자체보다 소재·채널·타겟팅 요인·이벤트 등 외부요인이 더 중요한 변수일 수 있다.




(5) CTR & 전환율 비교

  • CTR 평균 > 전환율 평균

  • 광고 자체는 주목을 잘 받지만(CTR 높음), 클릭 후 기대 행동으로 이어지지 않음(전환율 낮음).




(6) 효율지표 종합 대시보드 (ROAS, CPC, CPA)

  • ROAS: 일정치 않음 → 광고 효율 불안정(투자 대비 효율 일정x)

  • CPC: 안정적 → 클릭 단가는 유지

  • CPA: 급등락 반복 → 전환 효율이 가장 큰 문제

  • 클릭은 충분히 발생하나 전환 최적화 부족 → CPA 비정상적으로 높음(전환 효율이 개선 포인트)




정리

  • 광고 클릭은 잘 발생하지만 전환으로 이어지지 않아 CPA가 상승

  • 광고비 대비 매출의 변동성이 크고 불안정해 효율성이 낮음

  • CTR은 양호하지만 전환율이 낮아 타겟팅 정교화와 랜딩 경험 등 개선 필요

  • 광고비와 성과 간 상관관계가 약해 비용 증가만으로 성과를 보장하지 않음

→ 따라서 광고 성과 개선의 핵심은 전환 최적화(CRO) 와 세분화된 타겟팅 전략이다.

CTR이 높은 점을 보면 광고 자체의 매력도는 충분하다. → 광고는 소비자에게 잘 전달되고 있다.

그러나 실제 구매 전환 성과는 부족한 상황이다.

This post is licensed under CC BY 4.0 by the author.