변명 같이 들려도,, 배우는 게 많다보니(sql, 파이썬, 판다스, 통계 등) 머리에 욱여 넣을수록 전에 내용들이 증발해버린다. 머리가 나쁘기도 하고...
이제 곧 추석 연휴가 끝나면 두 번째 프로젝트가 시작된다. 이번엔 제대로 해보고 싶은 욕심을 만족시켜줄 튜터님의 적용 실습 세션이 있었다. 이 내용을 제대로 학습해두고 반드시 프로젝트에서 적용해보리라,,, 다짐을 하고서 자 이제 시작해볼까?
데이터는 받았는데... 이제 뭐부터 해야하지?
절차는 아래와 같다.
1. 도메인 탐색
- H&M 이라는 회사가 어떤 회사인지?
- 전달 받은 데이터는 대략적으로 어떤 데이터인지?
- H&M의 가장 중요한 목표/목적은 무엇인지?
2. 라이트 EDA
- 데이터 로드, 크기, 컬럼 확인 → excel, 노션 등.. 파일로 정리
- 데이터 간 관계(ERD) → 그려보기
- (선택) 결측치/이상치 확인 → 처리
- (목표/목적과 연관된) 주요 컬럼 분포 확인(Age, transactions date, article …) → 무엇이 주요 컬럼? → 도메인 탐색에서 목표.목적에 부합하는..
- 항상 호기심을 가지고 데이터를 들여다보기(= 질문을 던져본다)
질문1: 거래 데이터의 기간은 어떻게 될까? ➡️ transactions
질문2: 실제 거래한(구매한) 고객은 몇 명 정도일까? ➡️ transactions
질문3: 온/오프라인 거래 건수의 차이는 얼마나 날까? 어디가 비중이 더 높을까? ➡️ transactions
질문4: 가장 중요한 고객의 나이 분포는 어떻게 나타날까? 어느 고객층이 많을까? ➡️ customers
질문5: 어떤 상품이 많이 팔렸을까? ➡️ transactions / articles : merge
질문6: 시간대(월)별 거래량이 차이가 있을까? ➡️ transactions
.
.
.
질문N: 패션 뉴스 구독, 멤버십 등의 분포는 어떻게 될까? ➡️ customer
등등
3. 비즈니스/프로젝트 목표 세우기
- 초기 탐색을 통해 여러 방향의 분석 가능성을 확인했으니,
- 이 중에서 어떤 비즈니스 문제를 중점적으로 풀 것인지 목표를 설정
- 고려해볼 만한 프로젝트/분석 목표
- 고객 세그먼트별 추천 시스템 구축
- 고객들을 구매 행동이나 인구통계에 따라 세분화하고, 각 군집에 맞춤형 상품을 추천
- 예를 들어, 10대 고객군에게 인기 있는 상품 vs 30대 고객군 인기 상품을 비교하고, 향후 개인화 추천의 기초 구성
- 이 방향은 고객 관점에서 개인화 서비스를 향상시켜 재구매율과 고객 충성도를 높이는 것이 목표
- 재구매 고객 분석 (고객 충성도 분석)
- 한 번 구매하고 이탈하는 고객과 반복 구매하는 충성 고객의 특성을 비교 분석
- 예를 들어, 데이터에 다회 구매 고객 vs 1회성 고객 비율을 확인하고, 충성 고객의 구매 패턴(구매 간격, 구매 상품 종류)을 파악
- 이를 통해 이탈률을 낮추는 마케팅 전략 (예: 할인 쿠폰, 맞춤 프로모션)을 제안 가능
- 인기 상품 분석 및 재고 최적화
- 어떤 상품이 가장 잘 팔리는지 및 어떤 상품이 잘 안 팔렸는지를 분석
- 상위 판매 상품들이 매출에 얼마나 기여하는지 파악하고, 반대로 재고만 차지한 비인기 상품을 식별
- 이를 통해 한정된 매장 공간과 자본을 인기 상품에 집중시키고, 느린 회전 상품은 적정 수준으로 재고를 줄이거나 프로모션을 검토
- 나아가 시즌별로 어느 카테고리가 잘 팔렸는지를 알아내어 수요 예측 및 상품 기획에 활용
4. 가설 설정 : 목표 근거 확인
💡 탐색하고 검증할 몇 가지 가설을 수립!!
→ 가설은 이후 분석 방향을 이끌 길잡이 역할, 데이터로부터 어떤 이야기를 도출할지 미리 예상하는 단계
- 몇 가지 가설들
가설1: 매출의 대부분이 일부 인기 상품에 집중되어 있을 것
가설2: 상 품 대분류(제품군)별로 판매 편차가 크고, 특히 여성복 카테고리가 가장 큰 매출 비중을 차지할 것
가설3: 상당수 상품이 재고로 남아있다. 판매량이 매우 조저한 상품이 많을 것이다.
가설4: 시즌별로 잘 팔리는 상품 유형이 다를 것이다.
. . .
등
5. 미니 검증
- 위에서 세운 가설들에 대해 시각화로 검증하는 단계
- 예시) 가설1 : 매출의 대부분이 일부 인기 있는 상품에 집중되어 있을 것이다.
▼ 확인
핵심 아이디어: SKU별 판매건수를 내림차순으로 누적합하여 상위 20% 지점의 누적 비율을 확인
여기서 SKU 란?
- “재고관리단위”라는 뜻으로, 회사 내부에서 재고·판매를 추적하기 위해 붙이는 고유 코드
- H&M 데이터에서는 articles_hm.csv 의 article_id를 SKU처럼 생각하시면 됩니다.
- H&M 내부에서 하나의 판매 가능 아이템을 나타내는 식별자이므로, 실무적으론 SKU 단위 분석과 동일하게 쓰면 돼요.
# 1) SKU별 판매건수 (그 SKU가 거래에 등장한 횟수)
sku_counts = tx["article_id"].value_counts().sort_values(ascending=False) # 내림차순
total_sales = sku_counts.sum() # 전체 거래건수
n_sku = len(sku_counts) # 2019년에 '1번 이상' 팔린 SKU 수
# 2) 누적 비율 계산(누적합 ÷ 전체)
cum_counts = sku_counts.cumsum()
cum_share = cum_counts / total_sales # 0~1 사이 값
# 3) 상위 20% 지점의 누적비율 (집중도)
idx20 = max(int(n_sku * 0.2) - 1, 0) # 20% 위치(인덱스)
top20_share_pct = float(cum_share.iloc[idx20] * 100)
print(f"[가설1-파레토] 상위 20% SKU 누적 비중: {top20_share_pct:.2f}% (판매된 SKU 수: {n_sku:,})")
# 4) 그래프(누적 곡선) : x=SKU 누적비중, y=누적 판매비중
x_share = [i / n_sku for i in range(1, n_sku + 1)]
y_cum = list(cum_share.values)
plt.figure(figsize=(6.8, 4.2))
sns.lineplot(x=x_share, y=y_cum)
plt.axvline(0.20, ls="--") # x=20% 보조선
plt.axhline(y_cum[idx20], ls="--") # 해당 y값 보조선
plt.title("SKU별 누적 매출 점유율(파레토)")
plt.xlabel("SKU 점유율")
plt.ylabel("누적 점유율")
plt.tight_layout()
plt.show()

