▼오늘 배운 사항들
1. SQL 복습
- 4/9 실습 시나리오 해설
2. SQL 데이터를 활용한 파이썬 시각화
- my sql & pandas 연결
- matplotlib
3. API & JSON 데이터 확인
Part 1. SQL - join & 서브쿼리 & 윈도우 함수 복습
[캔슬 유저의 과거 업그레이드 유무 파악] - case when 구문, 서브쿼리, join 활용
- 사용자를 알아간다고 생각하면 쉬움..
- 캔슬한 유저 중에 업그레이드 경험이 있는지 알아보기 위함
- 아무것도 경험없이 캔슬 : 온보딩 경험, 서비스 가치 제공 등 마케팅 플랜 수립
- 경험했는데 캔슬 : 이탈 원인을 확인해보기

[채널별 이탈 현황 파악] - count, group by , join 활용
- 유튜브 채널이 이탈이 가장 높았는데,
- 왜 이탈이 많았을까? 과대광고한 걸까 타겟이 잘못된걸까 알아내가는 과정

[이탈까지 기간 파악] - join, datediff 활용
- DATEDIFF 를 활용해 이탈까지 며칠 걸렸는지 확인 가능
- users 테이블의 signup date와 event 테이블의 event type + event date 를 활용해서 cancel date 도출
- where로 cancel 유저를 필터링 먼저 설정하고
- date diff로 event date와 signup date를 빼면, 날짜가 나오겠쬬 - 7일 안에 이탈하면 첫 주 경험 개선 강화가 필요 제일 중요한 시기
- Q. 채널별 이탈기간을 비교하려면 어떻게 해야하지? 유튜브/페이스북 등 평균 이탈기간
- Q. 이 데이터가 유용하려면, 전 단계로 plan별 그룹핑 이후에 cancel until을 구하는게 낫지 않나?
- 유료 이탈기간과 무료 이탈기간을 동일선상에서 비교하기에는 🤔


Part 2. my sql & 파이썬 시각화
- sql 있는 데이터를 pandas로 꺼내서
- 직접 api 코드 받아서 어디서나 분석할 수 있으니까, 가볍게 분석하고 싶을 때 가능함
- 코드 설명
- sqlalchemy : 엔진을 만들어서 my sql 서버에 pymysql로 접속하겠다
- create_engine :
- text :
[ my sql과 파이썬 연결]
1. 코랩 sqlalchemy 설치
2. my sql connection info에서 url ssl 코드 전까지 복사해서 연결 url = "" ← 요 사이에 입력
3. pandas로 테이블 불러오기


- 시각화할 때 한글폰트 필요하면 해당 코드 복붙하고 런타임 - 다시시작 해주기
- 한글폰트 설치안하면, 구글에 한글폰트가 없어서 네모박스로 차트가 깨질 수 있음
[ matplotlib 시각화]
- 시각화 차트 만드는 명령어 ▶ 와 신기해~!@~!
- ax.bar(X축 목록, Y축 숫자 목록)
- 채널별로 total conversions 옆에 세우면 좋지 않을까?
# 도화지(fig)와 차트 영역(ax) 만들기
fig, ax = plt.subplots()
# 여기서 차트를 그립니다
plt.show()


[matplotib 핵심 개념]
- matplotlib : 시각화 만들어주는 기본 엔진
- fig = 도화지 전체
- ax = 도화지 위의 차트 영역
- plt.show() = 화면에 출력


- 함수차트 종류
ax.bar(x, y) 세로 막대 항목 비교할 때 ax.barh(y, x) 가로 막대 순위 볼 때 ax.plot(x, y) 선 시간 흐름 볼 때 ax.pie(y) 파이 비율 볼 때 - import matplotlib.pyplot as plt : import pandas처럼 시각화해주는 matplotlib을 불러온다라는 의미
- ax다음에 es붙여서 여러가지 함수 불러오는거, 1개 도화지에 2개의 그래프를 만들겠다
- axes = plt.subplots (1,2) : 1행에 2열 그래프 만들겠다(행렬 참고)
- market=o은 꼭지점마다 점 표시하기(x, * 변경 가능)

[실습1&2]
- df로 데이터 프레임 나온 표를 시각화 하고 싶다
→ fig, ax 활용해서 표 만들기 - df[''] 활용해서 x값, y 값넣기


소름돋게 바로 색상 바꾸는 실습합니다
막대별로는 아직 모르지만...
[실습 3-4. 색상 변경 및 차꾸 실습]
- ax.bar()안에 color = '' 명령어 사용해서 색상 변경 가능, #헥사코드 입력 가능
- y값의 매출이 너무 커서 조정 필요할 때
from matplotlib.ticker import FuncFormatter
#y축 숫자를 1,000 단위 콤마로 표시
ax.yaxis.set_major_formatter(FuncFormatter(lambda x, pos: f'{int(x):,}'))


[실습 5. 월별 매출 선 그래프 구하기]
1. dbeaver에서 sql쿼리문 만들기
- [from] 어떤 테이블에서 revenue 가져올지 확인 → daily revenue
- [group by] date_format 활용해서 일자별로 나온 매출일자를 월별로 묶고 select 에 추가
- [select] 월별 총 매출합계도 필요하니 sum()도 select 에 추가
- [order by] 데이터 깔끔하게 파이썬 가져가기 위해서 정렬해두기
2. 만든 sql쿼리문을 코랩에서 pd.read_sql()에 넣기
- sql 날짜는 %Y
- 파이썬 날짜는 %%Y로 2개로 변경해야 오류 안뜨고 실행됨
- , engine 명령어로 my sql과 연결짓는 것도 잊지말기




