데이터 분석 part

마케팅 데이터의 주요 지표 분석 (보고서 실습)

bleufonce 2025. 2. 27. 00:52

 

마케팅 데이터의 주요 지표

  • 마케팅 데이터 분석에서 주요 지표를 활용하면 캠페인의 효과를 수치적(정량적)으로 평가할 수 있다. 이를 바탕으로 향후 전략을 수립하는데 활용할 수 있다.
  • 각 지표를 종합적으로 분석하여 트래픽 증가 → 전환율 최적화 → 광고 효율성 개선 → 고객 유지 및 충성도 향상이라는 구조를 구축하는 것이 중요하다.
  • 마케팅 목표에 맞는 주요 지표를 설정하고, 지속적으로 모니터링하며 최적화해야한다.

 

 

트래픽 관련 지표

  • 방문자 수
    • 특정 기간 동안 웹사이트를 방문한 총 사용자 수
    • 신규 방문자 vs. 재방문자 비교 분석 가능
  • 페이지뷰
    • 방문자가 특정 웹사이트에서 본 페이지 수
    • 페이지뷰가 많을수록 사용자가 많은 콘텐츠를 소비했음을 의미
  • 세션
    • 사용자가 웹사이트를 방문해 특정 시간 동안 머무른 활동 단위
    • 평균 세션 길이를 분석해 사용자의 관심도를 평가
  • 이탈률
    • 방문자가 한 페이지를 본 후 바로 이탈하는 비율
    • 이탈률이 높으면 콘텐츠 개선이 필요할 가능성이 있음

 

 

전환 관련 지표

  • 전환율
    • 방문자 중 실제 구매, 회원가입, 문의 등의 행동을 한 비율
    • 웹사이트, 랜딩 페이지, 광고 캠페인의 성과를 평가하는 핵심 지표
    • 계산식:

  • 이탈률
    • 특정 페이지에서 사용자가 웹사이트를 떠나는 비율
    • 특정 페이지에서 이탈률이 높은 경우, UX/UI 개선 필요
  • 장바구니 이탈율
    • 전자상거래에서 구매 직전 단계까지 갔다가 결제하지 않고 이탈한 비율
    • 결제 프로세스 최적화를 통해 개선 가능
    • 계산식:

 

 

 

광고 성과 관련 지표

  • 클릭률 (CTR)
    • 광고 노출 대비 클릭 수 비율
    • CTR이 높으면 광고가 효과적이라는 의미
    • 계산식:

  • 광고 비용 대비 매출 (ROAS)
    • 광고비 대비 매출 성과를 측정하는 지표
    • ROAS가 높을수록 광고 투자 대비 효과가 큼
    • 계산식:

  • 고객 획득 비용 (CAC)
    • 신규 고객 1명을 획득하는 데 소요된 비용
    • CAC가 낮을수록 마케팅 효율성이 높음
    • 계산식:

 

 

 

고객 유지 관련 지표

  • 고객 유지율 (CRR)
    • 기존 고객이 계속해서 서비스를 이용하는 비율
    • 고객 경험 개선 및 충성도 프로그램 강화로 향상 가능
    • 계산식:

  • 반복 구매율 (RPR)
    • 고객이 제품을 한 번 이상 구매하는 비율
    • VIP 고객 프로그램을 활용해 증가 가능
    • 계산식:

  • 순추천고객지수 (NPS)
    • 고객이 브랜드를 추천할 가능성을 평가하는 지표
    • 높은 NPS는 브랜드 충성도가 높다는 의미
    • 일반적으로 0~10점 척도로 측정되며, 다음과 같이 분류됨:
      • 0~6점: 비추천 고객 (Detractors)
      • 7~8점: 중립 고객 (Passives)
      • 9~10점: 추천 고객 (Promoters)
    • 계산식:

 

 

 

소셜 미디어 성과 관련 지표

  • 팔로워 증가율
    • 소셜 미디어 팔로워 수가 증가하는 속도를 측정
    • 계산식:

  • 참여율 (Engagement Rate)
    • 사용자가 콘텐츠에 반응한 비율 (좋아요, 댓글, 공유 등)
    • 콘텐츠가 타겟 고객에게 얼마나 잘 도달했는지 평가 가능
    • 계산식:

  • 도달률 (Reach Rate)
    • 게시물이 얼마나 많은 사용자에게 도달했는지를 측정
    • 계산식:

 

 

 

 

 

 

 

방문자 수와 페이지뷰 분석

- 캠페인 A와 B중 어떤것이 더 많은 방문자와 페이지뷰를 유도했는지 분석

