/////
Search
🖥️

선호

0. 세팅

### 한글깨짐방지!! ### import matplotlib as mpl import matplotlib.pyplot as plt plt.rc('font', family='Malgun Gothic') mpl.rcParams['axes.unicode_minus'] = False import pandas as pd import seaborn as sns articles=pd.read_csv("articles_hm.csv") customer=pd.read_csv("customer_hm.csv") transactions=pd.read_csv("transactions_hm.csv")
Python
복사

1. 고객 세그먼트별 매출 특징

- 연령대 별 매출 구하기

# 연령대 별 구분 def age_group_go(age): if age <=19: return "10대" elif age <= 29: return "20대" elif age <= 39: return "30대" elif age <= 49: return "40대" elif age <= 59: return "50대" elif age <= 69: return "60대" elif age <= 79: return "70대" elif age <= 89: return "80대" else: return "90대" customer["age_group"] = customer["age"].apply(age_group_go) df_tr_cu_left = transactions.merge(customer, on="customer_id", how="left") # 연령대별 총매출 df_tr_cu_left_agg_gr = df_tr_cu_left.groupby("age_group")["price"].sum().reset_index() df_tr_cu_left_agg_gr
Python
복사
매출발생 핵심 층은 “20대”가 압도적, “30~50대”가 뒤를 이음
10대, 7~90대 매출이 낮음

- 회원 상태 별 매출 구하기

club_member_status_price = (df_tr_cu_left .groupby("club_member_status")["price"] .sum() .reset_index() .sort_values("price", ascending=False))
Python
복사

- 고객별 평균적인 재구매 주기 구하기

transactions["t_dat"] = pd.to_datetime(transactions["t_dat"]) # 1) 고객 & 구매일 기준 정렬 transactions_sorted = transactions.sort_values(["customer_id", "t_dat"]) # 2) 고객별 다음 구매일까지 날짜 차이 계산 transactions_sorted["diff_days"] = transactions_sorted.groupby("customer_id")["t_dat"].diff().dt.days # 4) 고객별 평균 재구매 주기 계산 re_purchase = ( transactions_sorted.groupby("customer_id")["diff_days"] .mean() .reset_index() .rename(columns={"diff_days": "avg_repurchase_days"}) )
Python
복사
0은 제외

2. 상품군 별 트렌드는 무엇인가?

- 상품군별 매출 TOP 10 구하기 + TOP 10 에서 각 상품군별 인기색상 구하기

pg_price = ( df_tr_ar_left.groupby("product_group_name")["price"] .sum() .reset_index() ) # 매출 기준 내림차순 정렬 pg_price = pg_price.sort_values("price", ascending=False) # TOP 10 추출 pg_price_top10 = pg_price.head(10) pg_price_top10
Python
복사
→ 상품 하위항목별 색상 매출 분포

- 상품군별 재구매율 파악하기

# 구매 횟수 계산 df_tr_ar_left = transactions.merge(articles, on="article_id", how="left") df_tr_ar_left_grp = df_tr_ar_left.groupby(['customer_id', 'product_group_name']).size().reset_index(name='purchase_cnt') # 재구매 고객만 필터링 re_cid = df_tr_ar_left_grp[df_tr_ar_left_grp['purchase_cnt'] >= 2] # 상품군별 재구매 고객 수 re_cnt = re_cid.groupby('product_group_name')['customer_id'].nunique().reset_index(name='repurchase_customers') # ALL 구매 고객 수 (재구매 아닌값도 포함) tt_cnt = df_tr_ar_left_grp.groupby('product_group_name')['customer_id'].nunique().reset_index(name='total_customers') # 재구매율 계산 (재구매 / 전체로) repurchase_rate = pd.merge(tt_cnt, re_cnt, on='product_group_name', how='left') repurchase_rate['repurchase_customers'] = repurchase_rate['repurchase_customers'] repurchase_rate['repurchase_rate'] = repurchase_rate['repurchase_customers'] / repurchase_rate['total_customers'] repurchase_rate.sort_values('repurchase_rate', ascending=False, inplace=True)
Python
복사
의상 재구매율이 매우 높음
하위권 - 가구 인테리어 등 비주기성 물품
비주기성 물품(funiture, interior textile 등) → 단가를 조정, 마진 중심 전략 수립

3. 연령대별 채널(온, 오프라인) 사용 현황 + 연령대별 매출 상위 10개 상품군 구하기

- 연령대별 채널 사용 현황

# 연령대 채널 별 사용 현 aggr_scid = (df_tr_cu_left.groupby(["age_group", "sales_channel_id"]).size().reset_index(name="usage_count")) aggr_scid
Python
복사
온라인 판매채널 사용량이 우세
20~50대가 전체 사용량의 중심, 60대 이후 급격히 감소
10대 전체 수 자체가 적음

- 연령대별 매출 상위 10개 상품군 구하기

df_all_left = df_tr_ar_left.merge(customer[['customer_id','age','age_group']], on='customer_id', how='left') age_group_price = df_all_left.groupby(['age_group','product_group_name'])['price'].sum().reset_index(name='total_sales') age_top10 = ( age_group_price.sort_values(['age_group','total_sales'], ascending=[True, False]) .groupby('age_group') .head(10) .reset_index(drop=True) ) age_top10
Python
복사
의류 카테고리 = 모든 연령대에서의 핵심 상품군
20대 = 다양한 카테고리에서 높은 매출 = 트렌드 주도층
30~50대 = 20대 구매력을 뒤따름, 비슷한 패턴
60대 이상 = 전반적으로 낮으나, 의류군 꾸준히 존재함
*** 연령대별 채널사용현황 x 연령대별 매출상위 10개 상품군
20대 : 온라인 상 거래량 + 대부분 상품군에서 매출이 압도적
온라인 구매 경험 최적화 → 추가 매출성장의 트리거
성별/체형 기반 코디 추천 (무신사)
신상품 출시 → 선 노출
30~50대 : 온라인 상 거래량이 높고, 실용적인 상품군 집중(의류, 악세서리)
실용적 측면 강조
신뢰 마케팅 (리뷰, 별점 기반 노출)
프리미엄 기능성 제품 추천
60대 ~ : 거래 자체가 적어짐, 온/오프라인 비율도 감소, 매출 폭 역시 감소, 의류군 중심
베이직 의류 중심 (패키지 상품 출시, 타겟팅??)
회원가입 혜택, 온라인 배송 시 무료 등 전환 캠페인
ux 단순화 & 큰 글씨

4. 개인 추가적인 문제정의 제시