데이터로 보는, 내 영어 이름 뭐로 지을까?
* 해당 글에 소개하는 내용보다 업데이트된 대시보드는 링크를 통해 확인할 수 있습니다. 본 작업물은 웹에서 보는 것에 최적화되어 있습니다.
데이터 시각화 커뮤니티의 첫 번째 과제는, 태블로를 이용해 하나의 주제를 정해 대시보드를 만들어 보는 것이었다. 태블로 갤러리에는 수많은 멋진 프로젝트들이 있는데, 도통 어디서부터 시작해야할지 감이 잡히지 않았다. 데이터에 대해 전혀 무지한 나는 어디서 데이터를 가져오고 어떻게 인사이트를 추출할지도 몰랐고, 태블로 툴도 이용해본 적이 없었다. 데이터 세계의 아주 바닥부터 알아가보느라 아무 성과없이 밤을 샌 하루도 있었다. 일단 해봐! 라고 던져준 과제에 처음에는 플랜잇이 원망스럽기도 했지만, 결국 데드라인까지 어찌저찌 마무리해서 제출을 완료했다. 데이터 분석보다는 단순 시각화에 가까운 결과물이고 아무것도 모르는 기초 상태에서 진행한 것이라 아직은 부족한 점이 많지만, 이 글이 데이터시각화에 관심이 있지만 하나도 모른다는 사람들에게 조금이나마 도움이 되었으면 하는 마음에 내가 깨닫게 된 것들과 시각화 과정을 정리해보았다.
데이터 시각화는 데이터 분석 결과를 쉽게 이해할 수 있도록 도표라는 시각적 수단을 통해 정보를 효과적으로 전달하는 것이다. 차트, 그래프, 지도 등과 같은 비주얼 요소들을 사용함으로써, 데이터 안에서 패턴과 트렌드를 이해하고 인사이트를 도출하는 것이다. 빅테이터 시대에서 데이터 시각화는 방대한 양의 정보를 분석하고 데이터 기반 의사결정을 위해 필수적이다. 출처 이러한 기본 개념은 '데이터 시각화'라는 단어만 들었을 때 어느정도 상상할 수 있는 범위다. 하지만 디자이너로서 '시각화'에는 익숙하지만, '데이터'가 낯설다보니 데이터 시각화라는 것이 결코 쉽진 않았다.
: 데이터 시각화 프로젝트 과정 들여다보기
흔히 디자이너가 포트폴리오를 만들 때, 프로젝트 주제를 정하고 소스를 모으곤 한다. 마찬가지로 데이터 시각화의 프로젝트를 위해서도 주제를 정하고 데이터를 찾으면 되는 순으로 생각하고 여러가지 주제를 고려해놨다. 하지만, 시작점인 데이터는 도대체 어디서 구할 수 있는 것인지 의문이었고 또 어떤 방식으로 프로젝트가 진행되는지 감이 안잡혔다. 그러던 중, 브런치의 강원양님의 글들을 보게 되었다. 초보자들도 쉽게 이해할 수 있는 글들이 많아 도움이 되어, 본 글에서도 몇 가지 글을 공유해본다.
그 중에서, '<데이터로 보는 여성>제작기'를 통해 데이터 분석 프로젝트는 어떤 순서로 진행되는지 약간의 감을 잡을 수 있었다. 간단하게 정리해 보면 아래와 같은 과정으로 진행되었다.
문제의식 + 다양한 궁금증 -> 보고서 자료 수집 -> 스토리 구상 -> 데이터 수집 (각 궁금증에 대한 답을 찾는 과정) -> 데이터 시각화
UI/UX 디자인 프로젝트와 크게 다를 것 없이, 하나의 케이스 스터디 방식으로 문제의식에서 출발하여 그것을 데이터 수집과 시각화로 해결하는 과정이었다. 이 글을 보고 나는 이전에 재난안전앱을 리디자인한 프로젝트가 있어서, 우리나라 재난 현황과 안전 알림 서비스가 잘 진행되고 있는가에 대한 데이터를 수집해보고자 했다. 공공데이터포털과 기상청 등 검색을 총동원 했지만 내가 원하는 형식의 데이터가 없었고, 흩어져 있는 자료를 수집하고 분석하는게 시간이 꽤 걸릴 것 같았다. 그러나 나는 당장 내일 모레 과제를 제출해야 했기에, 거대 프로젝트는 잠시 내려두고 초보자로서 할 수 있는 간단한 데이터 시각화를 위한 방법을 찾게 됐다.
: 원자료(Raw Data)가 필요하다
위 글을 통해 데이터 시각화를 하기 위해서는 정제된 '원자료(Raw Data)'가 필요하다는 것을 알게 됐다. 데이터가 낯선 나에게는 차트나 그래프, 표가 모두 데이터로 보일 뿐이다. 하지만 '데이터 시각화'를 위해서는 '원 자료'가 필요하고, 이는 통계 데이터나 표와도 구분되는 개념이다.
원 자료 : 통계적으로 처리되어 있지 않은 자료
통계 데이터 : 우리가 공공 데이터 포털같은 곳에서 확인할 수 있는 데이터로, 원 자료를 사용자의 필요에 의해 통계화한 데이터
표 : 통계 데이터를 보기 쉽게 피봇 테이블의 형식으로 정리한 것 (출처 : 위 글)
통계청을 포함하여 공공데이터를 제공하는 다수의 기관에서 제공하는 데이터는 통계데이터인 경우가 많고, 원 자료에 대한 공개가 거의 이뤄지지 않기 때문에 공공데이터를 활용하여 시각화 하기 위해서는 데이터 정제가 필요하다고 한다.
원 자료 형태의 데이터는 행(Row, Item, Record)과 열(Column, Attribute, Field)의 조합으로 구성되며, 각각의 값(Value)를 갖는다고 한다. 중요한 것이 데이터의 열은 해당 열의 정보 하나만 값으로 갖는 다는 것인데, 이 부분을 특히 기억해둬야 한다. 데이터 시각화는 데이터 중에서 특정 열을 선택해 이들의 조합을 시각적으로 나타낸 것이기 때문이다. 추후 태블로를 통해 본격적인 시각화를 할 때 데이터를 갖고 이리저리 요리하는 단위가 바로 열이기도 했다.
: 국내외 오픈 데이터 찾기
우선 국내 데이터를 얻기 위해서는 국가 통계포털, 서울 열린 데이터 광장, 정보공개포털 등이 있겠다. 나는 국제적인 자료로 프로젝트를 해보고 싶어서 해외 자료를 얻을 수 있는 방법을 찾아 봤다.
가장 단순하게는 Quora에 질문을 검색해 본다. 마치 네이버 지식인처럼, 광고식 답변이 달리기도 하지만 유용한 정보도 얻을 수 있다. 이런식의 구글링을 통해 알게된 몇 가지 사이트를 공유해본다.
1. Kaggle
2017년 구글이 인수한 케글은 데이터 사이언티스트와 머신 러너들의 온라인 커뮤니티다. 공개된 데이터 셋을 확인할 수 있고 데이터 사이언스 챌린지를 해결할 수 있는 대회가 열린다. 처음엔 머신러닝 시합으로 시작한 케글은 현재는 공공의 데이터 플랫폼, 데이터 사이언티스트를 위한 클라우드 기반 작업 공간, 인공지능 교육 등을 진행하기도 한다.
2. data.world
케글과 비슷하게 데이터 분석 커뮤니티이자 데이터 사이언티스트들의 카탈로그를 만드는 공간인 듯 하다. 분야별로 오픈된 데이터들이 있어서 참고하면 좋을 것 같다.
3. Tableau
태블로에서도 샘플 데이터를 제공한다. 태블로를 이용해서 간단한 연습이나 프로젝트를 해보고 싶다면 이 곳에 오픈된 데이터를 이용해도 좋을 것 같다. 나는 처음에는 좀더 색다른 주제를 하고 싶어서 샘플 데이터는 최대한 이용하지 않으려 했는데, 아직 기초 지식도 없는 상태에서는 욕심을 부리기 보단 연습이 우선이라 생각하여 태블로의 샘플데이터를 이용하기로 했다.
4. 웹크롤링
신기하게도 웹에 있는 데이터를 크롤링, 수집할 수 있다. 말로만 듣던 파이썬을 활용해서 웹크롤링을 할 수 있다고 한다. 위 글의 프로젝트를 정말 흥미롭게 읽었는데, 내 구독자를 데이터로 볼 수 있고 이 과정에서 파이썬을 활용하여 데이터를 수집한다. 나도 내 구독자나 방문객들에 대해 궁금했는데, 나중에는 이런 미니 프로젝트도 해보고 싶다. 이외에도 구글 스프레드시트를 활용한 웹크롤링 방법이 있었는데 내가 원하는 표가 정확히 크롤링이 안돼서 제대로 활용하진 못했다. 웹크롤링은 경우에 따라 위법일 수도 있기 때문에 주의해서 사용해야하며, 다양한 방법이 있는 것 같아서 나중에 이 부분도 공부해봐야 겠다.
5. 그 외
위 아티클에서는 무료 데이터셋을 얻을 수 있는 19곳의 사이트를 소개하고 있다. 나에게는 아직 어려워서 모든 사이트를 자유롭게 참고하진 못했지만, 나중에 지식이 쌓이면 유용할 것 같아 저장해 두었다.
: 데이터 하나로 여러 차트를 만든다
이미 완성된 프로젝트들을 보면, 화려한 시각화에 정말 많은 데이터가 쓰였구나라는 생각이 들었다. 많은 데이터가 서로 어떻게 얽혀지고 합쳐진건지 신기하기만 했다. 그래서 나도 처음에는 여러 원 자료들을 불러와야 되는 건가 싶어서 엑셀에서 시트별로 내가 원하는 항목을 일일이 만드는 삽질을 하고 있었다. 태블로에서 작업을 해보는데 이건 뭔가 아니다 싶어서 찾아보니, 원 자료 하나를 기반으로 여러 차트를 만들 수 있는 것이었다.
위 글에서 나와 같은 사람의 생각이 고스란히 풀어져 있다. 한 자료에는 수많은 막대 차트와 데이터와 데이터 표가 포함되어 있는데, 얼핏보면 별개의 데이터인가 싶지만 이는 결국 하나의 로우 데이터를 기반으로 만들어진 것이라고 한다. 즉, 로우 데이터 하나에서 특정 열(column)을 기준으로 데이터를 집산(aggregation)하는 것으로, 어떤 기준 혹은 조합으로 데이터를 집산하느냐에 따라 셀 수 없이 많은 시각화 차트를 만들 수 있다.
나는 태블로 리소스에 샘플로 올라와있는 데이터를 이용하기로 했다. 사회보장국이 제공하는 데이터로, '미국에서 가장 인기 있는 이름'의 데이터인데, 나는 여기에 '내 영어 이름 뭐로 지을까?'라는 제목을 더해 시작해 보았다. 로우 데이터는 보통 csv 포맷인데, 이는 액셀에서 열 수 있다. 이 데이터는 State, Gender, Year, Top Name, Occurence의 열(Column)로 구성되어 있다. 이 데이터는 1910년부터 2012년까지 미국의 주, 성별로 Top인 이름의 수치를 보여준다.
효과적인 연습 방법 : 이미 만들어진 태블로 파일 뜯어 보기
태블로를 한번도 사용해본 적이 없어서, 태블로에서 제공하는 기초 강의를 들어보긴 했지만 좀더 실전적인 지식이 필요해서 선택한 방법은 이미 만들어진 태블로 파일을 뜯어보는 것이었다. 구글링을 통해 나와 같은 데이터로 시각화한 사람의 대시보드를 발견했고, 다행히 태블로 통합문서를 다운받을 수 있게 해놔서 이리저리 뜯어보며 이 사람은 어떻게 만들었는지 보니까 직접적으로 습득할 수 있어 효과적이었다.
태블로에 로우 데이터 불러오기
태블로에서 로우 데이터를 불러온다. 이 때 csv에서 xlsx로 포맷을 변환해서 불러와야 오류가 없었다. 이렇게 보면 액셀에서 본 대로 시트와 열들이 맞게 불러와진 것을 확인할 수 있다. 아래에서 시트 하나 당 내가 만들고자 하는 하나의 차트나 표 등을 넣고 대쉬보드에 이 모든 것을 합쳐서 구성한다.
미국의 주 & 연도별로 알아보는 가장 인기 있는 이름
먼저 내 첫 번째 시트를 통해 태블로의 구성을 살펴보면, '차원(dimension)'과 '측정값(measures)'이라는 것이 있다. 차원은 분류적인(categorical) 정보를 포함하거나, 집계(aggregated)될 수 없는 정보를 포함하는 독립변수로, 각 차원 값에 측정값을 집계할 수 있는 필드다. 출처 예를 들면, 'State'와 'Year'와 같은 카테고리 그룹이다. 'State' 태블로 시트의 가운데에 드래그앤 드롭하면 자동으로 지도가 펼쳐진다.
측정값은 집계할 수 있거나 양적인(quantitative) 정보를 포함하는 종속변수로, 필드 값이 하나 이상의 차원을 가진 함수다. 출처 예를 들면, Occurence와 같이 연도별로 발생한 빈도를 나타내는 숫자 값을 의미한다.
그리고 우측의 표현방식을 클릭하면 이 정보를 어떻게 표현할지 선택할 수 있다. 지도로, 막대그래프로 등등 데이터의 특성(몇개의 차원과 측정값으로 구성되어있는지에 따라)에 맞게 선택할 수 있는 유형이 나온다. 외에도 필터와 마크를 어떻게 지정할 것인지 차원에서 드래그해서 각 항목에 맞게 드롭해줬다. 나는 이 지도에서 사용자가 연도별, 성별로 데이터를 확인할 수 있게 필터를 지정하고 주별로 Top인 이름에 컬러가 마크되도록 지정해서 한눈에 알 수 있도록 해보았다.
성별당 가장 인기있는 이름
다음은 '채워진 버블' 유형으로 간단하게 만들어본 유형이다. 성별로 컬러를 구분하고 각 항목을 클릭하면 100년동안의 수치를 확인할 수 있다.
이름의 트렌드, 연도별 추이
표현방식을 막대로 설정하고, 마크를 라인으로 설정해서 위와 같은 그래프가 나왔다. 이름에 필터를 적용해서, 내가 선택하는 이름의 100년간의 트렌드를 확인할 수 있다. 우선 디폴트로는 성별로 가장 인기 있는 Mary와 Micheal을 설정해두었다. 재밌는 것은 이 두 이름의 인기는 시간이 지날 수록 떨어져 바닥을 치고 있다. 아무래도 많이 흔해지다보니 이 이름을 선택하는 사람들이 적어지나보다.
전체 이름 통계 보기
마지막으로는 전체 이름 통계를 볼 수 있는 그래프다. 전체적인 이름 리스트를 성별로 나열해서 둘러볼 수 있도록 하기 위함이고, 그 이름의 인기(빈도)를 보면서 내가 원하는 영어 이름을 지었으면 하는 생각에 추가해봤다.
첫 번째 대시보드 과제를 마치며, 처음에는 뭐가 뭔지 도대체 어떻게 하라는건지 난감했지만 일단 뭐라도 해보니 결과물이 나왔고, 데이터라는 것이 알면 알수록 어려워도 재밌는 것이라는 걸 깨달았다. 아직 데이터 분석의 수준이 아니라, 말그대로 기존 데이터를 시각화만 한 정도며 데이터 간의 통합이나 상세 설명을 추가하는 기능들을 몰라 매우 기초적인 단계다. 이번주에 정식으로 기초 교육을 듣는데, 교육을 들은 후에 또 새롭게 알게되는 것들을 통해 이전보다 업그레이드 될 것 같아서 기대된다.
To be continued