Tabpy (Tableau X Python) 활용하여 BTS 곡 분석해보기

https://i0.wp.com/cdn-images-1.medium.com/max/1440/1*iW5Q1AJi03QzGZBMzlJlhg.png?w=750&ssl=1

안녕하세요. 태블로 위키에 콜라보레이터로 참여하게 된 이다희입니다. 어떤 컨텐츠를 공유드리면 좋을지 고민을 하다가 많은 분들이 궁금해하시는 것 중에 하나인 tabpy 활용에 관하여 공유 드릴까 합니다.

tableau를 활용 하다보면 현황을 차트로 표현하여 보여주는 것에서 나아가 예측, 클러스터링 등과 같이 머신러닝을 활용한 조금 더 심도 깊은 분석에 대해서도 시각화 해보고자 하는 욕심이 생기는 데요. python으로 코드를 돌려 그릴 수도 있지만 내가 원하는 형태와 디자인으로 차트를 빠르게 그리기 쉽지 않고 대시보드 내에서 사용자가 인터렉티브하게 분석 결과를 바로 바로 볼 수 없는 아쉬움이 있습니다.

이 부분을 가능하게 해주는 것이 바로 tabpy 인데요! tabpy를 활용하면 태블로에서 파이썬 코드가 실행되어 결과 값을 시각화된 형태로 바로 확인이 가능합니다. 생각보다 간단한 tabpy 활용법에 대해서 공유 드리겠습니다.

먼저 각 사용자 PC환경에 Python이 설치되어 있다고 가정하겠습니다.

Tabpy 패키지 설치하기

먼저 패키지 설치 전에 pip를 업데이트합니다.

python -m pip install --upgrade pip

Tabpy 패키지를 설치합니다

pip install tabpy

설치된 Tabpy를 실행합니다.

tabpy

실행이 잘 되고 있는지 확인하기 위해서는 브라우저에 http://localhost:9004/ 를 입력해서 아래와 같은 화면이 나오면 됩니다.

https://i0.wp.com/cdn-images-1.medium.com/max/1440/1*a5__k8g_qATx1r1N2EqA3A.png?w=750&ssl=1

Tabpy 서버에 연결하기

Tabpy가 잘 실행되고 있다면 이제 Tableau Desktop에서 Tabpy 서버에 연결합니다.

Tableau Desktop > 도움말 > 설정 및 성능 > Analytics 확장 프로그램 연결 관리로 들어갑니다.

https://i0.wp.com/cdn-images-1.medium.com/max/1440/1*FDbDXJRgaGQLFUUsS7m7Kw.png?w=750&ssl=1
  • 호스트 이름 : localhost ( Tabpy가 설치된 IP)
  • 포트 : 9004 (Default)

를 입력하고 연결 테스트를 누르면 팝업과 함께 연결이 됩니다.

(Tabpy가 설치된 서버 환경에 따라 SSL, 사용자 이름 및 비밀번호를 입력해야할 수도 있습니다)

https://i0.wp.com/cdn-images-1.medium.com/max/1440/1*ZxO8b93XdwpOCUGC4dMBqQ.png?w=750&ssl=1
https://i0.wp.com/cdn-images-1.medium.com/max/1440/1*b1dEnL0jpBuq7nELeDpkDQ.png?w=750&ssl=1

이제 Tableau Desktop을 통해 Tabpy 서버에 잘 연결이 되었는데요.

분석 시작하기

이제부터는 평소에 진행 하고 싶었던 분석을 생각해 보면서 자유롭게 Python 코드를 Tableau에서 돌리며 결과값을 시각화해 볼 차례입니다.

Tableau는 사용자들의 수요가 높은 아래 4가지 모델에 대해서 제공해주고 있는데요.

  • PCA (Principal Component Analysis)
  • Sentiment Analysis
  • T-Test
  • ANOVA

이 중에서 PCA를 예시로 활용해 보도록 하겠습니다.

PCA 분석의 컨셉과 사용하는 예시

PCA란 Principal Component Analysis의 약자로 주성분 분석입니다. 고차원의 데이터를 저차원의 데이터로 축소시키는 차원 축소 방법 중 하나입니다. 차원 축소를 하는 이유는 차원 축소를 통해 2차원에 다양한 feature 변수를 시각화할 수 있고 시각화를 통해 데이터 패턴을 쉽게 인지할 수 있어서 많이 활용되고 있습니다.

개인적으로 흥미가 있는 BTS 데이터를 활용해 보겠습니다. 데이터는 각 곡의 날짜별 Streams수와 Audio Features 입니다. 아래 테이블에서 Acousticness부터 Tempo에 해당하는 8개의 변수가 각 곡의 특징을 보여주는 Audio Features에 해당합니다.

https://i0.wp.com/cdn-images-1.medium.com/max/2160/1*cKSYPG_QhOTLMaeyjrORVQ.png?w=750&ssl=1

Streams 수와 Audio Features를 각각 x,y축으로 하여 scatter chart를 그려 보고자 하는데 Audio Features의 경우 2개 이상의 항목을 갖고 있어 한 축에 표현하기가 어려운 상황입니다.

이럴 때 차원을 축소하여 1개의 차원으로 만드는데 활용할 수 있는 것이 바로 PCA 입니다.

해당하는 모델을 이용하기 위해 먼저 PC에 해당 파일을 설치합니다.

PCA 패키지 설치

tabpy-deploy-models

설치 후 다시 http://localhost:9004/ 열어보면 모델 4개가 잘 설치된 것을 확인할 수 있습니다.

