본문으로 바로가기
반응형

 

좀처럼 끝날 것 같지 않던 개인 프로젝트 시간이 어느새 마무리를 바라보고 있습니다. 꽤 긴 기간이란 생각이 들었었지만, 막상 프로젝트를 진행하다보니, 생각보다 간단한 작업에도 많은 시간이 소요되었고, 기대 했던 것 만큼 결과물을 내놓지도 못한 것 같습니다.

 

하지만 이러한 경험들 하나하나가 모두 차곡차곡 쌓여서, 나중에 소중한 자산이 될 것이라 믿고, 오늘도 계속해서 3차 분석 모델링 과정을 포스팅 해보겠습니다.

 

지난 시간에는 어느 정도 완성된 전처리~분석의 틀 안에서 데이터를 [서울 -> 전국] 범위로 확장하였는데요. 

 

진행에 앞서, 지난 시간에 소개하지 못 했던,

Python Script 함수를 이용하여 Brightics 내장 함수들과 Python을 동시에 사용할때, 약간이나마 도움이 될 팁을 전하도록 하겠습니다.

 

Brightics Studio와 Python Script를 함께 사용하다보면, 당연히 상당수의 작업은 Brightics Studio의 다른 내장함수에 치중됩니다. 정말 복잡한 작업이 아니고서야, Brightics의 내장 함수를 사용하는 것이 훨씬 편리하기 때문인데요. 

Brightics Studio에서 데이터 분석 작업을 진행할때면, 꼭 Work Flow 우측으로 계속 함수를 추가해 뻗어나가기만 하는 것이 아닌, 때로는 앞으로 돌아가서 다시 작업을 할 때가 있습니다. 또한, Brightics에서 다양한 전처리, 모델링 작업을 하다보면, 원본 데이터에 비해 달라지는 것들이 많습니다.

 

예컨대, Brightics Studio에서 다양한 전처리 작업을 진행하다보면, 필연적으로 Colunm, Row의 이름과 볼륨 등이 전체적으로 달라질 수 밖에 없는데요. 필요에 따라 Column을 없애기도, 변경하기도, 새로 만들기도 하며, 결측값을 Drop 시켜주는 작업 등을 하게 되면 처음 Load된 데이터와 많은 차이를 보이게 됩니다. Brightics Studio에선 자체적으로 Python 인터프리터를 제공하진 않기 때문에, 외부에서 별도의 툴(Jupyter Notebook 등)을 사용하여 Python Script를 코딩한 후, Python Script 함수를 통해 적용시키는 것이 편리한 방법인데요.

만약 Python Script를 적용하는 시점 이전에서 여러 전처리를 거치게 되었다면, 해당 적용 시점에 대한 Python 코드는 반드시 이전 전처리가 모두 적용된 데이터를 사용해 테스트 해야 될 것입니다. 만약 앞선 여러 전처리를 그대로 Python에서도 다시 코딩하고, Python Script를 짜야 한다면 굉장한 불편을 겪게 될 것입니다.

 

다행히 Brightic Studio에선 특정 시점(내장 함수 사용 시점)의 데이터를 언제든지 Export 할 수 있도록 기능을 제공하고 있었습니다! 

지난 시간에서 진행한 작업 중, Work Flow 스크린샷에서 현재 클릭된 Python Script 함수 우측의 또 다른 Python Script 함수를 일부 수정해야 할 필요가 있었는데요. 앞서 여러가지 전처리 과정을 수행하고, 그 내용도 상당히 달라지면서, 기존에 Load한 원본 csv 데이터를 Brightics Studio를 통해 가공하지 않으면 Python Script 적용이 어려운 상황이기에, 수정이 필요한 Python Script 함수 바로 전 단계인 현재 클릭된 상태인 Python Script 함수의 Output 데이터를 Export하여 사용하면 됩니다.

 

위 이미지와 같이, 굉장히 간단한 과정을 통해 Export가 가능합니다. 우측 메뉴 중 Download 버튼을 누르고, Data Download 창에서 원하는 Column 구분자(Delimiter)를 선택하고 Finish를 누르면 바로 Local로 데이터 다운로드가 가능합니다. 현재 사용하는 데이터 형식은 CSV이므로, Comma를 선택하여 다운받아 사용하였습니다.

 

그럼 본격적으로 오늘의 작업을 마저 진행해보겠습니다.

 

기존에 계획했던 대기업 프랜차이즈가 일반 카페에 미치는 영향력에 관한 분석 부분에서는, 생각보다 유의미한 결과가 나오지 않았습니다. 따라서, 지금까지 만들어놓은 전처리 과정 Work Flow를 바탕으로 몇 가지 데이터를 좀 더 활용해보려고 합니다. 지방행정 인허가 데이터에서 다음과 같은 몇 가지 데이터를 더 가져왔습니다.

 

