[TIL#71 250626~0627]

강민지·2025년 6월 28일

데이터분석_TIL

목록 보기
76/81

Olist Pax 신규 서비스 지역을 찾아서...

city 전처리

(전처리라고 쓰고 노가다라고 읽는다...)
너무 막막해서 미뤄놨던 customer city 전처리를 다시 하게 될 줄이야...
그땐 이게 필요없을 줄 알았지.....
예전에 seller city는 해놔서 그나마 다행이다ㅎㅎ..


1. city name 정규화 + key 컬럼 만들기

pax 서비스 지역과 우리 olist 데이터의 seller_city, customer_city를 연결해야 하는데,,,,

  • city명에 숫자나 이메일이 적혀있다거나
  • 같은 지역인데 조금씩 다르게 표기된 것들
  • 도시가 아니라 state명으로 적혀있는 경우 등등

이상한 값이 너어어어무 많아서 이것들을 전처리하고 정규화시키는 게 첫번째 목표였다.

seller는 그나마 개수가 500개 이하로 적어서 괜찮았는데, customer가 진짜 난관이었다. (유니크 값이 4천개가 넘었음 ㄷㄷ..)

아래 사진과 같이 중복값을 하나씩 찾아서 올바르게 맵핑해줬다.

다음으로는 GPT의 도움을 받아서 도시이름을 싹 정리해줬다.

import pandas as pd, unidecode

olist["city_norm"] = (olist["customer_city"]
                 .apply(lambda x: unidecode.unidecode(x).strip().title()))
olist["uf"] = olist["customer_state"].str.upper()

seller_city, customer_city 값을

  • unidecode.unidecode(): 포르투갈어의 악센트, 특수문자 표시를 ASCII값으로 치환하고
  • .strip(): 앞뒤 공백을 제거한 뒤
  • .title(): 첫 글자만 대문자로 변환하여 형식을 통일했다.

그리고 city와 state를 결합한 city_key 컬럼까지 만들었다.
(나중에 발견된 사실인데.... city명이 같지만 state가 다른 경우가 꽤나 많이 있었다......)


2. 태블로 맵으로 시각화

얼추 전처리한 데이터를 가지고 태블로 상에서 맵으로 시각화를 좀 해보려고 했는데... 생각도 못한 2번째 고비가 있었다.

태블로가 이 지역이 어디인지를 제대로 인식하지 못한다는 것........
악센트, 특수문자를 없애서 그런건지 뭐 때문인지는 모르겠지만,, 일부는 인식이 되는데 대다수가 인식이 안됐다.

이대로 태블로에 적용해서 분포를 보려면 몇백~몇천개의 도시를 구글링해서 좌표를 일일히 입력하는 수밖에 없었음ㅜㅜ
고민할 시간에 그냥 한번 해볼까...하고 100개쯤 하다가 이게 뭐하는 짓인가 싶어서 그만두었다.

적용안된 값들이 꽤나 많지만 대충 이런 느낌,,,
확실히 모든 게 남동부 중심지에 몰려있다.


3. Pax 서비스 지역 재매칭

결국 태블로에서 보는 걸 때려치우고 그냥 하던대로 파이썬으로 EDA를 했는데....

아니 Pax 서비스 지역이랑 비서비스 지역의 배송소요일배송 출발까지의 소요일이 이렇게까지 차이가 안나면 어떡하란 말이죠?

일단 "Pax 서비스 확장"에 대한 논리적인 근거를 제시하려면 비서비스 지역에서 배송시간이 너무 느리다거나 불만이 많다는 이유들이 좀 뒷받쳐줘야 하는데..
이건 뭐 비서비스 지역이 오히려 더 빠르다....

그래서 결국 마지막 희망(?)으로...
city를 전처리하는 과정에서 제대로 안걸러져서 pax와 non-pax가 제대로 분류가 안되었을거라고 가정하고 재분류를 시작했다.

그리고 역시나...

  • Olist에서 제공한 Pax 서비스 지역중 "ABC"라는 지역이 알고보니 여러 지역을 묶어서 말하는 거였다.
    • 여기에 7개의 도시가 묶여있었음...
    • 상파울루 대도시권에 위치한 산업 지역이라고 한다.

  • 그리고 Grande SP ~ 시리즈도 각각 여러 도시들을 묶어서 나타낸 단위체였다.
  • 여기에 굉장히 많은 도시가 섞여있었음...ㅎ

seller_city_key 유니크값 약 500개와 customer_city_key 유니크값 약 4000여개를 Olist Pax 서비스 지역 리스트와 하나하나 대조해서 잘못 분류된 도시들을 색출해냈음 ....^^;;;

그 결과....

  • 재분류 전
  • 재분류 후

확실히 pax지역에 포함하는 셀러 수와 고객 수가 확연히 늘어났다.

그리고 배송소요일과 배송출발소요일도 pax 비서비스 지역이 서비스 지역보다 평균적으로 1~2일 정도 늦어지는 것을 확인했다.
(근데 이 부분은 계산이 잘못 들어갔을 수 있어서 다시 검토해야함)

다만 문제는... 비서비스 지역의 셀러 수가 너무 줄어서 그정도 수의 셀러를 가지고 해당 지역에 서비스를 확대해야한다는 걸 논리적으로 설명할 수 있을지가 문제이긴 하다..ㅜㅜ
(갑자기 생각난건데 셀러 그룹별 분류랑도 비교해봐야 할것 같다.)

암튼 일단 북동부 지역, 중서부 지역을 중심으로 최대한 서비스 확장 후보지를 찾아봐야겠다.

0개의 댓글