import pandas as pd
import matplotlib.pyplot as plt

# 하드코딩된 방문자 및 페이지뷰 데이터
data_visits = {
    "Date": ["2025-01-01", "2025-01-02", "2025-01-03", "2025-01-04", "2025-01-05"],
    "Campaign": ["A", "A", "B", "B", "A"],
    "Visitors": [5000, 5200, 7000, 6800, 5500],
    "Page_Views": [12000, 13000, 18000, 17500, 12500]
}

df_visits = pd.DataFrame(data_visits)

# 데이터 출력
display(df_visits)

# 방문자 및 페이지뷰 시각화
plt.figure(figsize=(8, 5))
plt.plot(df_visits["Date"], df_visits["Visitors"], label="Visitors", marker="o", linestyle="dashed")
plt.plot(df_visits["Date"], df_visits["Page_Views"], label="Page Views", marker="s", linestyle="dotted")
plt.xlabel("Date")
plt.ylabel("Count")
plt.title("Visitors & Page Views per Campaign")
plt.legend()
plt.grid()
plt.show()

  • 2025년 1월 3일에  방문자수와 페이지뷰 수가 급증한 것을 알 수 있다.
  • 2025년 1월 4일과 1월 5일사이에 페이지뷰수는 급격하게 줄고 방문자수도 줄어든것을 알 수 있다.
  • B캠페인을 시행하였을시 방문자수와 페이지뷰수가 급증하였기에 A와 B중에 B캠페인이 더 효과적인 것을 확인할 수 있는 그래프이다.
  • B 캠페인이 끝나고 A캠페인에서는 페이지뷰수가 급감한것이 확인되므로 B 캠페인은 사용자가 관심을 가질만한 콘텐츠가 더 많은 것으로 추측된다.

 

 

 

전환율과 광고비 분석

- 광고를 집행하면서 광고비에 따라 전환율이 얼마나 영향을 받는지 분석

# 하드코딩된 광고비 및 전환율 데이터
data_conversion = {
    "Date": ["2025-01-01", "2025-01-02", "2025-01-03", "2025-01-04", "2025-01-05"],
    "Ad_Spend ($)": [1000, 2000, 1500, 2500, 3000],
    "Conversion_Rate (%)": [2.5, 3.8, 3.0, 4.5, 5.2]
}

df_conversion = pd.DataFrame(data_conversion)

display(df_conversion)

# 광고비와 전환율 시각화
plt.figure(figsize=(8, 5))
plt.scatter(df_conversion["Ad_Spend ($)"], df_conversion["Conversion_Rate (%)"], color="red", alpha=0.7)
plt.xlabel("Ad Spend ($)")
plt.ylabel("Conversion Rate (%)")
plt.title("Ad Spend vs. Conversion Rate")
plt.grid()
plt.show()

  • 광고비를 많이 투자할수록 전환율이 정비례로 증가하는 추세를 보이고 있다.
  • 따라서 더 많은 광고예산을 확보한다면 지속적으로 전환율이 증가할 것을 기대할 수 있다.
  • 이외 다른 저예산의 추가방안을 생각해보면 좋을듯하다.

 

 

 

ROAS(광고 수익률) 분석

- 광고 비용을 늘릴수록 ROAS가 증가하는지 분석

# 하드코딩된 광고비 및 ROAS 데이터
data_roas = {
    "Date": ["2025-01-01", "2025-01-02", "2025-01-03", "2025-01-04", "2025-01-05"],
    "Ad_Spend ($)": [1000, 2000, 3000, 4000, 5000],
    "Revenue ($)": [5000, 9000, 14000, 18000, 22000]
}

df_roas = pd.DataFrame(data_roas)

# ROAS 계산 추가
df_roas["ROAS"] = (df_roas["Revenue ($)"] / df_roas["Ad_Spend ($)"]).round(2)

display(df_roas)

# 광고비 대비 ROAS 시각화
plt.figure(figsize=(8, 5))
plt.plot(df_roas["Ad_Spend ($)"], df_roas["ROAS"], marker="o", linestyle="dashed", color="blue")
plt.xlabel("Ad Spend ($)")
plt.ylabel("ROAS")
plt.title("Ad Spend vs. ROAS")
plt.grid()
plt.show()

  • 1월 2일 광고비는 2배로 증가하였는데 오히려 ROAS는 0.5% 감소하는 모습을 보여서 해당 광고를 정밀점검해봐야할 필요가 있다.
  • 1월 3일 광고비가 1000달러 증가했지만 0.18%로 약소하게 증가하는 모습을 보였다.
  • 1월 3일~ 5일 광고비가 1000씩 증가하였지만 ROAS가 지속적으로 감소하고 있다.
  • 결과적으로 광고비 투자 대비 매출효율이 많이 낮아 대처방안이 필요하다.

 

 

 

