본캠프/TIL ♨

0625 시계열 데이터는 ischurned 다음에 cutoff 해야한다 머리에 새긴 하루...

yssummer 2025. 6. 25. 23:59

0625 시계열 데이터는 ischurned 다음에 cutoff 해야한다 머리에 새긴 하루... 랑 관련해서 튜터님께서 오전에 설명하신 내용 이해하고 정리하고, 그 조언을 적용해서 전처리 수정한 팀원분이 새로 작업해서 보내주신 모델링 코드 숙지하는데 또 한 세월 보내고, 

이 전처리 완성되기 전에 일단 태블로용 시각화 하고 있었던터라 앞으로 변하게 돼서 폐기해야할 파생변수 판단하고(그럴 줄 알긴 해서 최대한 관련있는거 피해서 만들고있었음), 그렇게 하기 전에

태블로 시각화 매출 4개 만들고,

파생변수 병합 코드 관련해서 아래와 같은 문제가 발생했었는데 해결되었다

오 연서님 계셨군요!
다름이 아니라, 그 아주 전에 저희 A안,B안,C안 합쳐서 최종 파일 만들때,
r_orders_final(A+B+C) 파일 주셨던거요!
 
그거를 다시 한번 보고 있었는데,
이거 연서님은 저 파일 그대로 잘 돌아가시나요?!

박연서(Data_6기)  오후 11:09

지금 바로 돌려보겠습니다
 

그 제가 먼저 C안 합친다음에 합쳐지는 게 r_cuisine으로 알고 있는데
그 부분 병합할 때 r_id 없다고 에러가 떠서요!

 

앗 그러면 연서님은 저 파일 그대로 돌렸을 때 r_orders_final = r_orders.merge(r_cuisine, on='r_id', how='left'에서 키값 에러가 안 뜬다는 거군요!?
흠 저도 그대로 돌렸는데...저 부분에서 자꾸 에러가 뜨더라구요

여기서부터 해결된 내용이다::::::::

필요한 파일도 다 제대로 들어가있고,
r_cuisine도 불러올 때 코드상 인코딩 utf-8 지정해서 잘 불러와졌는데

항상 그 다음 r_cuisine이랑 r_orders병합에서 키값 없다고 에러가 떴는데

 
ㅎㅎㅎ그게 r_cuisine을 분명 코드로 인코딩 UTF-8로 불러오라고 실행은했지만 이게 먹히지 않은채로 불러와서
 
r_cuisine 파일에 r_id가 이상한 러시아어?로 계쏙 되어있었더라구요

 

이런 오류가 있을 수 있군 휴 큰 문제인 줄 알고 엄청 걱정했는데 다행다행

 

오!!! 큰 문제가 아니라니 정말 다행입니다 ㅠㅠㅠ

네네!!! 정말 다행입니다!! 왜안되나 궁금해서 잠못잘뻔했어요!!! 감샤해요!!!

 

UTF-8이 안먹힌 건 왜인가요?? 실행이 안눌린 건가요?? 다른 원인이 있나요??

 

인코딩 utf-8이 먹히지 않은 건,
애초에 파일 확장자가 .csv여도, 실제로는 cp949, euc-kr, utf-16, ansi 등 다른 인코딩일 수 있대요!
이 경우에 encoding='utf-8'로 코드가 실행되고 파일 열기는 됐지만, 내용이 꺠지거나 컬럼명이 이상하게 들어올 수도 있다고 하네요!

 

 

 

요런 문제였다!!

앞으로도 주의할 수 있을 것 같다

 

 

오늘부로 모델링에서  반영된 수정사항은 이거임

::

팀원 작업 요약: date_test.py 기준

  1. 이탈 기준 변경됨
    1. 기존에는 last_order_date와 전체의 max 날짜 사이의 차이로 이탈 여부를 판단했지만
    2. 변경 후에는 각 유저의 마지막 2건 주문 간의 간격을 계산해서,
    1. 200일 이상이면 is_churned = 1 (이탈)
    2. 그렇지 않으면 is_churned = 0 (잔존)
  2. 컷오프 방식 수정됨
    • 기존 문제: 3월 이전 데이터만 보고 cutoff를 먼저 적용했더니 last_order_date 기준값이 잘려버림 따라서 이탈자 구분 오류 발생
    • 현재 방식: cutoff를 나중에 적용하고, 이탈 판단을 먼저 수행함
    • 시계열적으로 더 자연스럽고 정확하게 이탈 여부 파악 가능
  3. 새롭게 생성되는 컬럼
    • last_order_date (가장 최근 주문일)
    • is_churned (200일 이상 주문 없었는지 여부)
  4. 최종 데이터 저장: zomato3_ver4.csv로 export

이거 이해하는 거 진짜 한 단어 한 단어씩 찐공부했다.....

 

이후 우리가 해야할 일은 이거다... 내용 너무 많아서 요약은 지피티가 해줬다...