카테고리 없음

[DAY11] 멋쟁이사자처럼부트캠프 그로스마케팅_Today I Learned

hachaenii 2025. 2. 18. 11:51
오늘의 학습 내용
- API의 개념과 활용
- API 데이터 수집 심화

 

멍한 상태로 시작하는 오늘의 블로그.. ( '_' )

부트캠프 시작이래 가장 힘들고 머리가 멈춘것처럼 멍했던 오늘 수업 블로그 포스팅 시작합니다.. !!'

오늘 포스팅에선 API의 간략한 개념과, 수업 내 연습한 보고서 작성 관련한 내용과 저의 회고를 주로 다뤄보겠습니다


API (Application Programming Interface)

애플리케이션 간의 데이터를 주고받고 기능을 호출할 수 있도록 하는 인터페이스

이를 통해 기업은 외부 서비스와 연동하여 데이터를 수집, 마케팅 자동화를 구현, 맞춤형 고객 경험을 제공

API Server 예시

테이블명 : growth_marketing

# 테이블 생성
CREATE TABLE IF NOT EXISTS growth_marketing (
    id INT AUTO_INCREMENT PRIMARY KEY, --- 자동증가
    date DATE NOT NULL,                --- 데이터 기록 날짜 
    channel VARCHAR(50) NOT NULL,      
    campaign VARCHAR(100) NOT NULL,
    impressions INT NOT NULL,          --- 광고 노출 수
    clicks INT NOT NULL,
    conversions INT NOT NULL,
    conversion_rate FLOAT NOT NULL,
    revenue FLOAT NOT NULL,
    cost FLOAT NOT NULL,
    roi FLOAT GENERATED ALWAYS AS (revenue - cost) STORED --- roi:revenue - cost로 자동 계산
);
# 초기 데이터 삽입
INSERT INTO growth_marketing (date, channel, campaign, impressions, clicks, conversions, conversion_rate, revenue, cost) 
VALUES ('2024-01-01', 'Google Ads', 'Winter Sale', 84854, 9444, 1576, 16.69, 37754, 940);

INSERT INTO growth_marketing (date, channel, campaign, impressions, clicks, conversions, conversion_rate, revenue, cost) 
VALUES ('2024-01-02', 'Facebook Ads', 'Spring Collection', 85901, 4432, 1578, 35.6, 19412, 1125);

INSERT INTO growth_marketing (date, channel, campaign, impressions, clicks, conversions, conversion_rate, revenue, cost) 
VALUES ('2024-01-03', 'Instagram Ads', 'Summer Discounts', 77334, 372, 1949, 523.92, 37939, 9861);

INSERT INTO growth_marketing (date, channel, campaign, impressions, clicks, conversions, conversion_rate, revenue, cost) 
VALUES ('2024-01-04', 'LinkedIn Ads', 'Holiday Special', 58947, 9007, 1740, 19.32, 18461, 13386);

INSERT INTO growth_marketing (date, channel, campaign, impressions, clicks, conversions, conversion_rate, revenue, cost) 
VALUES ('2024-01-05', 'Twitter Ads', 'Back to School', 60810, 7346, 1115, 15.18, 26400, 18730);

INSERT INTO growth_marketing (date, channel, campaign, impressions, clicks, conversions, conversion_rate, revenue, cost) 
VALUES ('2024-01-06', 'TikTok Ads', 'Tech Promo', 91915, 477, 959, 201.05, 22417, 8129);

INSERT INTO growth_marketing (date, channel, campaign, impressions, clicks, conversions, conversion_rate, revenue, cost) 
VALUES ('2024-01-07', 'Pinterest Ads', 'New Year Promo', 12969, 7212, 599, 8.31, 21600, 2235);

INSERT INTO growth_marketing (date, channel, campaign, impressions, clicks, conversions, conversion_rate, revenue, cost) 
VALUES ('2024-01-08', 'Snapchat Ads', 'Viral Marketing', 27767, 6943, 1225, 17.64, 11047, 14601);