신규 고객 수와 CAC 분석

- 광고비 대비 신규 고객 증가가 얼마나 효율적인지 분석

# 하드코딩된 신규 고객 및 CAC 데이터
data_cac = {
    "Date": ["2025-01-01", "2025-01-02", "2025-01-03", "2025-01-04", "2025-01-05"],
    "New_Customers": [100, 200, 150, 250, 300],
    "Ad_Spend ($)": [2000, 4000, 3500, 5000, 6000]
}

df_cac = pd.DataFrame(data_cac)

# CAC 계산 추가
df_cac["CAC ($)"] = (df_cac["Ad_Spend ($)"] / df_cac["New_Customers"]).round(2)

display(df_cac)

# 신규 고객 수 대비 CAC 시각화
plt.figure(figsize=(8, 5))
plt.scatter(df_cac["New_Customers"], df_cac["CAC ($)"], color="green", alpha=0.7)
plt.xlabel("New Customers")
plt.ylabel("CAC ($)")
plt.title("New Customers vs. CAC")
plt.grid()
plt.show()

  • 1월 2일을 제외한 나머지 날은 고객획득비용이 20달러로 같은 추세를 보이고 있다.
  • 1월 3일 고객 획득비용이 급증한 이유를 분석해봐야할 필요가 있다.
  • 광고비용 대비 고객수가 일정하게 늘어나고 있는데 1월 3일 광고비용대비 고객획득 효율이 높은것으로 나타나고 있다.
  • 이를 분석하여 적정수준의 광고비를 유지하는 것이 중요하다.

 

 

 

SNS 팔로워 증가 분석

- SNS 활동이 팔로워 증가에 효과적인지 분석

# 하드코딩된 SNS 팔로워 증가 데이터
data_followers = {
    "Date": ["2025-01-01", "2025-01-02", "2025-01-03", "2025-01-04", "2025-01-05"],
    "Posts": [3, 4, 2, 5, 6],  # 하루 동안 올린 게시글 수
    "Followers_Growth": [50, 80, 45, 100, 120]  # 하루 동안 증가한 팔로워 수
}

df_followers = pd.DataFrame(data_followers)

display(df_followers)

# SNS 활동과 팔로워 증가율 시각화
plt.figure(figsize=(8, 5))
plt.scatter(df_followers["Posts"], df_followers["Followers_Growth"], color="purple", alpha=0.7)
plt.xlabel("Posts per Day")
plt.ylabel("Followers Growth")
plt.title("Posts vs. Followers Growth")
plt.grid()
plt.show()

  • 팔로워수는 지속적 우상향 추세를 보이고 있다.
  • 1월 3일 게시글을 2개만 올렸음에도 불구하고 팔로워 성장수가 급증한것으로 보았을때 1월 3일 올린 게시글의 컨텐츠가 우수했거나 혹은 다른 추가 요인이 있는지 분석해볼 필요가 있다.

 

 

 

 

 

< 지표 분석 연습 1 >

 

coupang.csv
0.08MB

 

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# CSV 파일 로드
csv_filename = "coupang.csv"
df = pd.read_csv(csv_filename)

# 데이터 확인
print(df.head())  # 상위 5개 행 출력
print(df.info())  # 데이터 타입 및 결측값 확인

 

# 방문자 수 및 페이지뷰 트렌드
plt.figure(figsize=(12, 5))
plt.plot(df["날짜"], df["방문자 수"], label="방문자 수", marker="o", linestyle="dashed")
plt.plot(df["날짜"], df["페이지뷰 수"], label="페이지뷰 수", marker="s", linestyle="dotted")
plt.xlabel("날짜")
plt.ylabel("수치")
plt.title("방문자 수 & 페이지뷰 트렌드")
plt.legend()
plt.xticks(rotation=45)
plt.grid()
plt.show()

# 페이지뷰수에 비해 방문자수는 매우 낮은 수치를 보여주고 있다.
# 방문자수는 시간이 지나도 일정한 수치를 보여주고 있다.
# 방문자수 대비 페이지뷰 수치가 높다는 것으로 보아 관심콘텐츠가 많아 고객의 눈길을 끌고 있는 요소가 많은 것으로 보여진다.
# 방문자수를 늘리기 위한 프로모션을 개최하는 것이 필요해보인다.

 