6. 선택/심화
- 추가적인 아이디어 및 가설에 대해 검증해본다.
7. 최종 결론
- 검증된 내용으로 몇 가치 주제를 명시
- 분석 결론 명시
- 비즈니스 인사이트 제시
- 결론 요약 정리: 만약 상사에게 보고한다면?
▼ 확인(에시)
"이번 온보딩 프로젝트를 통해 H&M의 판매 데이터 분석을 수행한 결과, 매출의 상당 부분이 일부 인기 상품과 여성복 카테고리에 집중되어 있고, 많은 상품이 재고로 남는 현상이 있음을 발견했습니다. 이를 근거로 히트 상품 위주의 재고 운영과 비효율 상품 구조조정, 시즌별 제품 전략 강화 등의 개선안을 제안드립니다. 이러한 인사이트는 향후 재고 비용을 절감하고 매출을 극대화하는 데 도움이 될 것으로 기대됩니다.”
라이트 EDA 해보기
- 추가 예정
'데이터 전처리 & 시각화' 카테고리의 다른 글
| [과제] 부동산 데이터셋 - 개인 프로젝트 과제 회고 📄 (1) | 2025.10.09 |
|---|---|
| [시각화/과제] pandas 시각화 미니과제 - Seaborn 실습 (2) | 2025.09.26 |
| [전처리/시각화] 0925 시각화 세션 - 😎 데이터 시각화 한 번에 끝내기! (matplotlib, seaborn) (2) | 2025.09.25 |