brunch

You can make anything
by writing

C.S.Lewis

by 강원양 Dec 24. 2017

시계열 데이터의 시각적 분석(2) 실제 적용 사례 공개

데이터 분석 과정에서 빛나는 시각화의 가치

데이터 시각화가 데이터 분석을 위해 필요한 이유, 조금씩 느끼고 계시나요? 지난 포스팅 '시계열 데이터의 시각적 분석(1), 어디까지 가능할까?'를 통해 시계열 데이터 분석에서 데이터 시각화를 활용하는 방법에 대해 콘텐츠 사례로 알아보았다면, 이번에는 얼마 전 뉴스젤리가 발행한 '콜? 콜! 지난 겨울 우리가 부른 콜택시 - 데이터로 보는 연말 콜택시 트랜드' 콘텐츠를 바탕으로 시각적 분석을 활용한 시계열 데이터의 실제 분석 과정에 대해 이야기하고자 합니다.





1. 시각화 결과가 아무리 궁금해도, 데이터가 먼저임을 잊지 말자!


콘텐츠 제작에 활용된 데이터는 SK 텔레콤 데이터 허브를 통해 공개된 데이터로 2016년 12월 기준 콜택시 통화량 데이터를 수집하였습니다. 각 도시의 데이터를 개별 파일로 제공했기 때문에, 이를 하나의 데이터 셋으로 병합하는 정제 과정을 진행 후 활용하였습니다.

여기서 잠깐! 해당 분석에 활용한 데이터는 SK 텔레콤의 통화량 데이터와 업종 데이터를 기반으로 추출한 것으로 전체 콜택시/대리운전 서비스 이용 현황이 반영되어 있지 않은 데이터입니다. 통화량은 T 고객(발신) 기준 이용자의 콜택시 통화 건수를 기준으로 하며, 5건 미만의 값도 5건으로 표시되었습니다. 데이터 분석 이전에 데이터에 대한 정확한 정의, 한계 등을 알고 분석해야 인사이트 도출 과정에서 발생 가능한 해석의 오류를 줄이고 정확한 분석 결과를 만들 수 있습니다.
원본 데이터 캡쳐 이미지

데이터 분석에 앞서 분석에 활용된 데이터 셋에 어떤 데이터 필드가 포함되었는지를 확인합니다. 시계열 정보를 의미하는 날짜 형태의 필드가 존재하며, 일 단위로 기록되어 있음을 알 수 있습니다. 날짜 필드 옆에는 요일을 나타내는 필드가 따로 표기되어 있습니다. 사실 날짜 필드만 있어도, 이를 활용하여 요일 필드를 파생 변수로 만들 수 있는데 해당 데이터는 친절히 파생 변수를 미리 만들어 제공해주었습니다. 뿐만 아니라 시간대 정보를 포함한 필드도 포함되어 있습니다. 이러한 시계열 정보의 필드에서 추가로 만들 수 있는 파생 변수는 무엇이 있을까요? 이후 분석 과정을 통해 하나씩 알아보도록 하겠습니다.



2. '날짜' 필드를 활용한 시각화 차트로 인사이트 도출!


주요 도시의 일별, 요일별 콜택시 통화량

일별 통화량, 요일별 통화량 추이를 선(line) 차트로 그려볼 수 있습니다. 요일별 통화량 추이를 보면 각 도시별로 약간의 차이가 있으나 주초에 비해 주말로 갈수록 통화량이 증가하는 것을 볼 수 있습니다. 일별 통화량 추이 변화는 요일별 통화량 추이 변화가 반복되는 양상을 보입니다. 나아가 일별 통화량 선 차트에 추세선을 그려보면, 대구를 제외한 도시의 경우 월 말로 통화량이 증가한다는 인사이트도 도출할 수 있습니다.

주요 도시의 일별 콜택시 통화량

이번에는 일별 통화량을 선(line) 차트가 아닌 캘린더 차트와 유사한 형태로 만들어 보겠습니다. 각 도시의 달력을 따로 그려서 스몰 멀티플즈 방식으로 시각화했다고도 볼 수 있습니다. 컬러 인코딩의 기준은 통화량 수치값입니다. 인천과 광주를 제외한 5개 도시의 경우 세 번째 주 수요일인 2016년 12월 21일의 통화량이 12월 중 가장 많았음을 알 수 있습니다. 앞서 요일별 통화량 분석 결과 대략 목~토요일 사이에 높은 통화량을 기록한다는 인사이트를 도출하였는데, 이와 다른 패턴을 보이는 것을 알 수 있습니다.