# 광고비 vs. ROAS 분석
plt.figure(figsize=(8, 5))
plt.scatter(df["광고비 ($)"], df["광고 수익률 (ROAS)"], color="red", alpha=0.7)
plt.xlabel("광고비 ($)")
plt.ylabel("ROAS (광고 수익률)")
plt.title("광고비 vs. ROAS")
plt.grid()
plt.show()

# 광고비 대비 매출은 감소하다가 광고비가 10000달러 이상 넘어가는 구간에서는 일정한 모습을 보여주고 있다.
# 단순히 광고비용을 높이는 것이 아닌 광고효율을 위한 근본적인 대책마련이 필요해보인다.
# 기존 광고캠페인을 수정하는 것이 낫다고 판단됨.

 

# 신규 고객 수 vs. CAC 분석
plt.figure(figsize=(8, 5))
plt.scatter(df["신규 고객 수"], df["고객 획득 비용 (CAC)"], color="blue", alpha=0.7)
plt.xlabel("신규 고객 수")
plt.ylabel("CAC (고객 획득 비용)")
plt.title("신규 고객 수 vs. CAC")
plt.grid()
plt.show()

# 초기에는 신규 고객수 증가 대비 고객획득비용이 높았지만
# 고객 수가 1000명을 넘어가자 고객획득비용이 적은비용으로 안정적으로 유지되는 모습을 보여주고 있다.

 

# 마케팅 캠페인별 전환율 비교
plt.figure(figsize=(10, 5))
sns.boxplot(x="마케팅 캠페인", y="전환율 (%)", data=df)
plt.xlabel("마케팅 캠페인")
plt.ylabel("전환율 (%)")
plt.title("마케팅 캠페인별 전환율 비교")
plt.grid()
plt.show()

# 각 마케팅별 전환율의 범위는 비슷한 양상을 보이고 있다.
# 각 마케팅 별로 이상치는 확인되지 않는다.
# 가장 중앙값이 큰 마케팅 캠페인은 SEO, SNS이다.
# Paid Ads 마케팅 캠페인은 하위 25%의 전환율의 낮아서 낮은 성과를 보이는 것 획인된다.
# Paid Ads의 광고 효율을 다시 분석해볼 필요가 있다.

 

# 이탈률과 전환율 관계 분석
plt.figure(figsize=(8, 5))
plt.scatter(df["이탈률 (%)"], df["전환율 (%)"], color="green", alpha=0.7)
plt.xlabel("이탈률 (%)")
plt.ylabel("전환율 (%)")
plt.title("이탈률 vs. 전환율")
plt.grid()
plt.show()

# 이탈률과 전환율의 데이터가 특정한 패턴이 없이 고르게 분포된 모습을 보여주고 있다.
# 이탈률과 전환율이 명확한 관계를 보여주고 있지 않기 때문에
# 다른 요인들이 영향을 주는지 추가적인 분석을 할 필요가 있음.

 

 

분석을 토대로 보고서 작성 연습

 

 

 

 

 

 

 

< 지표 분석 연습 2 >

 

lotteon.csv
0.16MB

 

 

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.read_csv("lotteon.csv")

print(df.head())
print(df.info())
print(df.columns)

 

# 월별 방문자 수 및 페이지뷰 수 추세
import matplotlib.pyplot as plt

# 날짜 데이터를 datetime 형식으로 변환
df["날짜"] = pd.to_datetime(df["날짜"])

# 월별로 방문자 수와 페이지뷰 수의 합계를 계산
df_monthly = df.resample('M', on='날짜').sum()

# 그래프 그리기
plt.figure(figsize=(12, 5))
plt.plot(df_monthly.index, df_monthly["방문자 수"], label="방문자 수", marker="o", linestyle="dashed")
plt.plot(df_monthly.index, df_monthly["페이지뷰 수"], label="페이지뷰 수", marker="s", linestyle="dotted")
plt.xlabel("날짜")
plt.ylabel("수치")
plt.title("방문자 수 및 페이지뷰 수 월별 추세")
plt.legend()
plt.grid()
plt.show()

# 월별 방문자수는 페이지뷰수에 비해 비교적 일정한 모습을 보여주고 있다.
# 페이지뷰 수는 등락폭이 보이는 구간이 있으니 해당월에 시행한 프로모션이나 광고, 이벤트를 체크하여 원인을 분석한다.
# 방문자수의 증가량이 부족하므로 방문자수를 늘리기 위한 특별 프로모션이 필요함.

 

# 마케팅 캠페인별 평균 전환율
import seaborn as sns

campaign_conversion = df.groupby("마케팅 캠페인")["전환율 (%)"].mean().sort_values()

