일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- #코멘토 #코멘토실무PT #실무PT후기 #Google BigQuery
- #코멘토 #코멘토실무PT #실무PT후기 #Google BigQuery # 자동화
- #코멘토 #코멘토실무PT #실무PT후기 #Google BigQuery # 전환율
- #패스트캠퍼스 #내일배움카드취업 #국비지원교육 #K디지털기초역량훈련 # 데이터시각화강의
- #코멘토 #코멘토실무PT #실무PT후기 #Google BigQuery # 대시보드
문과생의 데이터 연습
[Tableau Prep] 3개의 데이터 조인하기 본문
학교 팀 프로젝트로 데이터 전처리를 담당한적이 있는데 이떄 진짜 데이터 구조가 괴랄(?) 했던 기억이 난다.
해결했던 방법은 R 패키지를 이용해서 전처리를 했는데 Tableau Prep Builder를 사용해서도 똑같은 방법으로 해결했던 기억이 난다. (똑같은 문제를 두 번 해결 😅)
Tableau Prep Builder을 사용하면 좋은 점은 확실하게 다시 봤을 떄 기억이 살아난다
코딩은 조금이라도 시간이 지나면 내가 작성한 코드를 내가 기억을 못하더라 ㅋㅋ
UI 존재의 장점을 다시한번 느끼면서 전처리 했던 데이터를 포스팅 하고자 한다.
Tableau Prep Builder 전처리한 전체 흐름이다.
데이터1: Long Form Data
데이터2: 원본데이터
데이터3: 국회의원정보
데이터4: 국회의원정보
데이터 네이밍을 참 이상하게 했는데(고치자 좀ㅎㅎ) 설명을 좀 하겠습니다!
그전에! 대체 이게 무슨 엑셀데이터냐 하면!
총 두개의 엑셀 데이터를 다운로드 했는데
정보공개 목록 데이터 상세 표 | 열린국회정보 (assembly.go.kr)
열린국회정보
국회를 열다, 정보를 나누다.
open.assembly.go.kr
의원 목록 - 국회의원현황 | 국회의원현황 | 의원활동 | HOME (assembly.go.kr)
대한민국국회
대한민국국회
www.assembly.go.kr
첫번 째 엑셀 데이터는 법안을 발의한 대표자 국회의원과 대표자 국회의원의 법안을 지지하는 공동발의자에 대한 엑셀 데이터다.
이 데이터의 문제(?)는 공동발의자 국회의원들이 한개의 셀에 들어있다는 것이다. 이것은 추후 네트워크 시각화 툴인 Gephi가 정상적으로 인식하려면 Long from 데이터로 만들어야 했던 것이고 그걸 해결한 데이터 원본이라고 할 수 있겠다.
그렇다면 데이터1: Long Form Data 는 R을 이용해서 해당 공동발의자 컬럼들을 행으로 쭉 내린 전처리된 데이터이다.
Wide form을 Long form으로 만들었다고 보면 될 것 같다.
데이터 1의 전처리는 R로 할수밖에(?) 없었던게 Tableau Prep Builder에서 작업하면 너무 느렸다... 😅
원본데이터는 말그대로 위 그림의 원본데이터이고 마지막으로 국회의원 정보는 국회의원들의 정당, 성별, 지역구, 당선횟수, 등이 들어있는 정보이다. 사실 이 데이터가 같이 있어야 좀 네트워크 시각화가 풍부하고 다양한 인사이트가 나올것 같아서 조인을 하기로 결정했다.
정리하자면
왼쪽순으로 원본데이터(대표발의자 <-> 공동발의자) , 전처리 데이터(R로 작업한), 국회의원 정보 총 3개의 데이터를 조인해서 하나의 데이터로 만들겠다는 것!
근데 위에 같은 데이터로 조인을 두번하지? 라고 궁금해 하신다면!
공동발의자의 의원정보와 대표발의자의 의원정보 두 개 다 정보를 넣어야 하기 떄문에 같은 데이터로 두 번을 조인한 것!
▶ 첫번 째 조인
지금 복기 하면서 느끼는건데 진짜 컬럼 네이밍을 잘 적어야겠다고 생각했다. 😣
전처리된 Long form 데이터에 저렇게 번호를 매긴 이유는 대표발의자 국회의원이 법안을 여러개 발의했다면 그것을 구별하기 위해서 고유 번호를 매겼다. 고유번호가 없이 전처리후 시각화를 한다면 전체 법안에 대한 네트워크 시각화로 해석해야 할것이다. (그것도 의미가 있을 수도?)
원본 데이터에도 네이밍된 대표발의자 이름을 복사해서 같이 조인을 했다
이렇게 해서 전처리된 데이터에 제안일, 처리상태, 소관위원회 컬럼 정보명을 얻을 수 있게되었다.(그냥 Vlookup을 하면)
▶ 정리
정리 부분은 별건 아니고 지저분 하고 필요 없는 컬럼들을 제거하 이름을 이쁘게 바꾸는 작업을 하였다.
▶ 두번 쨰 세번 쨰 조인
위에서 언급한 것처럼 대표발의자, 공동발의자 모드 국회의원 정보 컬럼을 가져가기 위해서 두번 조인을 했다고 했는데
그런데 여기서는 왜 Inner Join을 하는지 물어본다면 어떻게 대답을 해야할까?
그..그냥요? (너가 전처리 했잖아;;;😅)
정치를 잘아시는 분들이라면? 국회의원직을 상실한 사람들을 알 수도 있을 것 같은데 지방선거를 나가기 위해서, 대통령 후보자가 되기 위해서, 나쁜?짓을 해서, 등의 이유로 당선된 국회의원들이 4년동안 계속 같은 사람은 아니다.
국회의원 정보 엑셀 데이터에는 항상 현재 의원직을 가지고 있는 국회의원을 가장 최신으로 업데이트 하고 있기 때문에
만약 Left Join을 해버린다면 국회의원을 상실한 사람들의 법안 대표발의자 혹은 공동발의자가 존재한다.
나는 개인적으로 추후 정당별 시각화 네트워크를 진행할 떄 의원식 상실 의원은 보이고 싶지 않았다. 따라서 현재 살아계신(네..?) 현직의원들로만 가지고 오기 위해서 Inner Join을 사용했다.
▶ 완성된 최종 데이터
완성된 클린한 데이터에 대한 설명인데 이렇게 PPT로 좀 이쁘게 설명하니 스스로도 이해가 잘 됐다. (PPT만들어준 팀원들 최고!!)
사실 이전에 위에서 언급했던 R 전처리도 존재했고 또 그 이전에는 엑셀로도 전처리 작업을 진행했었다. (저..정신없어..)
그리고 이제 이 데이터로 Node 랑 Edge을 만들면 되는데 (또...또있어?)
참 지금 생각해보면 너무 정신없는 데이터 전처리 과정이었다 ㅋㅋ (현업에 있으시는 분들이 욕할수도...ㅠ)
이러한 괴랄한 과정은 전처리를 하는 당사자도 너무 힘들기 때문에 Tableau Prep 같은 툴로 한번에 처리하는 법을 고민해보면 좋을 것 같다. (느...느리다고요...)
그럼 이 데이터로 무엇을 할 수 있는가? 할 수 있는게 은근 많은데 이건 다음 포스팅으로~~~

끝~
'Tableau > Tableau Prep' 카테고리의 다른 글
[Tableau Prep] Tableau Prep 연습 (3) (0) | 2022.07.15 |
---|---|
[Tableau Prep] Tableau Prep 연습 (2) (0) | 2022.07.13 |
[Tableau Prep] Tableau Prep 연습 (1) (0) | 2022.07.13 |