[VS에서 실습]
- ax.plot() ← 사이에 들어갈 x값, y값을 아까 지정한 df_monthly_revenue에서추출해서 넣는것


[실습 6. 파이차트 만들기]
- 월별 매출 선 그래프와 동일하게 sql 쿼리문 작성해서 ax.pie로 생성
- ax.pie는 비율, label, 퍼센티지 순으로 입력
채널 = ['Instagram', 'Google', 'Facebook', 'YouTube', '기타']
비율 = [30, 28, 20, 15, 7]
fig, ax = plt.subplots(figsize=(7, 7))
ax.pie(비율, labels=채널, autopct='%1.1f%%')
ax.set_title("채널별 유저 비율")
plt.show()


[실습7. 가로 막대 바 그래프 만들기]
- 변수명 헷갈리지말기 df = 랑 df_cpa =


[실습8. 신규 구독자 vs 이탈자 비교]
- 신규 구독자 그래프는 선 / 이탈 구독자 그래프는 바로 그래프 2개 나올 수 있도록 만들기
- axes는 차트만들 때 axes[0].plot / axes[1].plot 으로 순번 까먹지 말기
- Q. 루커스튜디오에서 처럼 두 그래프를 겹쳐서 보는건 어떻게 만들지?
axes[1].tick_params(axis='x', rotation=45) #글자가 겹치니까 각도를 조정하는 명령어


[실습9. 이벤트 타입별 발생 횟수]
- 사용자가 앱에서 어떤 행동을 가장 많이 하는지 파악할 수 있음
- 데이터 전처리 때 사용하는 슬라이싱 기능 활용해서 막대별로 색 지정
- 컬러 데이터를 브랜드 톤앤매너 맞추는 경우가 있음
color = colors[:len(df_event)] #여러가지 색을 할 건데 순서대로 dfevent의 수만큼 색지정
※ 슬라이싱
- 필요한 df의 컬럼 수의 바 막대 색상 정하는 것
- [0:2] ▶뒤에있는 숫자만큼 뽑아내는 것.첫번째, 두번째 추출
- [1:3] ▶뒤에있는 숫자만큼 뽑아내는 것. 3번째까지 뽑을건데 0은 제외하고니까 2개나옴




결론 : 실제 DB 데이터로 차트를 그리는 패턴은 항상 동일
① read_sql로 데이터 가져오기 ② 차트 그리기
Part 3. API & JSON
[API]
- 마케터로서 API 알고 있으면, 경쟁사 유튜브 댓글 수집 / 키워드 트렌드 수집 등 쉽게 작업할 수 있음
- API 데이터를 가져올 때 JSON으로 포장해서 가져옴
[JSON]
{ #중괄호 쓰는 JSON
"author": "김민준", #파이썬은 작은따옴표인데, JSON은 쌍따옴표 사용
"text": "진짜 좋다!!!",
"like_count": 42
}
- response.json() : json데이터를 텍스트로 변환해서 파이썬이 읽게하는 코드
- 작은 따옴표로 바뀐 결과값을 보아 딕셔너리인 걸 알 수 있음 - 이전에 data['title'] pandas 데이터 프레임에서 데이터 뽑아올 때와 똑같음(=딕셔너리에서 값 꺼내는)
- 대괄호 안에 키값넣어서 딕셔너리에서 값빼는것과 동일하게 데이터 뽑을 수 있음 - data list에 첫번째 값만 보고 싶으면 data_list[0]



# 셀 28: 여러 개의 데이터도 한번에 가져오기
response = requests.get("https://jsonplaceholder.typicode.com/posts?_limit=5") #이 주소에 있는 api 값 가져올래 그걸 response에 담아줘
response.text #쌍따옴표 보니 json인 것 같으니 딕셔너리로 바꿔야겟어
data_list = response.json() #그걸 data_list에 담아줘
data_list
- data_list[0]['title'] : 여러개의 데이터가 있는 리스트에서 첫번째 데이터의 타이틀만 뽑고싶을때

매일이 금요일이면 오늘처럼 이해가 잘될까?^^
아니면 매일 다음날이 주말이면 이해가 잘 되는 걸까^^?
오늘 집중도 잘되고 이해도 잘되고 어제보다 나은 나
역시 배움에 있어서 필요성의 유무를 인지하는 건 중요하고,
sql은 정리하고 다듬기 위한 코드를 배우고, 파이썬은 print 만들어내는게.... 나는 sql보다 파이썬이 훨 재밌고
json..은..

'Growth Marketing > GM4' 카테고리의 다른 글
| [TIL-260414] 멋쟁이사자처럼 그로스마케팅 4기 - 데이터분석 개론 day24 | API & MCP (1) | 2026.04.14 |
|---|---|
| [TIL-260413] 멋쟁이사자처럼 그로스마케팅 4기 - 데이터분석 개론 day23 | 데이터 이상치 및 결측치 처리 (0) | 2026.04.13 |
| [TIL-260409] 멋쟁이사자처럼 부트캠프 그로스마케팅 4기 - 데이터분석 개론 day21 (0) | 2026.04.09 |
| [TIL-260408] 멋쟁이사자처럼 부트캠프 그로스마케팅 4기 - 데이터분석 개론 day20 (1) | 2026.04.08 |
| [TIL-260407] 멋쟁이사자처럼 부트캠프 그로스마케팅 4기 - 데이터분석 개론 day19 (1) | 2026.04.07 |