오늘의 학습 내용
- 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) 이용해 해당 디렉토리에 업로드
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 기존 사용자 비율 (막대 그래프)
- 세션당 평균 페이지뷰 변화 (막대 그래프)
위의 데이터를 이용한 사용자 행동 분석 보고서
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. 데이터 시각화
- 트래픽 소스별 방문자 수 (막대 그래프)
- 트래픽 소스별 평균 전환율 (막대 그래프)
위의 데이터를 이용한 트래픽 소스 분석 보고서
" 오늘의 회고 "
시간에 쫓기며 익숙하지 않은 보고서 작성을 수도 없이 반복하는 과정이 너무 힘들었다.
아무래도 시간에 쫓기다보니 제대로 이 결과로 어떤 전략을 세울 수 있을까 고민하는게 아니라
형식에 따라가면서 분석하는게 진짜 내 것이 되지 않은 것 같아서 스트레스로 다가왔던것 같다.
그래서 유난히 지치는 수업이었다,,
혼자 복습하며 그나마 보고서의 내용을 이해할 수 있었다.
짬 나는 시간에 보고서 연습은 더 해보고 싶다 틀에 따라가지 않고 온전한 내 생각으로 ..
다들 오늘 너무 힘든 수업이었는데 수고하셨습니다ㅜㅜ