INSERT INTO growth_marketing (date, channel, campaign, impressions, clicks, conversions, conversion_rate, revenue, cost) 
VALUES ('2024-01-09', 'Bing Ads', 'B2B Outreach', 77616, 7480, 215, 2.87, 36157, 9679);

INSERT INTO growth_marketing (date, channel, campaign, impressions, clicks, conversions, conversion_rate, revenue, cost) 
VALUES ('2024-01-10', 'YouTube Ads', 'Influencer Marketing', 22000, 1800, 240, 13.3, 8000, 3200);

 

웹 서버 연결 (자세한 내용- DAY10 포스팅 참고)

1. Flask 프로젝트 폴더 구조

site2
│
├── app.py
├── templates/
│   └── index.html
└── static/
    └── style.css

 

2. 각 파일 FTP(ex-filezilla) 이용해 해당 디렉토리에 업로드

app.py
0.00MB
index.html
0.00MB
style.css
0.00MB

 

3. Flask 실행 (/var/lab11/site2)

python3 app.py

 

 

4. 브라우저에서 확인

  • 웹 인터페이스 : http://(VM 인스턴스 외부 IP):5001/
  • JSON 데이터 조회 API : http://(VM 인스턴스 외부 IP):5001/growth-marketing

API in Growth Marketing

1. 그로스 마케팅에서의 활용

1.1 광고 API

Google Ads API / Facebook Marketing API

- 광고 캠페인을 자동 생성 및 관리

- 광고 성과 데이터를 실시간으로 분석하고 최적화

1.2 분석 및 트래킹 API

Google Analytics API

- 웹사이트 및 앱의 사용자 데이터를 실시간 수집

- 유입 경로, 페이지 이탈률, 전환율 등의 핵심 지표 분

1.3 CRM 및 고객 데이터 API

HubSpot API / Salesforce API

- 고객의 구매 이력, 문의 기록을 실시간으로 분석하여 맞춤형 마케팅 진행

- 고객 세그먼트를 분류하여 개인화된 이메일 캠페인 자동화

1.4 이메일 & 메시징 API

Twilio API / SendGrid API

- 결제 알림, 장바구니 이탈 방지 메시지, 프로모션 메시지 등 자동화

- API를 이용해 A/B 테스트 실행

1.5 소셜 미디어 API

Twitter API / Instagram Graph API

- 소셜 미디어 데이터를 분석하여 트렌드 파악 및 해시태그 최적화.

- 브랜드 언급 모니터링을 통해 실시간 고객 피드백 수집.

- 자동 포스팅 및 사용자 참여 데이터 분석.

 

2. API를 활용한 그로스 마케팅 전략

- Google Analytics API + CRM API를 결합하여 고객 데이터를 자동 분류

- 구매 패턴, 방문 빈도, 관심 제품 등을 기준으로 고객을 세그먼트화

2.2 마케팅 캠페인 자동화

- Facebook Ads API : 특정 고객 그룹을 대상으로 광고 자동 집행

- SendGrid API : 특정 행동을 한 고객에게 자동 이메일 전송

- Twilio API : 결제 완료 후 고객에게 SMS로 프로모션 코드 발송

2.3 실시간 트래킹 및 성과 분석

- API 기반으로 실시간 대시보드를 구축하여 마케팅 성과를 추적

2.4 리타겟팅 및 개인화 마케팅

- HubSpot API와 결합하여 고객 맞춤형 이메일 마케팅 실행

- 고객의 웹사이트 방문 데이터를 API로 분석하여 맞춤형 광고 제공

 

3. 기대효과

- 개발 시간 단축 / 마케팅 자동화 / 데이터 기반 의사 결정 / 고객 경험 향상

 

API를 활용한 데이터 분석

1. 사용자 행동 분석( Google Analytics 데이터 )

Google Analytics : 웹사이트 방문자 데이터를 추적하고 분석하는 도구