plt.figure(figsize=(10, 5))
sns.barplot(x=campaign_conversion.index, y=campaign_conversion.values, palette="Blues_r")
plt.xlabel("마케팅 캠페인")
plt.ylabel("평균 전환율 (%)")
plt.title("마케팅 캠페인별 평균 전환율 비교")
plt.grid()
plt.show()

# 마케팅 캠페인별 평균전환율은 채널별로 비슷한 비율을 보여주고 있다.
# 가장 평균전환율이 높은 캠페인은 Paid Ads이다.
# Referral 캠페인의 평균 전환률이 가장 낮게 나타났다.
# Paid Ads의 캠페인 전략을 분석하여 효율이 높은 방식을 Referral 캠페인에 접목시킨다.

 

# 광고비 vs ROAS
plt.figure(figsize=(8, 5))
plt.scatter(df["광고비 ($)"], df["광고 수익률 (ROAS)"], color="red", alpha=0.7)
plt.xlabel("광고비 ($)")
plt.ylabel("ROAS (광고 수익률)")
plt.title("광고비 vs. ROAS")
plt.grid()
plt.show()

# 광고비 대비 매출은 감소하다가 광고비가 10000달러 이상 넘어가는 구간에서는 일정한 모습을 보여주고 있다.
# 광고비용은 상승하지만 광고비 대비 매출은 상승하지 못하고 있다.
# 따라서 광고비용의 적정선을 분석하여 과도한 광고비용 지출을 지양해야 할 것으로 판단된다.
# 단순히 광고비용을 높이는 것이 아닌 광고효율을 위한 근본적인 대책마련이 필요해 보인다.
# 기존의 광고캠페인을 점검하여 수정하는 것이 낫다고 판단됨.

 

# 신규 고객수 vs CAC
plt.figure(figsize=(8, 5))
plt.scatter(df["신규 고객 수"], df["고객 획득 비용 (CAC)"], color="blue", alpha=0.7)
plt.xlabel("신규 고객 수")
plt.ylabel("CAC (고객 획득 비용)")
plt.title("신규 고객 수 vs. CAC")
plt.grid()
plt.show()

# 초기에는 신규 고객을 유치하기 위한 고객획득비용이 높지만 고객수가 500명을 넘어감에 따라 비용이 안정화되는 모습을 보여주고 있다.
# 고객수가 1000명을 넘어가는 구간 이후부터는 적은 고객획득비용으로도 지속적으로 신규고객을 유치하고 있는 모습을 보여준다.
# 고객 유치를 위한 마케팅 캠페인의 효율성이 높은 것으로 판단됨.

 

# 이탈률 vs 전환율
import numpy as np

correlation = np.corrcoef(df["이탈률 (%)"], df["전환율 (%)"])[0, 1]
print(f"이탈률과 전환율의 상관계수: {correlation:.2f}")

plt.figure(figsize=(8, 5))
plt.scatter(df["이탈률 (%)"], df["전환율 (%)"], color="green", alpha=0.7)
plt.xlabel("이탈률 (%)")
plt.ylabel("전환율 (%)")
plt.title("이탈률 vs. 전환율")
plt.grid()
plt.show()

# 이탈률과 전환율의 데이터가 특정한 패턴이 없이 고르게 분포된 모습을 보여주고 있다.
# 이탈률과 전환율이 명확한 관계를 보여주고 있지 않기 때문에 다른 요인들이 영향을 주는지 추가적인 분석을 할 필요가 있음.
# 각 채널별로 이탈률과 전환율을 각각 확인해보아야 할 필요가 있다.

 

# 마케팅 캠페인별 평균 클릭률 비교
campaign_ctr = df.groupby("마케팅 캠페인")["클릭률 (%)"].mean().sort_values()

plt.figure(figsize=(10, 5))
sns.barplot(x=campaign_ctr.index, y=campaign_ctr.values, palette="Reds_r")
plt.xlabel("마케팅 캠페인")
plt.ylabel("평균 클릭률 (%)")
plt.title("마케팅 캠페인별 평균 클릭률 비교")
plt.grid()
plt.show()

# email 마케팅 캠페인의 평균클릭률이 가장 높은것으로 확인된다.
# Referral과 SEO는 상대적으로 평균 클릭률이 낮은 추세를 보이고 있다.
# 유용하고 정보가 풍부한 콘텐츠 개발하여 웹사이트의 검색엔진 순위를 높인다.
# 사용자가 자주 검색하는 키워드를 찾아서 웹사이트 콘텐츠에 반영한다.
# 친구추천제도를 개편하여 Referral 마케팅의 클릭률을 높인다.

 

