배경
데이터 시각화 과정에서 SQL과 기초 분석, 시각화를 배움
이를 더 숙달하기 위해 미니 프로젝트 진행

데이터 셋
Brazilian E-Commerce Public Dataset by Olist

가설
시간대별 재주문을 분석하면 타임 할인을 활용하여 매출 증대를 얻을 수 있을 것이다

분석 과정
데이터 셋 중 orders data와 order_payments data를 활용하여 시간대별 재주문을 분석해 보았음

결론
재주문 데이터보다 시간대별 매출 현황을 알아보는 것이 타임 할인에 유리하다는 생각이 들어 경로를 변경

가설을 세울 당시에는 주문 시간대 중 가장 많은 시간을 차지한 시간 대에 매출 증대를 위한 마케팅을 해볼 수 있을 것으로 생각을 했습니다. 그 도구로 타임 할인, 이벤트 등을 활용하여 효과를 얻을 수 있을 것이라고 생각 했습니다.
그에 따라 작업한 내용을 아래에 서술합니다.

orders data csv 파일이 주축을 이루어 그 파일을 기준으로 살펴봤습니다. 컬럼 중 order_id, customer_id는 해쉬 값으로 이루어져 있었고 그 중 order_id를 프라미머리 키로 사용했습니다. 보통 order_id는 숫자로 이루어져 있을 것이라는 관념이 있지만 이 데이터 셋에서는 매출의 양이라던가 고객의 양 등을 노출하기 싫어하는 의도가 있지 않을까 하는 코치님의 견해가 있었습니다. 보통 해쉬 값을 사용하려는 기업은 위 데이터 셋처럼 처음부터 주문 아이디를 생성할 때 해쉬 펑션을 활용하기도 한다고 하셨습니다. 고객 아이디도 그와 같은 절차를 거쳤을 것입니다.
이어서 컬럼 특성을 살펴보면 order_status에서는 delivered, invoiced, shipped, unavailable 등의 값을 가지는 걸로 보아 배송 상태를 나타내는 것 같고 여기에서 invoiced는 접수만 된 것을 의미하는 것 같아 종합해 보면 주문의 상태를 나타내는 컬럼인 것 같습니다. 이 외에도 승인된 주문, 배송 시작일, 배송 완료일, 배송 예상일의 컬럼이 있었습니다.
order_payments 파일에서는 order_id, 지불 방법, 지불 형태, 지불 내역, 총 금액 등을 살펴볼 수 있습니다.
두 개의 시트에서 order_id를 primary-key로 사용하려 했으나 payments 파일에서 order_id가 충돌이 나는 바람에 새로운 id를 생성해서 PK로 지정했습니다.
orders 파일에 중요한 시간 정보가 있었습니다. 금액 정보는 payments 파일을 활용했습니다. 2개의 table을 합쳐서 데이터를 뽑기 위해 JOIN 문을 활용했습니다. 수업 시간에 코치님께서 Index를 활용하면 log(n)의 시간 복잡도로 시간이 오래 걸리는 JOIN 문에서 드라마틱한 성능 향상을 체감할 수 있을 것이라고 하셨습니다. 보통 Index는 primary-key에 적용이 되는 툴들이 있고, 저희가 사용하는 Workbench에서는 이를 지원해 줬습니다. payments table의 PK는 임의로 설정한 id 값이었지만 각 테이블에서 동일하게 가지고 있는 order_id를 사용하기 위해 payments 테이블의 idx를 새로 설정해 주었습니다. 아래는 그 구문입니다.

이어서

  • datetime에서 시간 정보를 얻어냅니다.
  • 날짜 데이터에서 일부만을 추출합니다.
  • DATEFROMAT을 사용합니다.
    %I는 두자리 숫자로 나타내주고 %p는 AM, PM을 표현해 줍니다.
  • CAST로 형태를 맞춰줍니다.
    DATEFORMAT을 적용한 데이터를 CAST로 형태를 맞춰줍니다.
    AS로 이름표를 지정해 사용할 수 있습니다.
  • Jupyter lab을 활용하여 파이썬 코딩을 합니다.
  • 파이썬의 pyplot 라이브러리를 활용하여 그래프를 그립니다.



아래와 같은 결과를 얻었습니다.


[도표 1] 시간대 별 매출 추이

브라질 식사 시간을 살펴보면 보통의 사람들은 점심을 12시에서 1시 정도 그리고 저녁은 7시 경에 먹는다는 것을 검색으로 알 수 있었습니다. 취침 시간을 검색해 보면 밤 10에서 12시 사이라는 걸 알 수 있습니다.

도표를 살펴보면 오전 7시 경에 총 매출 금액이 가파르게 상승하는 것을 볼 수 있습니다. 이는 오전 11시까지 꾸준히 이어집니다. 점심시간에는 매출 금액이 갑자기 줄어드는 것을 볼 수 있습니다. 줄어드는 부분은 한 군데 더 발견되는데 이것은 밤 11시 정도로 취침 시간으로 생각해 볼 수 있습니다.

점심에서 저녁 시간 사이에는 매출이 꾸준하지만 오전 7시부터 11시까지는 상대적으로 꾸준하지 않은 것을 확인할 수 있습니다. 이는 오전 중에 점심을 준비하는 가정이 있다는 것으로 보여집니다. 여러 사항을 고려할 때 점심에서 저녁 사이에 구매하는 고객에게 1+1 혹은 2+1 등의 행사를 해볼 수 있을 것 같습니다. 또는 점심에서 저녁 사이에 구매하는 고객에게 새로운 메뉴를 제안하거나 점심에 어울리는 식 재료들을 추천할 수 있을 것입니다.

이상으로 미니 프로젝트의 보고를 마치겠습니다.

profile
나팔꽃

0개의 댓글