분석 항목 설명
Sessions (세션 수) 사용자가 사이트를 방문한 횟수. 세션은 30분 동안 활동이 없으면 종료됨
Users (사용자 수) 특정 기간 동안 웹사이트를 방문한 고유 사용자 수
New Users (신규 사용자 수) 처음 방문한 사용자 수
Pageviews (페이지뷰 수) 웹사이트에서 조회된 페이지의 총 수
Pages per Session (세션당 페이지뷰) 방문자가 한 세션 동안 조회한 평균 페이지 수

 

사용자 행동 분석 보고서 예시

1) 데이터 생성 및 csv 저장

import pandas as pd

# 하드코딩된 Google Analytics 사용자 행동 데이터 (30일)
data = {
    "Date": pd.date_range(start="2024-01-01", periods=30, freq="D"),
    "Sessions": [
        1000, 1200, 1100, 1300, 1150, 1400, 1250, 1500, 1350, 1600,
        1700, 1800, 1750, 1900, 1850, 1950, 2000, 2100, 2200, 2300,
        2250, 2400, 2500, 2600, 2700, 2800, 2900, 3000, 3100, 3200
    ],
    "Users": [
        800, 950, 870, 1000, 920, 1100, 980, 1200, 1050, 1300,
        1400, 1450, 1350, 1500, 1400, 1550, 1600, 1700, 1750, 1850,
        1800, 1950, 2000, 2100, 2200, 2300, 2350, 2450, 2500, 2600
    ],
    "New_Users": [
        300, 400, 350, 450, 380, 500, 420, 550, 460, 600,
        620, 650, 640, 700, 680, 720, 750, 800, 850, 900,
        870, 950, 1000, 1050, 1100, 1150, 1200, 1250, 1300, 1350
    ],
    "Pageviews": [
        4000, 4500, 4200, 4800, 4300, 5000, 4600, 5200, 4800, 5500,
        6000, 6500, 6200, 7000, 6800, 7200, 7500, 7800, 8000, 8200,
        8500, 8700, 9000, 9500, 9800, 10000, 10500, 11000, 11500, 12000
    ],
    "Pages_per_Session": [
        4.0, 3.8, 3.9, 3.7, 3.8, 3.6, 3.7, 3.5, 3.6, 3.4,
        3.9, 4.0, 3.8, 4.1, 4.2, 4.0, 4.3, 4.5, 4.4, 4.6,
        4.2, 4.1, 4.3, 4.5, 4.6, 4.7, 4.8, 4.9, 5.0, 5.1
    ]
}

# 데이터프레임 생성
google_analytics_data = pd.DataFrame(data)

# CSV 파일로 저장
csv_filename = "google_analytics_data.csv"
google_analytics_data.to_csv(csv_filename, index=False)

print(f"CSV 파일 '{csv_filename}' 저장 완료!")

 

2) CSV 로드 및 데이터 분석, 시각화

import matplotlib.pyplot as plt

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

# 주요 지표 계산
total_sessions = google_analytics_data["Sessions"].sum()
total_users = google_analytics_data["Users"].sum()
total_new_users = google_analytics_data["New_Users"].sum()
total_pageviews = google_analytics_data["Pageviews"].sum()
avg_pages_per_session = round(google_analytics_data["Pages_per_Session"].mean(), 2)

# 신규 사용자 비율 계산
new_user_ratio = round((total_new_users / total_users) * 100, 2)

# 데이터 시각화: 세션 수 및 페이지뷰 수
plt.figure(figsize=(10, 5))
plt.plot(google_analytics_data["Date"], google_analytics_data["Sessions"], label="Sessions", marker='o', linestyle='-')
plt.plot(google_analytics_data["Date"], google_analytics_data["Pageviews"], label="Pageviews", marker='s', linestyle='--')
plt.xlabel("Date")
plt.ylabel("Count")
plt.title("Daily Sessions and Pageviews")
plt.legend()
plt.xticks(rotation=45)
plt.grid()
plt.show()