# 마케팅 캠페인별 ROAS 비교
campaign_roas = df.groupby("마케팅 캠페인")["광고 수익률 (ROAS)"].mean().sort_values()

plt.figure(figsize=(10, 5))
sns.barplot(x=campaign_roas.index, y=campaign_roas.values, palette="Purples_r")
plt.xlabel("마케팅 캠페인")
plt.ylabel("평균 ROAS")
plt.title("마케팅 캠페인별 ROAS 비교")
plt.grid()
plt.show()

# Referral 캠페인의 광고비용대비 매출이 가장 높은 것으로 나타났다.
# Paid Ads는 가장 낮은 ROAS 지표를 보여주고 있다.
# Paid Ads 고객을 분석하고 세분화하여 맞춤 타겟팅 광고를 실행한다.이미 관심을 가진 사용자들에게 광고를 다시 보여줌으로써 리타겟팅한다.

 

# 장바구니 이탈율이 가장 높은 날짜와 낮은날짜 비교
high_abandonment = df.sort_values(by="장바구니 이탈율 (%)", ascending=False).head(5)
low_abandonment = df.sort_values(by="장바구니 이탈율 (%)", ascending=True).head(5)

display("장바구니 이탈율 높은 날짜:")
display(high_abandonment[["날짜", "장바구니 이탈율 (%)", "전환율 (%)", "광고비 ($)"]])

display("\n장바구니 이탈율 낮은 날짜:")
display(low_abandonment[["날짜", "장바구니 이탈율 (%)", "전환율 (%)", "광고비 ($)"]])


# 장바구니 이탈율이 높은 날짜
# 장바구니 이탈률이 높은 날짜들은 대부분 전환율이 상대적으로 낮은 경우가 많다. 예를 들어 2026-01-04와 2024-03-27을 보면 장바구니 이탈률이 매우 높은데, 이들 날짜의 전환율은 5.68%와 8.71%로 낮은 편이다.
# 장바구니 이탈률이 높은 날짜들에서는 광고비가 상당히 높다. 예를 들어, 2026-01-04는 광고비가 23,570달러로 매우 높다. 광고 타겟팅이 정확하지 않거나, 광고에서 유입된 고객들이 구매 전환으로 이어지지 않았을 수 있음.

# 장바구니 이탈율이 낮은 날짜
# 장바구니 이탈률이 낮은 날짜들은 전환율이 비교적 높은 경우가 많다. 예를 들어, 2024-07-28과 2027-08-27은 장바구니 이탈률이 매우 낮고, 전환율은 6.17%, 8.13%로 장바구니 이탈률에 비해 상대적으로 높은 수치이다.

 

# SNS팔로워 증가 수 vs 신규 고객 수

df = df.rename(columns={'기존 컬럼 이름': 'SNS 팔로워 증가 수'})

plt.figure(figsize=(8, 5))
plt.scatter(df["SNS 팔로워 증가 수"], df["신규 고객 수"], color="purple", alpha=0.7)
plt.xlabel("SNS 팔로워 증가 수")
plt.ylabel("신규 고객 수")
plt.title("SNS 팔로워 증가 수 vs. 신규 고객 수")
plt.grid()
plt.show()

# SNS팔로워 증가수와 신규고객수의 데이터가 특정한 패턴이 없이 고르게 분포된 모습을 보여주고 있다.
# SNS팔로워 증가수와 신규고객수가 명확한 관계를 보여주고 있지 않기 때문에 다른 요인들이 영향을 주는지 추가적인 분석을 할 필요가 있음.

 

# 월별 평균 방문자 수 및 전환율 변화

df["날짜"] = pd.to_datetime(df["날짜"])

df["월"] = df["날짜"].dt.to_period("M")

monthly_avg = df.groupby("월")[["방문자 수", "전환율 (%)"]].mean()

plt.figure(figsize=(12, 5))
plt.plot(monthly_avg.index.astype(str), monthly_avg["방문자 수"], label="평균 방문자 수", marker="o")
plt.plot(monthly_avg.index.astype(str), monthly_avg["전환율 (%)"] * 1000, label="평균 전환율 (x1000)", marker="s", linestyle="dashed")
plt.xlabel("월")
plt.ylabel("수치")
plt.title("월별 평균 방문자 수 및 전환율 변화")
plt.legend()
plt.xticks(rotation=45)
plt.grid()
plt.show()

# 월별 평균 방문자수는 25000대에서 35000대에 주로 분포되어있다.
# 평균 전환율은 거의 일정하게 5000대에 머무르고 있다.
# 방문자수의 변동이 전환율에 크게 영향을 주고 있지 않는 것으로 보인다.

 

 