Brightics Studio에 CSV 파일 등을 Load하는 경우, a-z, A-Z, '_' 등 일부 문자만 파일 제목에 사용 가능하도록 제약이 걸려있습니다. 따라서 한글이 사용된 파일 또한 Load가 불가능한데요. 현재 위 스크린샷의 파일명은 모두 임의로 바꾸어진 것들이며, 서울시의 유흥주점, 미용실, 단란주점, 약국 데이터에 해당하는 파일들입니다.

 

지방행정 인허가데이터에서 제공하는 여러 업종별 데이터 중, 위 업종들은 상권의 규모를 가늠할 수 있는 지표가 될 것이라 기대해볼 수 있는데요. 따라서 해당 데이터들을 다운 받고, UTF-8 인코딩 형식으로 다시 저장한 후, ','를 제거하는 작업을 거쳐 모두 Brightics Studio로 Load하였습니다.

 

데이터 Load 과정에서 발생하는 이슈들을 해결하고, Load까지 정상적으로 된 Work Flow 입니다. 이어서, 기존에 작업한 커피숍 데이터와 함께 분석에 사용할 수 있도록 전처리 작업을 진행해줍니다. 

 

 Brightics Studio의 유용한 기능 중 하나인, 함수 클립보드 기능입니다. Work Flow에서 함수를 선택한 후 클립보드 버튼을 누르면, 우측과 같이 클립보드에 해당 함수가 저장되는데요. 클립보드에서 함수를 work Flow로 끌어다놓으면 알아서 인접한 함수와 연결되고, 기존에 세팅해놓은 함수를 그대로 사용할 수 있습니다. 이처럼 유사한 여러개의 데이터에 같은 작업을 할 때에 굉장히 유용한 기능입니다.

 

기존 데이터에 사용하기 위해, 똑같이 도로명 우편번호를 중심으로 데이터마다 각각 나누어줘야 하지만, 기존 데이터의 경우 대기업 프랜차이즈 유무에 대한 고려가 추가적으로 코드에 반영되었기 때문에, 코드의 수정이 필요합니다. 위와 같이 각 우편번호로 그룹화한 후, 반복문을 통해 영업, 폐업한 각 데이터 수를 Data Frame에 넣어줍니다. 새롭게 추가한 네 개의 데이터 모두 그대로 작업해주었습니다.

 

의도한대로 결과가 잘 나오는 것을 볼 수 있습니다! 마찬가지로 다른 업종 모두 동일하게 결과가 잘 출력됩니다.

 

동일 지역(도로명 우편번호)에 존재하는 업종들을 하나로 합쳐주기 위해 Join 함수를 사용합니다. Brightics Studio는 SQL의 조인 구문과 같은 방식의 Join 기능을 제공합니다. 벤다이어그램을 통해 비교적 직관적으로 그 Type을 결정할 수 있는데요. 현재 같은 도로명 우편번호에 해당하는 데이터만을 합쳐서 Return할 것으므로, Inner Join Type을 사용합니다. 각 Key(Left Keys, Right Keys)는 공통된 Key 값으로 볼 수 있는 도로명우편번호를 사용합니다.

우측과 같이, 약국과 헤어샵, 두 데이터가 모두 존재하는 도로명 우편번호 데이터가 최종적으로 Join되었습니다. 

 

현재 진행된 것은 위 Work Flow와 같은데요. 새로 추가한 데이터는 각각 약국/헤어샵, 단란주점/유흥주점으로 Join 해주었는데요. 다시 또 두 데이터를 Join해서 합춰줘야 하지만, 주점 쪽의 데이터가 생각보다 적어서 일단 해당 데이터를 배제하고 약국/헤어샵만 반영한 상태로 분석을 진행하기로 했습니다.

 

위 데이터를 기존 데이터에 Join하여 최종적으로 Correlation한 결과는 위와 같습니다. 일부 유의미한 상관관계를 보이는 결과도 있지만, p-value가 좋지 않습니다. 데이터 볼륨 또는 이상치로 인한 문제인 것 같습니다.

이후 과정에서 해당 부분을 해결하여 분석을 좀 더 개선하도록 하겠습니다. 오늘 과정은 여기까지입니다! 이제 일정이 정말 얼마 남지않아, 좀 더 힘내서 프로젝트를 잘 마무리해보도록 하겠습니다. 읽어주셔서 감사합니다! :)

 

 

본 포스팅은 2020년 삼성SDS Brightics 서포터즈 1기 활동의 일환으로 작성된 포스팅입니다.

반응형