# 데이터 시각화: 신규 사용자 비율
plt.figure(figsize=(8, 5))
plt.bar(["New Users", "Returning Users"], [total_new_users, total_users - total_new_users], color=['blue', 'gray'])
plt.xlabel("User Type")
plt.ylabel("Count")
plt.title(f"New Users vs Returning Users (New User Ratio: {new_user_ratio}%)")
plt.grid(axis='y')
plt.show()

# 데이터 시각화: 세션당 페이지뷰 평균
plt.figure(figsize=(8, 5))
plt.bar(["Average Pages per Session"], [avg_pages_per_session], color='green')
plt.ylabel("Pages per Session")
plt.title("Average Pages per Session Over Time")
plt.ylim(0, max(google_analytics_data["Pages_per_Session"]) + 1)
plt.grid(axis='y')
plt.show()

# 주요 지표 출력
summary_metrics = {
    "Total Sessions": total_sessions,
    "Total Users": total_users,
    "Total New Users": total_new_users,
    "New User Ratio (%)": new_user_ratio,
    "Total Pageviews": total_pageviews,
    "Average Pages per Session": avg_pages_per_session,
}

# 데이터프레임 생성 및 출력
summary_df = pd.DataFrame(summary_metrics, index=[0])
print(summary_df)
코드 요약
1. 데이터 생성 및 저장
- 하드코딩된 데이터 (30일)을 사용하여 세션 수, 사용자 수, 신규 사용자 수, 페이지뷰, 세션당 페이지뷰 데이터를 생성.
- pandas.DataFrame을 활용하여 정리.
- to_csv()를 사용하여 google_analytics_data.csv로 저장.
2. CSV 파일 로드 후 분석
- read_csv()를 사용하여 CSV 데이터를 로드
- 주요 지표(총 세션 수, 총 사용자 수, 신규 사용자 비율 등) 계산
3. 데이터 시각화
- 세션 수 및 페이지뷰 변화 (라인 그래프)
- 신규 사용자 vs 기존 사용자 비율 (막대 그래프)
- 세션당 평균 페이지뷰 변화 (막대 그래프)

 

위의 데이터를 이용한 사용자 행동 분석 보고서

보고서_1.pdf
0.25MB

 

2. 트래픽 소스 분석( Google Analytics 데이터 )

사용자가 웹사이트에 어떻게 유입되었는지를 분석하는 항목

분석 항목 설명
Traffic Source (트래픽 소스) 사용자가 웹사이트에 들어온 경로(Google, Facebook, Naver, Direct 등)
Referral (추천 트래픽) 른 웹사이트에서 링크를 통해 들어온 방문자 수
Organic Search (유기적 검색 트래픽) Google, Bing 등 검색엔진에서 검색을 통해 유입된 방문자 수
Direct (직접 트래픽) URL을 직접 입력하거나 북마크를 통해 방문한 사용자 수
Social (소셜 트래픽) Facebook, Twitter, Instagram 등 소셜 미디어에서 유입된 사용자 수.
Paid Search (유료 검색 트래픽) Google Ads 등 광고를 통해 유입된 방문자 수

 

트래픽 소스 분석 보고서 예시

1) 데이터 생성 및 csv 저장

import pandas as pd

# 하드코딩된 트래픽 소스 데이터 (30일)
data = {
    "Date": pd.date_range(start="2024-01-01", periods=30, freq="D"),
    "Traffic_Source": [
        "Organic Search", "Direct", "Referral", "Social", "Paid Search"] * 6,
    "Visitors": [
        3200, 2100, 1500, 1800, 1200,
        3300, 2200, 1600, 1900, 1300,
        3400, 2300, 1700, 2000, 1400,
        3500, 2400, 1800, 2100, 1500,
        3600, 2500, 1900, 2200, 1600,
        3700, 2600, 2000, 2300, 1700
    ],
    "Conversion_Rate": [
        3.8, 2.9, 1.5, 2.1, 4.5,
        3.9, 3.0, 1.6, 2.2, 4.6,
        4.0, 3.1, 1.7, 2.3, 4.7,
        4.1, 3.2, 1.8, 2.4, 4.8,
        4.2, 3.3, 1.9, 2.5, 4.9,
        4.3, 3.4, 2.0, 2.6, 5.0
    ]
}