분석을 토대로 보고서 작성 연습

 

 

 

 

 

< 지표 분석 연습 3 >

 

shinsegae_data.csv
0.09MB

 

 

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.read_csv("shinsegae_data.csv")

print(df.head())
print(df.info())
print(df.columns)

 

# 일평균 방문자수, 페이지뷰, 이탈률 트래픽 분석

# 트래픽 분석 데이터
traffic_metrics = {
    "일평균 방문자 수": df["방문자 수"].mean(),
    "일평균 페이지뷰": df["페이지뷰 수"].mean(),
    "평균 이탈률 (%)": df["이탈률 (%)"].mean()
}

# 그래프 그리기
fig, ax1 = plt.subplots(figsize=(8, 5))

# 방문자 수 & 페이지뷰 수 - 막대그래프
ax1.bar(["일평균 방문자 수", "일평균 페이지뷰"],
        [traffic_metrics["일평균 방문자 수"], traffic_metrics["일평균 페이지뷰"]],
        color=["blue", "orange"], alpha=0.7)

ax1.set_ylabel("방문자 수 & 페이지뷰 수")
ax1.set_ylim(0, max(traffic_metrics["일평균 방문자 수"], traffic_metrics["일평균 페이지뷰"]) * 1.2)

# 이탈률 - 보조 y축
ax2 = ax1.twinx()
ax2.bar(["평균 이탈률 (%)"], [traffic_metrics["평균 이탈률 (%)"]], color="red", alpha=0.7)
ax2.set_ylabel("이탈률 (%)")
ax2.set_ylim(0, traffic_metrics["평균 이탈률 (%)"] * 3)

plt.title("트래픽 분석 (일평균 방문자 수, 페이지뷰, 이탈률)")
plt.show()

 

# 평균 장바구니 이탈율 및 일평균 신규고객수 분석

# 분석 결과 저장할 딕셔너리 생성
analysis_results = {}

# 평균 계산
analysis_results["평균 장바구니 이탈율 (%)"] = df["장바구니 이탈율 (%)"].mean()
analysis_results["일평균 신규 고객 수"] = df["신규 고객 수"].mean()

# 그래프 그리기
plt.figure(figsize=(8, 5))
sns.barplot(x=list(analysis_results.keys()), y=list(analysis_results.values()), palette="coolwarm")
plt.ylabel("값")
plt.title("평균 장바구니 이탈율 및 일평균 신규 고객 수")
plt.show()


print(df["장바구니 이탈율 (%)"].mean())
print(df["신규 고객 수"].mean())

 

# 월별 평균 클릭률과 월별 평균 ROAS 분석

# 날짜에서 월 정보를 추출
df['날짜'] = pd.to_datetime(df['날짜'])  # 날짜 컬럼을 datetime 형식으로 변환
df['월'] = df['날짜'].dt.month  # 월 정보 추출

import matplotlib.pyplot as plt
import seaborn as sns

# 2. 월별 평균 ROAS 그래프
monthly_roas = df.groupby('월').apply(lambda x: (x['매출 (원)'].sum() / x['광고비 (원)'].sum())).reset_index()
monthly_roas.columns = ['월', '평균 ROAS']

plt.figure(figsize=(10, 6))
sns.lineplot(x='월', y='평균 ROAS', data=monthly_roas, marker='o', color='green')
plt.title('월별 평균 ROAS')
plt.xlabel('월')
plt.ylabel('평균 ROAS')
plt.grid(True)
plt.show()

# 3. 월별 평균 클릭률 그래프
monthly_click_rate = df.groupby('월')['클릭률 (%)'].mean().reset_index()

plt.figure(figsize=(10, 6))
sns.lineplot(x='월', y='클릭률 (%)', data=monthly_click_rate, marker='o', color='red')
plt.title('월별 평균 클릭률')
plt.xlabel('월')
plt.ylabel('평균 클릭률 (%)')
plt.grid(True)
plt.show()

 

# 월별 광고비 대비 매출 분석

# 월 컬럼을 기준으로 그룹화한 후 광고비와 매출 컬럼의 합계를 계산
monthly_data = df.groupby('월')[['광고비 (원)', '매출 (원)']].sum().reset_index()

# 월별 광고비 대비 매출 비율 계산
monthly_data['광고비 대비 매출'] = monthly_data['매출 (원)'] / monthly_data['광고비 (원)']

# 그래프 그리기
plt.figure(figsize=(12, 6))