3. '시간대'를 기준으로 한 시각적 분석의 시도, 인사이트 도출!


주요 도시의 시간별, 시간 범위별 콜택시 통화량

1시간대별로 구분된 데이터 필드 그대로를 사용한 통화량 선 차트를 그려보았습니다. 통화량이 높을수록 선의 색이 짙어지도록 표현하였습니다. 그 결과 분석 대상 7개 도시 중 서울을 제외한 6개 도시는 출·퇴근 시간대의 콜택시 통화량이 급증하는 것을 확인할 수 있습니다. 반면 서울을 이들 도시와 뚜렷이 구별되는 패턴을 보이는데, 서울의 콜택시 통화량은 하루 중 밤 11~12시에 가장 많음을 알 수 있습니다. 아마도 타 도시에 비해 대중교통 시스템이 잘 구축되어 있어, 대중교통을 이용할 수 없는 시간대의 콜택시 이용이 증가하는 것으로 유추해 볼 수 있습니다.

1시간대별로 구분된 데이터 필드에서는 어떤 파생 변수를 만들 수 있을까요? 여기서 파생 변수를 만드는 방법은 시간 범위 설정하는 것입니다. 예를 들어 하루 24시간을 오전과 오후로 나눠 2개의 항목 기준 - 오전, 오후-별로 통화량을 비교해볼 수 있습니다. 저는 사실상 콜택시를 이용하는 승객 입장에서 전날 밤 11시나 당일 새벽 1시에 이용하는 것을 같은 시간 범주로 여길 것임을 감안하여 '아침', '낮', '저녁', '밤'의 항목으로 구분되는 파생 변수를 만들어 보았습니다. 각 항목은 6시간 범위로 구성되는데 아침은 04시부터 09시, 낮은 10시부터 15시, 저녁은 16시부터 21시, 밤은 22시부터 다음날 3시까지로 나누었습니다. 이 경우에도 타 도시와 달리 밤의 통화량이 가장 많은 서울의 특징을 도출해 낼 수 있습니다.



4. '날짜', '시간대' 필드를 조합한 시각화 차트로 도출할 수 있는 깊이 있는 인사이트!


원본 데이터에 포함되어 있는 '날짜', '시간대' 필드뿐만 아니라 이들을 활용하여 만들어낸 파생 변수를 경우의 수에 따라 조합, 시각화 볼 수 있습니다. 어떤 변수 조합의 데이터를 활용할 것인지, 또 어떤 형태로 시각화할 것인지에 따라 새로운 인사이트를 도출할 수 있습니다. 다만, (조합 가능한 데이터의 경우의 수)X(시각화 가능한 유형의 수)를 모두 시도해보기에는 많은 시간이 소요되므로 앞서 도출한 인사이트 중 하나를 선택해 조금 더 자세한 분석을 시도해보겠습니다.


국내 주요 도시 7곳 중 5곳(인천, 광주 제외)의 2016년 12월 일별 통화량 중 가장 많은 통화량을 기록한 날이 21일(수)인 것을 데이터로 확인한 바 있습니다요일별 통화량 패턴과 차이를 보인 이날, 과연 무슨 일이 있었던 것일까요?

조건에 따른 시간대별 콜택시 통화량 차이

가장 먼저 당일의 통화량을 자세히 살펴보기 위해, 시간대별 선 차트를 그려보았습니다. 혹시 발견하셨나요? 평소와 달리 21일, 서울을 제외한 도시의 경우 밤 9시 이후의 통화량이 증가한 것을 알 수 있습니다. 12월 전체 시간대별 평균 콜택시 통화량에서 밤 9시 이후의 통화량이 감소한 것과 반대되는 패턴을 보이는 것을 알 수 있습니다. 서울의 경우에도 전체 시간대별 평균 콜택시 통화량에서는 0~1시 통화량이 23시 통화량보다 많으나, 21일의 경우 반대되는 양상을 보입니다.