# 데이터프레임 생성 및 CSV 저장
csv_filename = "traffic_source_data.csv"
traffic_data = pd.DataFrame(data)
traffic_data.to_csv(csv_filename, index=False)

print(f"CSV 파일 '{csv_filename}' 저장 완료!")

 

2) CSV 로드 및 데이터 분석, 시각화

import pandas as pd
import matplotlib.pyplot as plt

# CSV 파일 로드
csv_filename = "traffic_source_data.csv"
traffic_data = pd.read_csv(csv_filename)

# 주요 지표 계산
total_visitors = traffic_data["Visitors"].sum()
avg_conversion_rate = round(traffic_data["Conversion_Rate"].mean(), 2)

# 트래픽 소스별 방문자 수 집계
traffic_source_summary = traffic_data.groupby("Traffic_Source")["Visitors"].sum().reset_index()

# 데이터 시각화: 트래픽 소스별 방문자 수
plt.figure(figsize=(8, 5))
plt.bar(traffic_source_summary["Traffic_Source"], traffic_source_summary["Visitors"], color=['blue', 'green', 'red', 'purple', 'orange'])
plt.xlabel("Traffic Source")
plt.ylabel("Total Visitors")
plt.title("Total Visitors by Traffic Source")
plt.grid(axis='y')
plt.show()

# 트래픽 소스별 평균 전환율 집계
traffic_conversion_summary = traffic_data.groupby("Traffic_Source")["Conversion_Rate"].mean().reset_index()

plt.figure(figsize=(8, 5))
plt.bar(traffic_conversion_summary["Traffic_Source"], traffic_conversion_summary["Conversion_Rate"], color=['blue', 'green', 'red', 'purple', 'orange'])
plt.xlabel("Traffic Source")
plt.ylabel("Average Conversion Rate (%)")
plt.title("Average Conversion Rate by Traffic Source")
plt.grid(axis='y')
plt.show()

# 주요 지표 출력
summary_metrics = {
    "Total Visitors": total_visitors,
    "Average Conversion Rate (%)": avg_conversion_rate
}

# 데이터프레임 생성 및 출력
summary_df = pd.DataFrame(summary_metrics, index=[0])
print(summary_df)
코드 요약
1. 데이터 생성 및 저장
- 하드코딩된 데이터 (30일)을 사용하여 트래픽 소스, 방문자 수, 전환율 데이터를 생성.
- pandas.DataFrame을 활용하여 CSV 파일(traffic_source_data.csv)로 저장.
2. CSV 파일 로드 후 분석
- read_csv()를 사용하여 CSV 데이터를 로드
- 총 방문자 수와 평균 전환율을 계산
3. 데이터 시각화
- 트래픽 소스별 방문자 수 (막대 그래프)
- 트래픽 소스별 평균 전환율 (막대 그래프)

 

위의 데이터를 이용한 트래픽 소스 분석 보고서

트래픽.pdf
0.17MB


" 오늘의 회고 "

시간에 쫓기며 익숙하지 않은 보고서 작성을 수도 없이 반복하는 과정이 너무 힘들었다.

아무래도 시간에 쫓기다보니 제대로 이 결과로 어떤 전략을 세울 수 있을까 고민하는게 아니라

형식에 따라가면서 분석하는게 진짜 내 것이 되지 않은 것 같아서 스트레스로 다가왔던것 같다.

그래서 유난히 지치는 수업이었다,,

혼자 복습하며 그나마 보고서의 내용을 이해할 수 있었다.

짬 나는 시간에 보고서 연습은 더 해보고 싶다 틀에 따라가지 않고 온전한 내 생각으로 ..

 

다들 오늘 너무 힘든 수업이었는데 수고하셨습니다ㅜㅜ