[기초 프로젝트] 2일차 : 데이터 탐색 및 전처리(중복값, 전처리) 정리(feat. 멘붕)

[2025.09.05. 금요일] 기초 프로젝트 2일차

1. APPASA 분석기법에 따른 팀 프로젝트 적용
2. 개인 별 3개의 데이터셋 탐색
3. 결측치, 중복값 처리

 우선 APPASA 분석기법에 따라 Process 단계까지 같이  정리하였다.
(APPASA 란? Ask, Prepare, Process, Analyze, Share, Act 의 절차이다.)

 

 

1. Ask

  • 배경 이해하기 
H&M은 1947년 설립되어 전 세계 70여 개국에서 의류, 홈, 뷰티, 아동 의류를 판매하는 대표적인 패션 기업입니다.

“h&m 을 이용하는 고객의 나잇대별 매출은 어떻게 되어있는지, 또는 많이 판매가 되고 있는 상품군(의류, 악세러리,  등)은 어떤 것이 있으며, 계절에 따른 매출의 변화가 있는지, 그리고 계절에 따른 매출이 높은 상품군은 무엇인지 등 매출 추이를 파악하여, 어떤 요인들이 수익성에 가장 큰 영향을 미치는가?”를 데이터로 확인하려 한다.

단순히 “많이 팔렸다”가 아니라, 시즌성, 나이 세그먼트(?)와 같은 구체적 요인과 트렌드를 파악하는 것이 핵심이다.
  • 비즈니스 이해하기
데이터 분석의 최종 목적은 고객 경험을 개선하여 매출 성장에 기여하도록 인사이트를 제공하는 것이다.

구체적으로는:
 1. 어떤 요인에 매출에 가장 큰 영향을 주는가? (예 : 상품의 가격, 디자인, 색상 등)
 2. 특별한 시즌(블랙프라이데이, 크리스마스 등)이 매출에 큰 영향을 주는가?
 3. 가장 매출이 높은 상품군과 낮은 상품군은 무엇인가?
 4. 패션 뉴스 구독이 매출 또는 장기 고객?에 영향력이 있는가?
 5. 온/오프라인의 매출 차이는 어떤가? 
 6. 구매력이 있는 나이(추정 30-40대)는 어디인가? 20대가 가장 많았다.

→ 수익 극대화 전략을 제시하고, 고객 경험 개선의 방향을 잡는 근거로 활용하는 것이 이번 비즈니스 목표이다!
  • 분석 범위 및 제한 이해하기
1. 범위 : 고객 - 상품- 거래 데이터 (customer_hm.csv, transaction_hm.csv, articles_hm.csv)
     (고객 세분화, 상품군 분석, 구매 패턴 탐색)

2. 제한 :
   - 고객 만족도는 확인할 수 없음
   - 동종업계 경쟁사에 대한 데이터를 확인할 수 없음
   - 고객의 유입 경로를 알 수 없음
   - 데이터 보안상 실제 price를 알 수 없음
   - 고객의 성별을 알 수 없음
  • 산출물 이해하기
H&M의 매출 성장 전략을 위한 의사결정을 지원할 수 있는 분석 보고서(PPT)를 만들자!!
 - 나이대별 총 매출 시각화 ➡️ 어떤 나이대의 구매력이 가장 높은가?
 - 계절/시즌별 구매 패턴 분석 ➡️ 어떤 계절 또는 분기에 구매가 많고, 어떤 상품군을 구매하는가?
 - 나이대별 선호 상품군(탑5) 시각화 ➡️ 어떤 컬럼을 사용할 것인지? (카테고리가 너무 다양해서 딱 선택해야 할 듯)
 - 구매를 위해 온라인을 이용하는 고객의 나이대 ➡️ 패션 뉴스 구독을 하면 구매율이 높은가?
 - etc ... ... 

 

 

2. Prepare

  • 데이터 출처 파악하기 : 캐글 데이터
  • 데이터 형식과 구조 이해하기
 - 형식 : CSV 파일
 - 구성 : customer_hm.csv, transaction_hm.csv, articles_hm.csv  [2019년 1년치 데이터]
               (약 104만 행의 고객/판매 데이터, 약 100만 행의 품목 데이터)

 - 주요 컬럼 구조 : 구글 공유폴더를 참고한다.
    ▶ 주요 컬럼 요약 : FN(패션뉴스 구독여부), age(나이), price(금액), sales_chanel_id(온2/오프1라인), t_dat(구매일) 등등 
  • 데이터 품질 검토하기 : 데이터에 결측치, 중복, 불일치가 있는지 대략적 검토
- 결측치
  ▶ 'detail_desc' 416개 확인 ➡️ "Unknown" 대체값 처리
  ▶ 'fashion news frequency' 1개 확인  ➡️  "NONE" 대체값 처리

-  중복 데이터
  ▶ transaction 테이블에서 중복데이터 약 8470개 확인
     (약 8500개 이면 많아 보이지만, 전체 데이터 100만 개 대비 1%가 안되는 수치) 