https://i0.wp.com/cdn-images-1.medium.com/max/1440/1*Q9jCrDTL_lw0PpFN0fTyYw.png?w=750&ssl=1

계산된 필드 만들기

이제 Tableau로 돌아가서 아래 식이 들어간 계산된 필드 만들면 끝입니다!

계산식을 만드는 방법은 아래와 같습니다.

  • tabpy.query 안에는 deploy한 모델 이름인 ‘PCA’ 를 입력합니다.
  • 매개 변수로 반환 받을 주성분 개수를 입력합니다. (여기서 입력하는 정수는 0보다 크고 인풋 하는 변수의 총 개수 보다 작아야 합니다. )
  • 또 다른 매개변수인 인풋할 변수는 개수에 따라 _argN 형태로 입력합니다. 해당 매개 변수는 N 순서에 맞추어 집계된 값으로 나열해 줍니다.
  • 반환하는 값의 형태에 따라 계산식 전체를 script_xxx로 감싸줍니다.
SCRIPT_REAL("return tabpy.query('PCA',1,_arg1,_arg2,_arg3,_arg4,_arg5,_arg6,_arg7,_arg8)['response']"
, AVG([Acousticness]),AVG([Danceability]),AVG([Energy]),AVG([Instrumentalness]),AVG([Liveness]),AVG([Loudness]),AVG([Speechiness]),AVG([Tempo]))
https://i0.wp.com/cdn-images-1.medium.com/max/1440/1*sml9gRG5z4H6QH1bGDj4WQ.png?w=750&ssl=1

PCA x Streams로 스캐터차트 만들기

이제 PCA가 만들어 졌으니 8개의 변수 대신 PCA 필드를 활용하여 종합적인 값으로 이용할 수 있습니다.

https://i0.wp.com/cdn-images-1.medium.com/max/2160/1*EJ6114eymSHHOzHlAtttXA.png?w=750&ssl=1
https://i0.wp.com/cdn-images-1.medium.com/max/1440/1*mjhiMst4oIbI8zWTdsHPpw.png?w=750&ssl=1

x축은 곡의 특징인 pca, y축은 stream수로 하여 BTS의 각 track을 원으로 뿌린 scatter chart 입니다. streams수가 많은 곡들은 비슷한 범주의 pca 값을 갖고 있는 것을 확인할 수 있습니다.

이처럼 Tabpy서버에 Predeploy된 4가지 모델을 활용해서 이용해도 되고 필요에 따라 또 다른 분석 모델을 가져와 사용해도 됩니다.

현재 업무에서 데이터 전처리 작업을 위해 Tabpy를 활용하고 있는데요. 추후에는 Python에서 제공하는 다양한 분석 모델을 이용하여 더욱 다양한 분석을 진행해 볼 예정입니다.

이번 포스팅을 통해 구독자 분들도 Tabpy를 활용한 더욱 더 재미있는 분석을 해보셨으면 좋겠습니다!

18 thoughts on “Tabpy (Tableau X Python) 활용하여 BTS 곡 분석해보기

  1. 안녕하세요! 하나씩 따라하고 있는 태린이입니다! 다름이 아니라 tabpy-deploy-models를 설치하려 하는데 [대상 컴퓨터에서 연결을 거부했으므로 연결하지 못했습니다]라고 뜨더라구요! 혹시 해결법을 알 수 있을까요:?ㅠ

    1. cmd 에서 tabpy 실행 후 (창 그대로 유지)
      또 다른 cmd 창을 여시고 abpy-deploy-models 명령어를 실행 시키니 정상 작동 합니다.

      정확한지는 모르겠으나. tabpy 실행 (cmd 창) 을 계속 그대로 유지해야 하나 봅니다.

  2. 혹시 동영상으로 볼수 있을까요??ㅜㅜ 따라하는데 막히는게 많아서..동영상보고 따라하고 싶어요

  3. 감사합니다. 탭파이에 ㄱ한심 있고 공부해 보려고 합니다.
    위의 계산된 필드는 파이썬에서의 양식인지.
    태블로에서의 역량인지 .
    어떻게 알고. 공부하면 될런지요?

  4. 안녕하세요
    tabpy-deploy-models 명령어 실행시.. 10061 대상 연결 거부 에러가 뜹니다… 어떻게 해결 하면 될런지요???

  5. 혹시.. 탭파이 이용해서 태블로 대시보드 만들면 태블로퍼블릭에 게시할 수 없나요/.?? ㅠㅠ

  6. tabpy 실행한 다음에 명령어를 더이상 입력할수 없어서 PCA를 설치하지 못하고 있습니다 어떻게 해야하나요?

    1. tabpy를 실행한 Prompt 창에서 해당 명령어를 실행하기 어렵고,
      별도 Prompt 창에서 tabpy-deploy-models 명령어를 실행하면 됩니다.

  7. 태블로를 활용하여 지자체에. 보유하고있는 공공데이터를 시각화함으로써 주민들에게 보기쉽고 정책활용에 도움이 될만한 실질적인 아이디어도 있으신지 여쭤봅니다

  8. 리눅스 기반 태블로 서버를 구축한 상황에서는 위 게시글 대로 tabpy 설치 시 오류들이 발생하는데 해결 방법이 없을까요?

    1. 태블로 서버가 아닌 다른 장비에 tabpy 서버를 설치하셨을까요? 태블로 서버에서 사용하기 위해서는 tabpy server가 어딘가에 존재해야 합니다. 블로그 본문에 관련 내용과 도움말 링크 안내되어 있습니다.

댓글 남기기

태블로위키만의 새로운 소식, 놓칠 수 없겠죠?