내일배움캠프_데이터분석_2기/TIL

[TIL] camp_day77_240802

단ee 2024. 8. 2. 21:20

벌써 최종 프로젝트 2주차 마지막 날이라고? 시간이 너무 빨리 간다.

팀 프로젝트


  1. 문제 정의 완료 및 가설 설정 완료
    • 어젯밤 팀원 모두 야근하면서 문제 정의에 매달렸는데, 다행스럽게도 성과가 있었다.
    • 아침 일찍 모닝 코딩 하면서 살펴봤는데, 러프하게 살펴본 문제에 대한 확실한 원인을 규명할 수 있었다!
    • 문제 정의하면서 튜터님께 틈틈이 가설 설정 관련한 조언을 구했고, 일단 임시지만 설정한 가설들 모두 문제를 풀이하는 데 있어 괜찮은 가설이라 하셔서 그대로 진행할 예정.
  • 이제 다음 주 초반에 가설 검증하고, 검증한 가설로부터 액션 플랜 도출해서 제공 서비스(대상은 바뀔지도 모르겠지만) 기획까지 끝내면 된다!
  1. 데이터 스키마 작성
    • 사실 아직까지도 데이터 스키마에 대해 정확한 워딩 정의를 모르곘다.
    • 데이터베이스 스키마
      • 관계형 데이터베이스 내에서 데이터가 구성되는 방식을 정의하는 것.
      • 데이터베이스 스키마에는 테이블 이름, 필드, 데이터 형식 및 엔티티 간 관계와 같은 논리적 제약 조건이 포함됨
      • 데이터베이스 스키마 설계 프로세스를 데이터 모델링이라고 함.
      • 개념적 데이터베이스 스키마 / 논리적 데이터베이스 스키마 / 물리적 데이터 베이스 스키마의 세 가지 유형이 있다
      • 개념적 스키마 : 시스템에 포함될 내용, 구성 방법, 관련된 비즈니스 규칙에 대한 큰 그림
      • 논리적 스키마 : 테이블 이름, 필드 이름, 엔티티 관계 및 무결성 제약 조건과 같은 정보를 사용하여 스키마 개체를 명확하게 정의
      • 물리적 스키마 : 테이블 이름, 필드 이름, 엔티티 관계 등과 같은 컨텍스트 정보 외에도 논리적 데이터베이스 스키마 유형에 없는 기술 정보를 제공
    • 우리 팀이 이번 프로젝트에서 사용한 데이터셋의 테이블들을 작성해보았다. 기본키/외래키로 각 테이블들 간 연결을 만들어서 연결되는 부분은 화살표로 표현

고찰 & 기타


  • 어제 밤에 야근하면서 이커머스 매출 발생 관련 요인 검색할 때 참고한 블로그들
  • 오늘의 코딩 : 이제 필요한 데이터 추출하기 위해 이정도 파이썬 코딩은 혼자서 술술 할 수 있게 되었다! 4달 전에 print("hello, world!") 출력했던 걸 생각하면 정말 많이 성장했다.

      python
      # 첫 번째 구매일 추출
      orders_customers_first_purchase_date = orders_customers.groupby('customer_unique_id')[['order_purchase_timestamp']].min().reset_index()
    
      # 컬럼 명 변경
      orders_customers_first_purchase_date.columns = ['customer_unique_id', 'first_purchased_order']
    
      # 원래 데이터프레임에 고객 별 첫 번째 구매일 결합
      orders_customers_b = orders_customers.copy()
      orders_customers_b = pd.merge(orders_customers_b, orders_customers_first_purchase_date, how= 'left', on= 'customer_unique_id')
      orders_customers_b
    
      # customer_unique_id 기준, customer_id가 중복인 값 확인
      orders_customers_c = customers.groupby('customer_unique_id').agg('count').reset_index()
      list_a = orders_customers_c[orders_customers_c['customer_id'] > 1]['customer_unique_id']
    
      # 파생변수 'is_repeated_customer' 생성 : 2회 이상 구매한 고객 라벨링
      # 2,997명이 재구매, 재구매한 구매 건은 6,342건
      orders_customers_b['is_repeated_customer'] = orders_customers_b['customer_unique_id'].isin(list_a).astype(int)
    
      # 날짜를 기준으로, 첫 구매인지 아닌지 필터링
      def is_first_buying(row):
          if row['first_purchased_order'] == row['order_purchase_timestamp']:
              return 1
          else:
              return 0
    
      # 각 주문 별 첫 구매에 해당하는지 아닌지 필터링
      orders_customers_b['is_first_purchase'] = orders_customers_b.apply(is_first_buying, axis=1)
    
      # 데이터 케이스 확인
      orders_customers_b[orders_customers_b['customer_unique_id']=='00a39521eb40f7012db50455bf083460']

'내일배움캠프_데이터분석_2기 > TIL' 카테고리의 다른 글

[TIL] camp_day82_240809  (0) 2024.08.09
[TIL] camp_day72_240726  (0) 2024.07.27
[TIL] camp_day71_240725  (0) 2024.07.26
[TIL] camp_day70_240724  (0) 2024.07.25
[TIL] camp_day69_240723  (0) 2024.07.23