➡️ 확인결과, 모든 컬럼 중복값 확인 : .drop_duplicated() 처리

→ 위와 같은 품질 이슈들이 있었으나, 처리가능한 일반적인 수준이므로 최종적으로 해당 데이터셋을 사용하기로 결정합니다!

 

 

3. Process

  • 탐색적 데이터 분석(EDA) : 데이터를 요약 통계, 시각화 등을 통해 전반적으로 탐색
    • 변수 간 관계, 분포, 트렌드를 파악하여 인사이트의 단서를 찾는다.
- 나이대 별 구매량 비교  ➡️ 20대에서 가장 구매량이 높았음
- 월 별 구매량 비교  ➡️ 여름인 5-7월 사이가 가장 구매량이 높았음
- 가장 많이 팔린 상품군  ➡️ 여성복, 아동복, divided 등...
- 가장 많이 팔린 상품 색상  ➡️ 블랙, 네이버, 화이트 ... ... 순   
  • 결측치 처리하기
- 결측치
   ▶ 'detail_desc' 416개 확인  ➡️ "Unknown" 대체값 처리
   ▶ 'fashion news frequency' 1개 확인  ➡️ "NONE" 대체값 처리
  • 이상치 처리하기 : 다른 데이터와 비교했을 때 지나치게 크거나 작은 비정상적인 값을 탐지하고 제거 또는 조정
- age 컬럼에 90대의 구매한 데이터가 존재하였고, BoxPlot 그래프로 나이를 시각화한 결과 이상치(Outliers)가 존재했음
 하지만, 이것은 실제로 90대가 구매했을 수도 있으며 데이터의 정보가 제한적이기에 이상치 라고 보기에는 어려움이 있을 것 같다.
  • 데이터 정제하기 : 중복 데이터 제거, 잘못된 입력값 수정, 형식(날짜·숫자·문자) 통일 등 일관되게 조정
-  중복 데이터
   ▶ transaction 테이블에서 중복데이터 약 8470개 확인 (약 8500개 이면 많아 보이지만, 전체 데이터 100만 개 대비 1%가 안되는 수치)  ➡️ 확인결과, 모든 컬럼 중복값 확인 : .drop_duplicated() 처리

- t_dat : 구매일 컬럼의 dtype을 'object' ➡️ 'date time' 변환
  • 데이터 변환하기 : 분석에 적합하도록 변수를 변환하거나 새로운 변수 생성(로그 변환, 범주형 변수 인코딩, 파생변수 생성 등)
- age 컬럼 : values를 나이대(10단위)로 묶어 새로운 변수(컬럼) 생성
- price 컬럼 : values가 소숫점(예: 0.00565672..)으로 이루어져 있고 스웨덴 화폐 단위라는 사실을 알고 원화로 변환을 시도 하였으나,  [ 🎯 문제점: price의 값은 정규화로 변환한 값(0에서 1 사이의 값)으로 price의 최대값과 최소값을 알지 못한 상태에서 변환할 경우 잘못된 값을 얻게되며 신뢰성이 크게 떨어진다는 튜터님들의 의견을 듣고 다시 원상태로 회귀하였음.]

🚨 오늘의 회고 및 느낀점

더보기
[2025.09.05. 금요일] 프로젝트 팀장, 마음의 무게...
나름 잘 할 수 있겠지 생각을 했었고, 무난할 것 같았던 생각은 산산이 무너져 버렸다. 커머스 시장에 대해서 자세히 알지도 못하고 분석을 처음 배우기도 한 상태여서 '리더'로서 어떻게 체계적으로 이끌어야 할지 너무 막막했다.
팀원들에게 각자 '테이블셋 탐색'을 해서 인사이트를 찾아오자 했지만, 막상 하고 공유하고 나니 그 다음에는 무엇을 해야하는지 몰라서 머릿속에 하얘졌다. 그렇게 오늘의 목표였던, 인사이트 도출과 분석 방향 설정을 하지 못한 채 끝나버렸다.
어떻게 해야 할까?... 그래 OK!!!!!  잘해야 한다는 생각을 내려 놓자. 그게 내 마음의 무게였던 거야.

아직 기초 프로젝트 잖아. 데이터도 제한적(?)이고 어렵게 생각하지 말자! 우리가 너무 디테일하게 생각하려고 해서 더욱 더 어렵게 느껴지는 것 같다. 전체적으로 큰 맥락에서 데이터를 이해하고, 순차적으로 들어가려는 시도를 해야겠다.

주말에 시간을 할애해서 '데이터셋 탐색' 후 얻은 나의 인사이트를 정리해 보자. 그리고 팀원들이 정리한 것도 확인해보고 '공통된 내용과 인사이트'를 추려보자. 그러면 답이 나올지도? 

 

끝.

4. Analyze  5. Share  6. Act 는 진행 후 작성할 예정