ilovechoonsik
[STARTERS 4기 TIL] Tableau 고급 #2 (230306) 본문

📖 오늘 내가 배운 것
<태블로 대용량 데이터 전처리 및 분석>
1. box plot
2. box plot 근거가 될 새로운 데이터 분석 - 산업/주에 따른 소비량
3. box plot 근거가 될 새로운 데이터 분석 - 인구 통계
4. 태블로에서의 예측
5. 스토리 라인
6. 태블로 애니메이션
<세부 수준 계산 (LOD)>
7. LOD
<다각형>
8.다각형 사용해서 문제 해결
<지도에 원하는 이미지의 모양 넣기>
9. 모양 넣기
<태블로 대용량 데이터 전처리 및 분석>
1. box plot
1.1 분석 프로젝트 개요
📌 의류 소매 업계 데이터 분석가
당신은 의류 소매 업계에서 운영되는 호주 소매 체인에서 일하는 데이터 분석가이며
회사는 호주의 한 주인 뉴사우스웨일즈에서만 운영되고 있습니다
이사회는 퀸즐랜드, 빅토리아 밎 서호주 이 세 개 주 중 하나로 확장을 고려하고 있습니다
당신은 이 세 주 각각에서 해당 산업의 비즈니스 환경을 평가하고, 그 결과를 이사회에 직접 제출하라는 요청을 받았습니다
1.2 box plot 그리기

주 별 NPM 확인하기 위해 위와 같은 차트를 그렸고, 이를 가시성 좋게 표현하기 위해 box plot으로 만들어보자
box plot은 [분석] 탭에서 드래그 드롭으로 가져와야 함!
1.3 box plot 분석


QLD, VIC에 실적이 뛰어나거나 모자란 회사들이 존재한다는 사실을 확인할 수 있다.
VIC는 안정적인 형태의 박스를 갖고 있기에 우측 세 지역 중에서는 제일 투자 가치가 높다
이제 산업이 어떻게 수행되고 있고, 인구가 어떻게 증가하는지 등 추가적인 분석을 수행해 보자
2. box plot 근거가 될 새로운 데이터 분석 - 산업/주에 따른 소비량
2.1 대용량 데이터 소스 작업하기
(1) 필요 없는 행 제거

필요 없는 행 날리기! #한셀에서 안 날아가서 docs로 날림..
(2) 피봇 위한 전처리
📌 NULL 필드 제거

제대로 피봇을 수행하기 위해서는 NULL 값이 들어간 필드를 처리해줘야 한다.
첫 번째 필드를 제외한 모든 필드가 숫자! 근데 살펴보다 보면 문자열인 필드가 있는데 태블로가 NULL 일 때 문자열로 인식하기 때문이다.
모든 값이 NULL이라 필요 없으니 그냥 숨겨줘도 댐
빠르게 숨겨주기 위해서는 메타 데이터로 이동, 필드 데이터 타입이 문자열인 필드를 전부 삭제
📌 많은 필드 피봇을 위한 스킬 - 대용량 데이터 행 줄이기

기존에 1982년부터 시작하는 데이터를 2010부터로 필터링하여 처리 속도 증가시키기!
-> 피봇 시에만 처리할 데이터 줄여주는 것
(3) 피봇 및 분할


피봇 후 값 필드명 변경! 근데 피봇 필드 값이 완전 더럽다 이걸 split 해주자
[해당 필드 드롭다운] - [분할]
태블로가 영리하게 중복되는 부분들은 제외하고 분리시켜 줌
그 후 기존 필드는 제거하기
2.2 시각화 및 분석
(1) 월 별 주/산업 별 전환율

y축 최댓값이 너무 커서 변화폭을 육안으로 확인하기 힘듦! 조절해 주자
[해당 축 우클릭] - [축 편집] - [각 행 또는 열에 독립적인 축 범위 사용]


그리고 데이터가 워낙 컸기에 잠시 필터링해뒀던 값들을 불러와준다
[데이터 DB 우클릭] - [데이터 원본 필터 편집] - [필터 제거]
2.3 데이터 소스 필터 사용하기
(1) 시트 수준에서 필터링

