transaction data의 price가 아래와 같이 상품가격이라고 보기 어려운 단위로 제공됨
→ 온/오프라인 거래 비교, 온라인 쇼핑몰 구매 특성 분석이라는 분석 목적을 위해서는 가격을 사용할 필요가 있다고 판단.
→ 영문 데이터인 점 등을 고려하여 가격 단위를 달러로 맞추기로 결정
→ 단순히 10의 배수를 곱하는 방법은 부적절하다고 보임
→ 현재 H&M 웹사이트의 가격을 참고하여 가격을 조정하기로 함
현재 H&M 웹사이트의 가격을 참고하고, 단순 배수가 아닌 가격 간격 조정이 필요하다는 결론
구체적 구현에 어려움을 겪어 튜터님의 조언을 구해 코드를 구상
def scale_value(value, old_min = o_min, old_max = o_max, new_min = n_min, new_max = n_max):
# 원래 범위에서의 상대적 위치 계산
scaled_value = (value - old_min) / (old_max - old_min)
# 새로운 범위로 변환
scaled_value = scaled_value * (new_max - new_min) + new_min
return scaled_value
transaction에 있는 price의 경우, 같은 상품이어도 값이 다른 경우가 다수 존재
→ 여러 국가의 판매가가 섞여 있어 동일 상품의 가장 높은 값을 정가로 간주할 수 없음. 실거래가만 생성
# 신규 데이터프레임 생성
new_hm = hm.copy()
# 실거래가 생성 - 함수 적용
new_hm['actual_price'] = new_hm['price'].apply(lambda x : scale_value(x))
# 소수점 2자리 라운드
new_hm['actual_price'] = new_hm['actual_price'].round(2)
오늘의 기록 - 이거 정말 필요할까?
price 전처리를 두고 가장 많이 했던 말, "이거 정말 필요할까?"
비단 이번 transaction 데이터에서의 price 뿐만 아니라, 다른 모든 데이터 분석을 하면서도 계속 던져야 할 질문이라는 생각이 들었다.
이번 경우 price를 쓸지 말지, 어떻게 쓸지에 대한 정의가 확립되지 않았기 때문에 구체적으로 어떤 전처리를 할지에 대한 논의가 미뤄졌다는 생각이 들었다.
이게 정말 필요한건지, 왜 해야 하는건지에 대한 확신이 없으면 전처리를 할 때도, 분석을 할 때도 어떤 방법을 사용할지마저 혼란이 오게 된다.