# 월별 광고비 대비 매출 분석
# 광고비와 매출의 막대 그래프 그리기
bar_width = 0.35  # 막대의 넓이
index = range(len(monthly_data))

fig, ax = plt.subplots(figsize=(12, 6))

# 광고비와 매출 막대 그래프 그리기
bar1 = ax.bar(index, monthly_data['광고비 (원)'], bar_width, label='광고비 (원)', color='blue')
bar2 = ax.bar([i + bar_width for i in index], monthly_data['매출 (원)'], bar_width, label='매출 (원)', color='orange')

# 광고비 대비 매출 비율 선 그래프 추가
ax2 = ax.twinx()  # 두 번째 y축 생성
ax2.plot(index, monthly_data['광고비 대비 매출'], label='광고비 대비 매출 비율', color='green', marker='o', linewidth=2)

# 라벨 및 타이틀 설정
ax.set_xlabel('월')
ax.set_ylabel('금액 (원)')
ax.set_title('월별 광고비 대비 매출')
ax.set_xticks([i + bar_width / 2 for i in index])
ax.set_xticklabels(monthly_data['월'])
ax.legend(loc='upper left')

# 두 번째 y축 레이블 설정
ax2.set_ylabel('광고비 대비 매출 비율')
ax2.legend(loc='upper right')

plt.tight_layout()
plt.show()

 

# 월별 평균 고객 획득 비용(CAC)과 신규 고객 수 변화

# 월별 CAC 계산
monthly_cac = df.groupby('월')['고객 획득 비용 (CAC)'].mean()
monthly_new_customers = df.groupby('월')['신규 고객 수'].sum()

# 두 개의 y축을 사용하는 그래프
fig, ax1 = plt.subplots(figsize=(10, 6))

# 첫 번째 y축 (CAC)
sns.barplot(x=monthly_cac.index, y=monthly_cac.values, ax=ax1, color='skyblue', label='평균 고객 획득 비용 (CAC)')
ax1.set_xlabel('월', fontsize=12)
ax1.set_ylabel('평균 고객 획득 비용 (CAC)', fontsize=12, color='blue')
ax1.tick_params(axis='y', labelcolor='blue')

# 두 번째 y축 (신규 고객 수)
ax2 = ax1.twinx()  # 두 번째 y축
sns.lineplot(x=monthly_new_customers.index, y=monthly_new_customers.values, ax=ax2, color='orange', marker='o', label='신규 고객 수')
ax2.set_ylabel('신규 고객 수', fontsize=12, color='orange')
ax2.tick_params(axis='y', labelcolor='orange')

# 그래프 제목
plt.title('월별 평균 고객 획득 비용(CAC)과 신규 고객 수 변화', fontsize=16)

# 레이아웃 정리
plt.tight_layout()
plt.show()

 

# 마케팅 캠페인별 SNS 팔로워 증가 수

# 마케팅 캠페인 별 SNS 팔로워 증가 수 합산
campaign_sns_followers = df.groupby('마케팅 캠페인')['SNS 팔로워 증가 수'].sum()

# 그래프 설정
plt.figure(figsize=(10, 6))

# 마케팅 캠페인 별 SNS 팔로워 증가 수 (막대 차트)
sns.barplot(x=campaign_sns_followers.index, y=campaign_sns_followers.values, palette='Blues_d')

# 막대 위에 숫자 표시
for i, value in enumerate(campaign_sns_followers.values):
    plt.text(i, value + 5, f'{value:.0f}', ha='center', va='bottom', fontsize=12)

# 제목 및 레이블 설정
plt.title('마케팅 캠페인 별 SNS 팔로워 증가 수', fontsize=16)
plt.xlabel('마케팅 캠페인', fontsize=12)
plt.ylabel('SNS 팔로워 증가 수', fontsize=12)

# 레이아웃 정리
plt.tight_layout()
plt.show()

 

 

분석을 토대로 보고서 작성 연습

 

 

 

 

 

 

 

 

 

오늘의 회고

전보다 보고서 작성할 시간을 조금 더 주셔서 더 열심히 분석해서 작성해보려고 노력했다.
근데 나에게는 아직도 시간이 너무 많이 부족했다.
어떤 컬럼을 사용해서 분석해야할지 정하고, 데이터 분석에 맞는 적절한 그래프를 생각하고,
그래프를 해석하고, 글로 표현하고 하는데에 시간이 아직은 많이 걸리는 것 같다.
계속 연습하다보면 나아지리라고 생각한다.
데이터를 많이 보고 그래프도 이렇게 바꿔봤다 저렇게 바꿔봤다 만져보고..하면 나아지겠지