분석에 사용하지 않을 카테고리, 행을 완전 제거하는 것.
우리가 관심 있는 산업은 의류 소매업!
따라서 차트에 다른 정보들이 필요하지 않음
필터를 사용하여 우측과 같이 의류 소매업만 남기고 제거
근데!? 어차피 쭉 의류 소매업 데이터로 분석을 해야 하기 때문에 이 필터를 끝까지 유지해야 한다!
그런 관점에서 이 필터는 적절하지 못함. 어떻게 동일한 필터를 다른 시트에서 지속적으로 사용할 수 있을까?
바로 [필터 우클릭] - [워크시트에 적용] - [이 데이터 원본을 사용하는 모든 영역]
근데 이러한 방법은 태블로가 매번 행을 제거해야 하기 때문에 소스를 잡아먹는다.
데이터 원본에서 부터 제거해서 태블로가 인식할 수 없게 만들려면 어떻게 해야 하나!?
(2) 데이터 소스 수준에서 필터링
대용량 데이터 다루기 위해 기간 필터 걸었던 것처럼 똑같이 데이터 소스 수준에서 필터를 걸어주면 된다

[데이터 우클릭] - [데이터 원본 필터 편집] - [원하는 필터 추가]
-> 이전에 시트 수준에 있던 필터가 데이터 소스 수준에서 걸리게 된다
(3) 추가 처리
1. 어차피 한 가지 산업에 대한 그래프이기 때문에 색상을 State로
2. 날짜가 너무 쓸데없이 많다! 데이터 소스에 대해 2000년부터 필터링
# 소스 수준에서의 필터는 아예 분석에 의미가 없는 쓸데 없는 데이터들을 처리하는 것
# 시트 수준에서의 필터는 사용자가 직접 상호작용하며 데이터를 확인하게 하기 위함


빨간 박스의 추세선 기능은 특정 영역을 선택했을 때, 해당 영역에 대한 추세선을 새롭게 그려주는 것!
지금 같은 경우에는 필요하기에 켜놓는다.
📌 분석
이 데이터는 각 주에 대한 소비량인데 인구가 고려되지 않고 있다!
따라서 인구 데이터로 위 데이터를 나눠서 1인당 소비량을 확인하는 게 도움이 될 것~
-> 어느 주의 소비량, 인구가 빠르게 증가하고 있는지 두 마리 토끼를 한 번에 잡을 수 있다.
3. box plot 근거가 될 새로운 데이터 분석 - 인구 통계
3.1 전처리

이전과 같이

1. 필요 없는 행 제거
2. 피봇
3. 필드 명 변경
등의 작업을 수행해 준다
준비가 되었다면?
3.2 기존 소비량 데이터와 블렌딩! (연도-분기 시계열 데이터 블렌딩)

인구 데이터와 소비량 데이터를 함께 분석하기 위해선 블렌딩 해줘야 한다!
근데 각각 연도, 분기로 시계열이 정의되어 있는 상태! 요걸 어떻게 블렌딩 할 수 있을까?
[데이터] - [혼합관계] - 년, 분기로 블렌딩
📌 블렌딩 한 데이터로 연도와 함께 표현하기

📌 연도 별로 보고 싶다면?

블렌딩의 분기 제거, 원본 데이터 필터링 - 개월 지정
📌 인당 소비량 계산


M 단위로 되어 있기 때문에 * 100만


산업 성장률 데이터와 인당 소비량 비교 분석
지역에 따라 연관성이 있고 없고 다르다
확실한 건 두 지표에서 꾸준히 증가하는 추세를 보이는 Vitoria가 확장을 고려하기 좋은 주라는 것!
4. 태블로에서의 예측
📌 예측 기능 사용


[분석] - [예측] - [드래그 드롭]
태블로가 자동으로 계절적 요인(봄-여름-..., 특정 시기, 크리스마스 등)을 계산해서 예측해 줌
📌 예측 옵션 조정

[차트 우클릭] - [예측] - [예측 옵션]
5. 스토리 라인




