본문 바로가기
Tableau

[Tableau] Tabpy로 감성분석 시트 만들기

by hyemjjang 2021. 8. 12.

사담

더보기

Tableau 자체만으로도 깊게 들어가면 굉장히 어렵지만, 이를 파이썬과 연결하는 Tabpy 또한 꽤나 어려운 개념인 것 같다. 막상 해보면 별거 아니지만, 이걸 어떻게 쓰는지 궁리하는 게 어렵달까. (근데 내 말투 왜케 오타쿠아저씨같지) 하지만 실무에서 파이썬과 태블로를 자유롭게 연결해서 쓸 수 있다면 참 좋을 것 같기도 하고, 개인적으로도 재미를 느껴서 이번 비저블 졸업 프로젝트 주제는 Tabpy로 정했다. 혼자 그렇게 생각했는데 운이 좋게 나랑 비슷한 생각을 한 사람이 둘이나 되어 좀 덜 힘들 것 같다 하하하.. 결론적으로 이번주 자유 차트 만드는 김에 한 번 Tabpy를 시도해봤다. 


Tabpy가 무엇인지 간단하게 정리해보자. 단순히 파이썬과 연결한다는 개념만 잡고 들어가면 자칫 자유도가 높은 툴로 여겨질 수 있다. 그러나 TabPy로 할 수 있는 일은 많지 않다. 

파이썬으로 일련의 분석을 실시했을 때 이를 plot으로 작성하는 것은 생각보다 까다롭고 귀찮다 (선 색, 레이블 위치..이런거 하나하나 써줘야하기도 하고 눈에 바로바로 안보이니까 와닿지 않음) 

그러나 Tabpy를 통해 파이썬에서 작성해 둔 코드를 태블로 내에 불러와져 있는 데이터에 '계산된 필드'를 함수처럼 적용하여 바로바로 시각화할 수 있는 것이다!

그러니까 파이썬에서 기능하는 시각화 과정을 태블로와 직접적으로 연결해서 바로 보여주는 프레임워크가 바로 Tabpy이다. 


 Tabpy의 설치 및 적용 방법을 잘 설명해 둔 링크를 첨부한다

https://www.theinformationlab.co.uk/2019/04/09/how-to-set-up-tabpy-in-tableau/

 

How to set up TabPy in Tableau - The Information Lab

1. Install Python on your machine (or server) A popular and easy way of doing it would be to through downloading and installing Anaconda. 2. Download TabPy server Now we need to get the TabPy module. You can do this by downloading it through GitHub or by

www.theinformationlab.co.uk

http://tableauwiki.com/tableau-analysis-using-tabpy/

 

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

tableau에서 예측, 클러스터링 등과 같이 머신러닝을 활용한 조금 더 심도 깊은 분석에 대해서도 시각화해보고 싶은 적이 있으셨나요? tabpy를 활용하면 태블로에서 파이썬 코드를 실행할 수 있습

tableauwiki.com

태블로위키의 이 글을 쓰신 분이시자 비저블 멘토이신 다희님을 통해 Tabpy의 개념을 처음 알게 되었다. 

 

Tabpy를 통해 파이썬으로 정의된 함수를 불러올 수도 있지만 자주 사용되는 기능의 경우 Tabpy가 이미 predeployed 해두었다. 

1. PCA 주성분 분석

2. Sentiment Analysis 감정분석

3. T-test (통계적 가설 검정법인데 귀무가설 안에서 t분포 따르냐 안따르냐로 검정)

4. ANOVA 분산분석(집단 비교)

 

이 중에서 텍스트 데이터를 단순히 긍/부정으로 나누는 감정분석이 제일 간단할 것 같아 한 번 감정분석을 시도해보았다. 

 

방식은 간단하다. Tabpy를 설치하고, 이 내용을 계산된 필드로 만들어주면 된다. 

 

중요한 포인트는 먼저 텍스트데이터(나 같은 경우엔 영화리뷰데이터)를 행이나 열에 두고, 방금 만든 계산된 필드를 열/행에 두어야 오류가 나지 않는다는 것이다!!! 참고로 외부 프로그램과 연결되는 방식이다 보니 처리 시간이 오래 걸린다. 핸들링하는 데이터 규모가 클수록 시간이 미친듯이 오래 걸리니 일단 필터링을 먹여서 데이터 형식을 보고, 그 다음 필터링을 빼는 방식으로 작업하자

SCRIPT_REAL("
import nltk
from nltk.sentiment import SentimentIntensityAnalyzer
text = _arg1
scores = []
sid = SentimentIntensityAnalyzer()
for word in text:
    ss = sid.polarity_scores(word)
    scores.append(ss['compound'])
return scores
 ",
 ATTR([review]))

