세조목

실전 프로젝트 6일차(24.03.05) 본문

데이터 분석 공부/프로젝트

실전 프로젝트 6일차(24.03.05)

세조목 2024. 3. 5. 22:13

실전 프로젝트 6일차입니다.

위에서부터 순서대로 (중급)-1, (고급)-1, (고급)-2

금일은

  1. (중급)-1 라인 차트 그리기
  2. (고급)-1 파이 차트(or else) 그리기
  3. (고급)-2 & (지옥) 개별적으로 풀어보기

를 진행했습니다.

 

(중급)-1 의 경우 앞서 풀었던 (초급)-1~3 문제를 한 번에 표현하는 것으로 위와같이 시각화했습니다.

 

(고급)-1의 경우 의문사항이 생겨 기존의 데이터를 가지고서 시각화를 진행할 수가 없었습니다.

(고급)-1은 아래와 같은데요,



저희는 아래와 같이 각각의 테이블에서 user_id와 product_id(첫번째 fixed에서의 경우 split)를 기준으로 created_at의 최소값을 구해서 전자가 후자보다 작은지를 구해보았습니다.

 FIXED [User Id], [split] : MIN([Created At]) }
< { FIXED [User Id (Order Items.Csv], [Product Id] : MIN([Created At]) }

 

그러나 이렇게 진행할 경우 '최소'라는 말 그대로 가장 오래된 주문 data만 남게됩니다.

이것이 문제가 될수도 있겠다고 생각한 이유는 다음과 같습니다.

저희의 경우 user_id와 product_id를 기준으로 created_at을 계산했습니다.

이 때 Min함수를 씌워서 가장 최소의 created_at을 구했습니다.

그런데 이렇게 할 경우 아래 이미지의 노란색 부분만 남게 됩니다.

이렇게 되면 user_id, product_id 한 쌍의 event, order 시간 각각을 비교할 수가 없습니다.

아래 이미지의 하얀색 부분에 해당하는 경우가 바로 이 경우입니다.

 

해당 부분에 대해서 튜터님께 문의한 결과

현재 난이도에서는 그 부분까지는 고려하지 않아도 되고,

위 이미지의 노란색 부분만을 가지고서 event 시간이 order 시간 이전에 있는지만 판단하면 된다고 하셨습니다.

그렇게하려면 python을 가지고서

event 테이블, order 테이블별로 각각 groupby한 다음

최소의 created_at을 구하고, 두 테이블을 join하여 시간을 비교해줘야 합니다.

 

관련 작업은 내일 진행할 예정이며

작업이 끝나면 그 다음 문제인 (고급)-2 예제도 진행해보려고합니다.