- 박스 플롯
1. 박스가 상당히 컴팩트하고 박스 부분의 박스 부분이 상단에 가까운 곳에 있는데 전체적으로 이 주에서 올릴 수 있는 순이익 마진에 대한 확실성이 더 높다
2. 그리고 또한 대부분의 회사가 이 박스의 상단을 향해 수익을 올리고 있음! 즉, 임의의 회사가 주에 배치되더라도 다른 주보다 성공할 가능성이 더 높다
- 이외
인구를 고려해 1인당 매출을 계산하면 실제로 1인당 매출이 뉴사우스웨일즈와 빅토리아, 퀸즐랜드 및 서호주에서만 증가하고 있음
이전에 보았던 상승 트렌드는 더 이상 볼 수 없습니다. 즉, 부분적으로 해당 주의 인구 증가에 기인
따라서 이 차트에서 실제로 두 가지 결론을 내릴 수 있다
1. 빅토리아의 비즈니스 환경은 우리가 이미 이 회사에서 경험한 뉴 사우스 웨일즈의 비즈니스 환경과 유사
2. 의류 및 의류 소매업이라는 산업 자체가 뉴사우스웨일즈에서와 마찬가지로 빅토리아에서도 실제로 성장하고 있음을 알 수 있습니다
실제로 이 산업 내에서 사람들의 요구와 지출이 증가하고 있다!
📌 미래 성장 가능성이 높은, 모든 주 중에서 최고의 비즈니스 환경은 빅토리아
# 요 문제 인지하기
6. 태블로 애니메이션
6.1 블렌딩
Population 데이터 기준으로 시각화할 거기 때문에 기본 데이터로 놓고, 중복되지 않는 필드 사용하여 블렌딩
6.2 시각화
블렌딩 한 데이터 활용해서 출산율-기대 수명 시각화
인구를 값으로 넣고 지역과 나라 이름을 각각 세부 정보, 색상으로 넣어줌
(1) 애니메이션
페이지 탭에 연도를 넣는 것으로 5차원에 연도를 표현할 수 있음 -> 애니메이션 효과
(2) 주석
[시트 우클릭] - [주석 추가] - [지정]을 통해 주석을 추가할 수 있다!
[삽입] - [시트 이름]으로 연도 표현
근데 큰 거품들이 작은 거품들 뒤로 가야 더 잘 보이지 않을까?
만들어보자
(3) 버블 선 후 관계 변경
[데이터에서 색상 적용한 필드 우클릭] - [기본 속성] - [정렬] - [순서 정의]
(4) 흔적 남기기
📌 기록 표시
📌 특정 나라만 항상 표시
[페이지 기록] - [항상 표시]
📌 최종 대시보드
[서식] - [통합 문서 테마] - [클래식]
<세부 수준 계산 (LOD)>
7. LOD
3.1 지역 세분화 간단 복습