도시별 시간대별X일별 콜택시 통화량 추이

이번에는 각 도시별 X 시간대별 통화량을 일별로 시각화해보았습니다. 시간대 중에서도 저녁 6시 이후의 시간을 대상으로 시각화해보았는데요! (차트 읽는 법? 차트 영역 내 각 패널은 특정 시간대의 일별 통화량 추이를 보여줍니다. 즉, 특정 시간대의 통화량 중에 가장 많은 통화량을 기록한 날짜가 언제인지를 찾기 위한 것이지요!) 각 도시별로 차이가 있으나 20시 이후의 경우에서, 21일의 통화량이 최고치를 기록했음을 확인할 수 있습니다. 도대체 21일 "밤"에는 무슨 일이 있었던 것일까요? 시각적 분석을 통해 앞서 언급한 궁금증-과연 21일 무슨 일이 있었을까?-의 범위, 즉 탐색해야 하는 데이터 분석의 범위를 좁힐 수 있습니다.


뿐만 아니라, 이런 궁금증에 대한 답을 확인해 볼 수도 있습니다. 

"21일이 수요일임을 고려할 때, 혹시 매주 수요일의 시간대별 통화량 패턴은 다른 요일과 다른 패턴을 보인 것은 아닐까?"
"그렇다면 21일 밤에 콜택시 통화량이 증가한 것은 '수요일'의 특징이므로, 특이한 인사이트라고 말할 수 없는 게 아닐까?"
12월의 수요일별 x 시간대별 콜택시 통화량

분명 21일, 그날 밤 무슨 일이 있기는 했나 봅니다! 12월에는 4번의 수요일- 7일, 14일, 21일, 28일- 이 있는데,  이 중 21일의 통화량만이 상이한 패턴을 보입니다. 다소 여타의 수요일과 비슷한 패턴을 보이는 대전을 제외하면, 부산, 울산, 대구의 통화량은 다른 날짜의 수요일과 달리 21일 밤에만 유독 증가했음을 알 수 있습니다. 서울의 경우 시간대별 통화량 추이 패턴은 평소와 유사하나, 21일의 통화량이 그중에서도 가장 많았음을 알 수 있습니다.


한편, 선 차트가 아닌 다른 시각화 유형을 사용하여 또 다른 인사이트를 도출해 낼 수도 있습니다.

날짜 x 시간 변수 조합으로 보는 주요 도시의 콜택시 통화량

위 이미지는 부산과 서울의 통화량을 요일별 X 시간대별 조합에 따라 XY 히트맵으로 시각화한 결과물입니다. 해당 분석 기준에 따르면 부산의 경우 출·퇴근 시간 중에서도 출근 시간대, 그중에서도 목·금요일의 8시의 통화량이 많았음을 알 수 있습니다. 반면, 서울의 경우 부산과 뚜렷이 구별되는 패턴으로 목·금요일 0시, 23시에 통화량이 많았음을 알 수 있습니다. 그중에서도 가장 많았던 경우는 목요일 23시입니다. 시각화 유형을 달리했더니, 조금 더 디테일한 인사이트 분석이 가능하다는 것을 알 수 있습니다.




데이터 시각화를 데이터를 시각적으로 요약하여, 자료를 보는 사람으로 하여금 내용 이해를 돕기 위해 사용하는 수단 등으로 알고 계신 분들도 있으리라 생각됩니다. 그러나 이번에 연재한 포스팅의 내용- 시계열 데이터의 시각적 분석-은 데이터 시각화가 단순히 잘 보여주기 위한 수단으로 사용되는 것이 아니라, 데이터에서 인사이트를 도출해내는 '분석'을 이끌어나가는 매개체로 작용함을 보여줍니다. 데이터 시각화가 중요하고, 필요한 이유...! 그 이야기를 어제도, 오늘도 했고, 내일도 할 제 마음을 조금은 아시겠죠?! 데이터 시각화의 가치를 더 많은 분들이 공감하고 경험할 수 있는 날이 오길 바라면서, 이번 연재 글을 마무리합니다:)  


* 이 글의 원문 출처는 뉴스젤리 블로그 '[데이터 시각화] 시계열 데이터의 시각적 분석(2) 실제 적용 사례를 공개합니다!' 입니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari