오늘의 학습 내용
- Pandas 데이터 정렬 및 필터링
- Pandas 데이터 그룹화 및 집계
그로스 마케팅(Pandas 활용)
데이터 기반 분석을 통해 효과적인 마케팅 전략을 지속적으로 최적화하는 것
' 지속적인 데이터 분석 → 실험 및 최적화 → 최적의 성장 전략 적용 '을 반복
Pandas를 활용한 그로스 마케팅 강점
1. 정확한 고객 타겟팅 (Segmentation)
: 소비자 그룹을 세분화
2. 고객 행동 분석 (Funnel Tracking)
: 마케팅 퍼널 분석 → 개선이 필요한 단계 최적화
3. A/B 테스트 기반 최적화 (Optimization)
: 실험적 접
4. 고객 유지율 및 재구매율 향상 (Retention Analysis)
: 이탈율 분석, 지속적인 프로모션 개선
5. 바이럴 성장 전략 적용 (Viral Growth)
: 입소문 마케팅을 최적
Pandas 데이터 정렬과 필터링
1. Pandas 데이터 정렬 .sort_values()
1.1 단일 열 정렬
sorted_values()를 활용
오름차순 : ascending=True / 내림차순 : ascending=True
import pandas as pd
# 그로스 마케팅 데이터 예제
data = {
"캠페인": ["봄맞이 할인", "여름 특가", "가을 이벤트", "겨울 세일"],
"매출액": [3500000, 5000000, 2200000, 4300000],
"클릭수": [750, 1200, 540, 980],
"전환율": [0.045, 0.052, 0.038, 0.049]
}
df = pd.DataFrame(data)
# 매출액 기준 오름차순 정렬
df_sorted_asc = df.sort_values(by="매출액", ascending=True)
print(df_sorted_asc)
# 매출액 기준 내림차순 정렬
df_sorted_desc = df.sort_values(by="매출액", ascending=False)
print(df_sorted_desc)
1.2 여러 열 정렬
두 개의 열 기준: by=["__", "__"]
각 기준별 정렬: ascending=[False, True] #첫번째 기준은 내림차순, 두번째 기준은 오름차순
df_sorted_multi = df.sort_values(by=["매출액", "클릭수"], ascending=[False, True])
print(df_sorted_multi)
예제 : 매출액과 전환율을 조합한 가중치 정렬
df["가중치_점수"] = df["매출액"] * df["전환율"]
df_sorted = df.sort_values(by="가중치_점수", ascending=False)
print(df_sorted.drop(columns=["가중치_점수"])) # 보조 컬럼 삭제 후 출력
2. Pandas 데이터 필터링
2.1 boolean indexing 활용
조건을 만족하는 행만 선택 ( df[...] → True 값이 있는 행만 선택 )
# 클릭수가 800 이상인 캠페인만 선택
high_clicks = df[df["클릭수"] >= 800]
print(high_clicks)
# 클릭수가 800 이상이고 전환율이 0.05 이상인 캠페인 선택
filtered_df = df[(df["클릭수"] >= 800) & (df["전환율"] >= 0.05)]
print(filtered_df)
2.2 query()를 활용
# 매출액이 400만 원 이상인 캠페인 선택
filtered_df = df.query("매출액 >= 4000000")
print(filtered_df)
# 매출액이 400만 원 이상이고 전환율이 0.05 이상인 캠페인 선택
filtered_df = df.query("매출액 >= 4000000 and 전환율 >= 0.05")
print(filtered_df)
2.3 특정 값이 포함 된 데이터 .isin()
isin() : 특정 목록에 포함된 값을 가진 행만 선택
# 특정 캠페인만 선택
selected_campaigns = df[df["캠페인"].isin(["봄맞이 할인", "겨울 세일"])]
print(selected_campaigns)
2.4 문자열 포함하는 데이터 .str.contains()
str.contains() : 특정 단어가 포함된 데이터 추출
# "할인"이 포함된 캠페인만 선택
discount_campaigns = df[df["캠페인"].str.contains("할인")]
print(discount_campaigns)
2.5 특정 범위에 있는 데이터
between() : 특정 범위 내에 있는 값 필터링
# 매출액이 300만 원에서 450만 원 사이인 캠페인 선택
filtered_df = df[df["매출액"].between(3000000, 4500000)]
print(filtered_df)
3. Pandas 데이터 정렬과 필터링
# 클릭수가 800 이상인 캠페인 중, 매출액 기준으로 내림차순 정렬
filtered_sorted_df = df[df["클릭수"] >= 800].sort_values(by="매출액", ascending=False)
print(filtered_sorted_df)
# "할인"이 포함된 캠페인만 선택 후 매출액 기준 내림차순 정렬
filtered_sorted_df = df[df["캠페인"].str.contains("할인")].sort_values(by="매출액", ascending=False)
print(filtered_sorted_df)
# 전환율이 0.04 이상 0.05 이하인 캠페인 선택 후 클릭수 내림차순 정렬
filtered_sorted_df = df[df["전환율"].between(0.04, 0.05)].sort_values(by="클릭수", ascending=False)
print(filtered_sorted_df)
Pandas 데이터 그룹화 및 집계
1. 데이터 그룹화 .groupby()
특정 열의 값을 기준으로 데이터를 묶어 분석하는 기법
마케팅에서의 활용 예 : 캠페인별 매출 합산, 전환율 평균 분석 등
import pandas as pd
# 그로스 마케팅 데이터 예제 데이터 생성
data = {
"캠페인": ["봄맞이 할인", "여름 특가", "가을 이벤트", "겨울 세일",
"봄맞이 할인", "여름 특가", "가을 이벤트", "겨울 세일"],
"지역": ["서울", "서울", "부산", "부산", "대구", "대구", "광주", "광주"],
"매출액": [3500000, 5000000, 2200000, 4300000,
3200000, 4700000, 2000000, 4000000],
"클릭수": [750, 1200, 540, 980, 720, 1150, 520, 950],
"전환율": [0.045, 0.052, 0.038, 0.049, 0.042, 0.050, 0.035, 0.048]
}
# 데이터프레임 생성
df = pd.DataFrame(data)
1.1 단일 열 기준 그룹화
df_grouped = df.groupby("캠페인")["매출액"].sum()
print(df_grouped)
1.2 여러 열 기준 그룹화
df_grouped = df.groupby(["캠페인", "지역"])["클릭수"].mean()
print(df_grouped)
2. 그룹화 된 데이터 집계 및 필터링
2.1 그룹화된 데이터에 집계 연산 적용
# agg()를 사용하여 sum과 mean 두 개의 연산을 적용
df_grouped = df.groupby("캠페인").agg({"매출액": ["sum", "mean"], "클릭수": ["sum", "mean"]})
print(df_grouped)
2.2 그룹화된 데이터 필터
# df.groupby("캠페인")["매출액"].sum()으로 그룹화한 후, 700만 원 이상인 데이터만 필터링
df_filtered = df.groupby("캠페인")["매출액"].sum()
df_filtered = df_filtered[df_filtered >= 7000000]
print(df_filtered)
Pandas를 활용한 그로스 마케팅 실전
1. 서울시_상권분석서비스.csv
데이터 셋 소개
mission1. 주중과 주말 매출 차이가 가장 큰 업종 분석
df["주중_주말_매출차"] = abs(df["주중_매출_금액"] - df["주말_매출_금액"])
top_weekend_diff = df.sort_values(by="주중_주말_매출차", ascending=False).head(5)
print(top_weekend_diff[["서비스_업종_코드_명", "주중_매출_금액", "주말_매출_금액", "주중_주말_매출차"]])
분석결과 : 컴퓨터 및 주변장치가 주중_주말_매출차 값이 가장 큼
마케팅적 관점:
1. 금액을 살펴보면 주말 매출 금액이 모두 주중 매출 금액보다 큼
2. 즉 주말에 구매가 많으며 이는 직장인들이 바쁜 평일 대신 주말에 소비하는 형태가 반영된 것으로 보여짐
3. 평일 매출금도 올리기 위한 마케팅 수단
- 온라인상담 플랫폼등으로 평일에 상담하고 구매한 후 주말에 픽업하는 서비스 제공
- 유튜브, SNS 등으로 컴퓨터나 장치 관련 정보를 노출시켜 평일 소비를 증가시키기
mission2. 주말(금~일) 매출 비중이 높은 업종 분석
df["주말_매출비율"] = (df["금요일_매출_금액"] + df["토요일_매출_금액"] + df["일요일_매출_금액"]) / df["당월_매출_금액"]
top_weekend_sales = df.sort_values(by="주말_매출비율", ascending=False).head(5)
print(top_weekend_sales[["서비스_업종_코드_명", "주말_매출비율"]])
분석결과 : 주말 매출 비율이 가장 큰 업종은 컴퓨터및주변장치판매, 서적, 가전제품수리 이다.
마케팅적 관점:
1. 컴퓨터및주변장치판매: 평일에 방문이 어려워 주말에 집중적으로 구매할 것으로 추정,
컴퓨터관련 장치는 고관여 상품으로 신중한 비교나 체험을 희망하는 특징이 있음
- 주말 한정으로 방문 컨설팅&체 무료제공 혜택 제공/ 온라인 상담 후 주말 매장 픽업 서비스 제공
2. 서적: 주말 가족 단위 방문이나 문화 생활 즐기는 소비 패턴이 반영된 결과로 보여짐, 대형서점은 카페나 문화공간 포함
- 평일 멤버십 포인트 2배 제공의 혜택으로 평일 소비 유도
- 해시태그 & 리뷰 작성 시 서점 내 카페 평일 할인쿠폰 증정 등으로 홍보, 평일 소비 유도
3. 가전제품수리: 평일에는 수리 맡기는 것에 어려움이 있어 주말에 집중되는 것으로 보여짐
- 평일 방문 수리 요청시 관련 부품 할인, 평일 출장비 무료 서비스
" 오늘의 회고 "
전공 4년을 마치고 데이터 분석을 위한 코드를 작성하는 데에 있어 조금은 익숙해졌다고 생각했다.
그러나 나온 출력값을 보고 마케팅적 관점에서 분석하고 마케팅 제안을 하는 것은 정말 다른 일이라는 것을 새삼 느꼈다.
(하나 하나 마케팅적 분석을 하는데 너무 오래걸렸던,,,,ㅜㅜ)

아직 시작일뿐 , 벌써 주눅들지 말자