태블로는 정보를 집계할 수준을 어떻게 알 수 있을까요? 저희가 이 경우에 도시에 대한 수익을 보고 싶은지 어떻게 아는 걸까요? 태블로는 여기에 저희가 갖고 있는 차원을 살펴봅니다! 개념은 측정값이 집계되고 차원이 집계가 발생하는 수준을 지정한다는 것입니다. 따라서 집계 수준 또는 세분성 수준으로 이야기할 수 있습니다. 이것이 태블로가 상황을 이해하는 방식입니다. 시각화에 추가할 수 있는 방법은 열, 행, 세부 정보, 레이블, 크기 및 색상 중 사용할 수 있지만 집계 세분성을 변경하기 위해 툴팁은 사용할 수 없습니다 - 강사님
-> 쉽게 지역에 대한 집계 수준을 지역 추가/제거로 표현할 수 있다는 말
-> 그럼 Country -> State -> City 수준의 집계를 전부 한 번에 표현하려면 어떻게 해야 할까?
3.2 세부 수준
(1) 포함 / 제외 / 고정 기본 개념
포함하기, 제외하기 - 상대 경로!
예를 들어)
폴더 X에서 포함하기 : 하위 폴더로 이동해 그곳에서 무언가를 찾으라는 것
즉, 포함하기는 현 위치 폴더의 하위 폴더로 이동하라는 것! 제외하기는 그 반대
그러나 고정하기는 절대 경로이며 지금 어디에 있든 상관이 없음
폴더 X나 Y에 있다면 지금은 상위 폴더에 있는 것이고 하위 폴더는 상관없음
(2) 포함
우측에 똑같은 지도를 하나 더 만들고 LOD 적용하기
계산된 필드를 만든다!
현재 시각화 수준에서 더 세부적으로 수익을 더하는 것을 원하고, City를 포함시키고 싶다는 뜻
해당 필드를 좌측 지도에 적용하면 다음과 같다
좌측은 City 수준에서의 집계, 우측은 Country, State, City 전부 포함한 집계
-> LOD 사용 시 세분화 수준 어떻게 다른지 확인
📌 ATTR
모든 열이 단일 값을 가지면 표현식의 값을 반환! OR 아스타리스크(*) 반환하고 null 무시
툴팁으로 데이터가 어떤 단위를 이루는지 확인할 수 있다!
(2) 제외
좌측과 같은 세분화 수준에서 우측과 같은 한 차원 위의 집계 값을 표현하려면?
다음과 같은 계산된 필드를 만들어주면 된다.
-> City라는 차원을 걷어내고 Profit의 합계를 계산
(Exclude는 상대적인 성질을 가지므로 현재 시트 기준으로 City 걷어낸다는 뜻) 즉, State의 Profit 합계
만들어놓은 필드를 마크로 적용하면 상위 수준의 지역 합계를 받아올 수 있다.
그러나 City로 세분화된 지도에서 이러한 행위는 분석에 의미를 지니지 못한다!
어떻게 의미 있게 변화시킬 수 있을까?
📌 각 주에 속한 도시 중 어느 도시가 가장 큰 영향을 미쳤을까!
- 양수냐 음수냐에 상관없이 절댓값이 클 때 원 크기를 키우고 싶다면? : ABS() 사용하기
크기 : ABS(SUM([Profit]) / ATTR([LOD Exclude - State Profit]))
- 계산 시 양, 음수 색상 표현하기 : SIGN() 사용
색상 : SUM([Profit]) / ATTR([LOD Exclude - State Profit]) * SIGN(ATTR([LOD Exclude - State Profit]))
- ETC
레이블 : SUM([Profit]) / ATTR([LOD Exclude - State Profit])
도구 설명 : SUM([Profit]) / ATTR([LOD Exclude - State Profit])
(3) LOD 계산의 다중 필드
세분화 수준에서 [] 안에 정의한 값들을 제외하고 계산
(4) 고정
항상 정의된 세분화에 따라 연산~
우측은 수익 합계를 도시 수준으로 계산하는 식
# 근데 무조건 상위 차원을 입력해줘야 하나?
우측 보면 LOD 수행하지 않고 그냥 Profit 던진 놈은 국가, 주, 도시 상관없이 모든 값들의 평균을 나타내는 반면 좌측은 미국 모든 도시의 평균이다!
이전에 EXCLUDE를 실습하며 만들었던 시트에도
동일하게 사용해 보자! 우측과 같이 FIXED로 Country, State를 고정해 주면 위와 같이 태블로가 사용자가 정의한 세분화 수준에 대해 이해하고 뿌려주는 것을 확인할 수 있다.
그럼 이제 계산된 필드가 전부 준비되었으니 세분화 수준을 한 지도에 표현해 보자
각각 세분화 수준이 다른 두 개의 맵을 만들어 주고
이중 축과 함께 툴팁 편집하는 것으로 마무리!
<다각형>
8. 다각형 사용해서 문제 해결
8.1 다각형 만드는 방법
세분화 수준 켜야 함!
8.2 다각형을 배경으로 사용해서 문제 해결하기
(1) 목적
회의실 공간을 활용하기 위한 사용 패턴 분석!
- 회의실 이용률 저조 -> 예약 사용률 40%
- 확장 꺼리는 중
- 평면도 제공
- 모든 예약 대비 활용도를 고려
📌 평면도
📌 데이터
(2) 회의실 다각형 차트 생성
1,2층 회의실 데이터를 다각형 통해 표현!
(3) 받은 이미지 배경 적용
[맵] - [배경 이미지] - [데이터 선택]
원본 데이터 픽셀에 맞춰 가져와야 다각형이 올바른 위치에 들어간다
(4) 예약 데이터 가져오기
예약 데이터를 새로 가져오는데 필드명, 값 이름이 동일하여 따로 지정 안 해줘도 됨
(5) 예약된 방 평균 색상으로 표현 및 색상 범위 지정하기
색상 설정을 해주지 않으면 모든 다각형이 획일화되어 보이기 때문에 판단하기 어렵다
범위를 직접 지정해 주자~
(6) 1, 2층 상호작용 하며 확인하기 위한 매개 변수
우리가 상호작용하고 싶은 필드를 정의해 준다 : Floor
(7) 필터에 매개 변수 연결 및 계산된 필드 생성
1. 사용자가 필터에서 선택한 층을 태블로가 표현하도록 필터를 생성한다!
2. Floor Image Selection이라는 계산된 필드를 만든다. 이건 [이미지] - [옵션] 중 [다음 경우에만 표시] 기능을 사용해서 매개 변수와 연결하기 위한 일종의 연결점이라고 생각하면 된다!
(8) 새로운 이미지 임포트 시 다음 경우에만 이미지 표시 설정
처음에 import 한 Ground 이미지를 필터에서 Ground가 선택되었을 때만 표시하겠다는 뜻이다~
(9) 이미지 선택하는 계산된 필드를 세부정보로
좌측은 (8) 설정 이후의 모습인데 저 상태에서 Floor Image Selection을 세부정보로 넣어줘야 지도를 뿌려준다
(10) 기존 방식과 동일하게 다른 층 이미지 임포트
📌 정리하면
1. 층에 해당하는 매개변수 생성
-> 상호작용 버튼으로 동작할 카테고리
-> EX) FLOOR의 First, Second
2. 매개변수를 이용하여 사용자가 직접 층 고르는 상호작용을 위한 필터 생성 및 매개변수 맵핑
-> [해당 카테고리를 담는 필드명] = [사용자 선택]
-> [FLOOR] = [Select Floor]
3. 맵 - 이미지 로딩에서 특정 상황에만 해당 맵을 표현하고 싶을 때는 계산된 필드를 사용해야 한다! 사용자가 특정 필드를 생성했다는 것을 알리는 계산된 필드 생성
-> [Select Floor]
4. 3.의 계산된 필드를 사용하여 이미지 임포트 시 사용 시점 설정!
EX) [Select Floor] = FIrst일 때
(11) 예약 내역과 실제 사용량을 상호작용을 통해 시각화하고 싶다면?
매개 변수를 생성해 주자~
Actual : 실제 사용되고 있는 룸
Booked : 예약된 내역
선택할 수 있는 옵션을 위와 같이 만들어준다
(12) 매개 변수 사용을 위한 계산된 필드 생성
실제 사용되고 있는 상태인 Actual을 선택했을 때, 실제 데이터! 아닐 경우 예약된 데이터!
만들어 놓은 계산된 필드를 색상으로 넣고 Actual, Booked를 선택해 보자~
위와 같이 예약 수에 비해 실제 사용량이 낮다는 사실이 보인다!
(13) 툴팁편집
<지도에 원하는 이미지의 모양 넣기>
9. 모양 넣기
9.1 문제?
메가벅스 커피 회사는 뉴욕 맨해튼에 있는 매장 위치를 분석하는 데 도움을 주기 위해 저희를 고용했습니다
그들은 새로운 매장을 열 것이며 최신 비전에 따라 위치를 우선시해야 합니다
이 최신 비전에서 그들은 고객이 매장 중 한 곳에서 0.5마일 이상 떨어져 있지 않도록 하는 것을 목표로 하고 있습니다
따라서 우선순위는 기존 상점 간의 격차를 줄이는 것입니다!
9.2 시각화
태블로가 자동으로 집계해 놓은 데이터를 세분화 후
회전율 : 색상
가게 수 : 크기
먹이기
(1) 모양 넣기
[Tableau 폴더] 보면 [모양 모아놓은 폴더]가 있는데 요기에 [새 폴더 생성]
후 모양 적용할 이미지 넣기!
모양 탭에서 적용하면 위와 같다!
다른 상점들과의 거리가 0.5보다 큰 매장은 다른 매장들과 너무 멀리 떨어져 있기 때문에 데이터 센터 자체에 쉽게 합류할 수 있도록 결정하기 위해 지금 이 근처에 새 매장을 열어야 한다!
거리를 구해보자~
(2) 거리 측정
같은 데이터를 Store ID를 사용해 자체 결합해 준다!
이때 Store ID가 다른 모든 상점과의 거리를 계산해야 하기 때문에 조건을 같지 않다로 사용
📌 거리 측정하는 계산된 필드 생성!
📌 최소 거리 표현
IF 사용해서 최소 거리가 0.5 마일보다 크면 멀다! 아니면 아니다~ 라고 표현할 수 있는 계산식 만들기
위에서 만든 Distance라는 다 지역들과의 거리를 사용!
📌 이를 이용해 최종 시각화
5곳의 Store가 엄선!
💪🏻 앞으로 개선해야 할 점 (추가로 배워야 할 점)
📌 LOD 부분 완벽하게 이해하지 못했고, 계산 필드/매개 변수 아직 자유롭게 다루지 못함!
다시 보면서 개념 굳히자🐿️
#유데미, #유데미코리아, #유데미부트캠프, #취업부트캠프, #부트캠프후기, #스타터스부트캠프, #데이터시각화 #데이터분석 #태블로
'STARTERS 4기 🚉 > TIL 👶🏻' 카테고리의 다른 글
[STARTERS 4기 TIL] Python 시계열 #2 (230308) (0) | 2023.03.09 |
---|---|
[STARTERS 4기 TIL] Python 시계열 #1 (230307) (0) | 2023.03.08 |
[STARTERS 4기 TIL] Tableau 고급 #1 (230303) (0) | 2023.03.06 |
[STARTERS 4기 TIL] Tableau 기초 #2 (230302) (0) | 2023.03.02 |
[STARTERS 4기 TIL] Tableau 기초 #1 (230228) (1) | 2023.02.28 |