벌써 최종 프로젝트 2주차 마지막 날이라고? 시간이 너무 빨리 간다.
팀 프로젝트
- 문제 정의 완료 및 가설 설정 완료
- 어젯밤 팀원 모두 야근하면서 문제 정의에 매달렸는데, 다행스럽게도 성과가 있었다.
- 아침 일찍 모닝 코딩 하면서 살펴봤는데, 러프하게 살펴본 문제에 대한 확실한 원인을 규명할 수 있었다!
- 문제 정의하면서 튜터님께 틈틈이 가설 설정 관련한 조언을 구했고, 일단 임시지만 설정한 가설들 모두 문제를 풀이하는 데 있어 괜찮은 가설이라 하셔서 그대로 진행할 예정.
- 이제 다음 주 초반에 가설 검증하고, 검증한 가설로부터 액션 플랜 도출해서 제공 서비스(대상은 바뀔지도 모르겠지만) 기획까지 끝내면 된다!
- 데이터 스키마 작성
- 사실 아직까지도 데이터 스키마에 대해 정확한 워딩 정의를 모르곘다.
- 데이터베이스 스키마
- 관계형 데이터베이스 내에서 데이터가 구성되는 방식을 정의하는 것.
- 데이터베이스 스키마에는 테이블 이름, 필드, 데이터 형식 및 엔티티 간 관계와 같은 논리적 제약 조건이 포함됨
- 데이터베이스 스키마 설계 프로세스를 데이터 모델링이라고 함.
- 개념적 데이터베이스 스키마 / 논리적 데이터베이스 스키마 / 물리적 데이터 베이스 스키마의 세 가지 유형이 있다
- 개념적 스키마 : 시스템에 포함될 내용, 구성 방법, 관련된 비즈니스 규칙에 대한 큰 그림
- 논리적 스키마 : 테이블 이름, 필드 이름, 엔티티 관계 및 무결성 제약 조건과 같은 정보를 사용하여 스키마 개체를 명확하게 정의
- 물리적 스키마 : 테이블 이름, 필드 이름, 엔티티 관계 등과 같은 컨텍스트 정보 외에도 논리적 데이터베이스 스키마 유형에 없는 기술 정보를 제공
- 우리 팀이 이번 프로젝트에서 사용한 데이터셋의 테이블들을 작성해보았다. 기본키/외래키로 각 테이블들 간 연결을 만들어서 연결되는 부분은 화살표로 표현
고찰 & 기타
- 어제 밤에 야근하면서 이커머스 매출 발생 관련 요인 검색할 때 참고한 블로그들
- 이커머스 주요 지표를 정리해보자 / 리텐션은 허영지표입니다
- 두 번째 블로그 보면서 월별 신규 유입된 고객이 몇 달 후까지 구매를 지속하는지, 잔존 인원수에 대한 인사이트를 얻었다.
- 그래서 우리 데이터에서 이 부분을 확인해봤는데 꽤 유의미한 결과를 얻었다!
오늘의 코딩 : 이제 필요한 데이터 추출하기 위해 이정도 파이썬 코딩은 혼자서 술술 할 수 있게 되었다! 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 |