코드 관련 내용은 깃헙을 참고하면 편하다

여기서 ATTR([테이블명]) 만 수정하면 된다

 

+)

sentiment analysis using Tabpy 예시 게시물을 첨부한다

https://www.theinformationlab.co.uk/2019/04/10/sentiment-analysis-using-python-in-tableau-with-tabpy/

 

Sentiment Analysis Using Python in Tableau with TabPy - The Information Lab

Tableau is already an amazingly powerful tool and TabPy makes it even more powerful by allowing you to run Python scripts. There are many uses cases for using Python in Tableau, in this post we’ll go over how to do sentiment analysis. What is sentiment a

www.theinformationlab.co.uk

 

이건 설명이 불친절하지만 감정분석으로 대시보드를 너무 잘 구성해서 감명받은 게시물..

https://www.tableau.com/about/blog/2016/12/using-python-sentiment-analysis-tableau-63606

 

Using Python for sentiment analysis in Tableau

If you haven't used Python before, have no fear—this is definitely achievable for novices. Read on!

www.tableau.com


1. 기본

가장 먼저 나오는 시트는 이것이다

 

 

사실 색상에도 넣은것이지만..^^ (색상은 자동으로 설정됨)

기본적으로 감정분석은 부정(음수) 긍정(양수) 이런 식으로 나온다. 이걸 가지고 다양한 시트 모양을 만들어볼 수 있다. 


2. 버블

이 차트는 한 눈에 긍, 부정의 정도와 분포를 볼 수 있어서 선택했다. 

참고로 일단 이 차트를 만들면 음수가 필터링된다. 

쉬운 해결 방법은 '절댓값으로 변환'-> 색상에 [sentiment] (감정분석 결과) 넣으면 된다 

절댓값으로 변환이라는 것은 뷰라 보여지는 버블 크기, 갯수만 해당하는 것이기 때문에,, 색상과는 상관 없기 때문이다..

 

저번엔 그걸 몰라서... 

IIF([sentiment]>0, [sentiment]+1, ABS([sentiment]), 0)

라는 계산된 필드를 만들어서 색을 먹였다... 양수만... 색이 먹여질 줄 알고


3. 박스플롯

박스플롯은 전체적으로 값이 어디에 치우쳐져 있는지 보기 위해 만들었다. 문제라고 한다면.. 값이 너무 많으면 박스플롯이 쓸모 없을 정도로 빽뺵하다는 것이다 ㅋㅋ 지금 내가 만든 이 플롯만 해도 굉장히 많음... 물론 그래프 크기를 줄이면 덜하다

결론을 내리자면 해당 데이터는 긍정적인 면이 많음!을 알 수 있는 것이다. 

전체적인 서비스의 이용 호감도를 알아보는 데에 쓰일 수 있다

또 리뷰 데이터의 특정 키워드(기능, 신규 서비스 등)를 추출한다음, 그 키워드가 포함된 리뷰 데이터를 모아 해당 리뷰 데이터의 감성분석을 실시하여 그 키워드에 대한 이용자의 호불호를 간단하게 판단하여 추후 개선할 사항을 찾아보는 의사결정 과정에 쓰일 수 있겠다


4. 트리맵

버블과 비슷하다 

다만 이 형식의 장점이 몇 가지 있다

1. 네모 크기가 커서 리뷰 데이터를 바로바로 읽을 수 있다 (대충 어떤 리뷰인지 매치가 가능함)

2. 점수의 절댓값이 높은 상위 리뷰데이터에 긍정이 많은지 부정이 많은지 바로 파악 가능하다

(점수의 절댓값이.. 보다 강한 의견 내지는 확실한 의견이라고 정의했을 때 유저의 충성도라든지, 현재 서비스에 대한 이미지가 어떤지 알 수 있는 것이다)

 

다만 시각화에 최적화된 개수가 너무 한정적이고 (데이터량이 과다하면 트리맵 형태가 노쓸모됨) 개인적으로 안예쁘다고 생각한다 ㅎ 대시보드 내에 이런 트리맵을 어떤 식으로 배치하는지 좀 찾아봐야겠다. 


오늘은 Tabpy에 대해 알아볼 겸, 감성분석을 통해 만들 수 있는 시트에 대해 알아볼 겸 실습을 진행해보았다. 태블로라는 도구 하나로 비즈니스(전략 수립 및 추세분석)에 집중할 수도 데이터 사이언스 (모델링 결과 시각화)에 집중할 수도 있다는 경험을 한 것 같아 신기하다.. 물론 둘 다를 한번에 활용할 수 있다는 점이 태블로의 매력이기도 하다. 다음번에는 Tabpy를 내가 짠 파이썬 함수와 연결해서 시트를 만들어보고자 한다.