[코드스테이츠 PMB 10기] 데이터 시각화
SQL/파이썬 못 다뤄도
데이터 분석 역량을
기를 수 있을까?
요즈음 어느 직무의 공고에서나 빠지지 않는 것이 바로 데이터 분석 역량이다. 그중에서도 IT 기업의 기획자(서비스 기획자/PM/PO)에게 있어 데이터를 읽고 해석해서 활용할 수 있는 능력인 '데이터 리터러시(Data Literacy)'는 매우 중요하다.
오스트리아 출신의 경영학자 피터 드러커는 "측정할 수 없으면 관리할 수 없고, 관리할 수 없으면 개선시킬 수도 없다"는 말을 남겼다. 빠르게 성장하는 스타트업일수록 목표를 성공적으로 달성하기 위해 고객, 제품, 시장 등에 관한 데이터를 적극적으로 활용해야 한다.
IT 기업에서 데이터를 처리하는 프로세스는 크게 위와 같이 요약할 수 있다. 데이터는 보통 고객이 사용하는 웹, 앱에서 생성된다. 서버는 이 데이터를 데이터베이나 다른 서버에 수집한다. 그러나 이 데이터는 가공되지 않고 구조적이지 않은 비정형 데이터이므로, 사용 목적에 맞게 가공(전처리)하는 과정을 거쳐 새로운 데이터베이스에 저장된다. 이때의 데이터베이스는 수많은 데이터들을 저장하는 창고나 다름 없어 데이터 웨어하우스라고 부른다. 데이터 웨어하우스에 쌓인 수많은 데이터를 한눈에 알아볼 수 있도록 데이터 시각화 과정을 거친다. 이러한 과정을 거쳐 데이터 분석을 하고, 유의미한 인사이트를 획득할 수 있다.
오늘은 위와 같은 프로세스 중, 생성과 수집을 제외한 가공·저장부터 분석까지의 과정을 간단하게 연습해보려고 한다. 데이터 분석 도구는 매우 다양하게 마련되어 있다. 그중에서도 가장 보편적으로 사용되는 것은 SQL과 파이썬이다. 특히 파이썬은 비전공자도 비교적 쉽게 배울 수 있고, 라이브러리를 사용한 데이터 시각화가 비교적 용이하여 많은 사랑을 받고 있다.
PMB 과정에서 이들에 대해 학습하기는 했지만, 사용하는 방법까지는 배우지 못했다. 그래서 내가 이미 다룰 줄 아는 데이터 분석 도구가 무엇이 있을지 고민하다가, '엑셀이 있었지!'라는 생각이 떠올랐다. 작년에 할 일이 없어도 너무 없을 때(...) 컴퓨터활용능력 2급을 따두길 잘했다, 잘했어. 게다가 이번 과제의 주제가 '데이터 시각화'인 만큼 차트라는 데이터 시각화 기능이 포함된 엑셀이 딱 좋을 것 같았다.
이렇게 데이터 분석을 위한 도구는 정했는데, 무엇을 분석하면 좋을지는 결정하지 못한 상태였다. 데이터를 무료로 구할 수 있는 사이트, Kaggle(참고)을 둘러보던 중 익숙한 기업의 데이터를 발견했다. 바로... 내가 정말 자주 이용하는 서비스이지만 아직 한 번도 분석하지 않은 서비스, OTT 플랫폼의 절대강자, 넷플릭스(투둠-).
앞서 언급한 데이터 분석의 프로세스에서의 생성과 수집은 위 링크의 도움을 받아 해결할 수 있었다. Kaggle의 사용자가 업로드해둔 넷플릭스의 데이터를 CSV 파일 형식으로 다운받을 수 있었다. 사용자가 제시하는 이 데이터에 대한 설명 및 아이디어는 다음과 같다.
Netflix is one of the most popular media and video streaming platforms. They have over 8000 movies or tv shows available on their platform, as of mid-2021, they have over 200M Subscribers globally. This tabular dataset consists of listings of all the movies and tv shows available on Netflix, along with details such as - cast, directors, ratings, release year, duration, etc.
넷플릭스는 가장 인기 있는 영상 스트리밍 플랫폼 중 하나이다. 2021년 중반 기준 넷플릭스는 8000개 이상의 영화 및 TV 프로그램과 2억 명 이상의 글로벌 구독자를 보유하고 있다. 이 표 형식의 데이터셋은 넷플릭스에서 이용할 수 있는 모든 영화 및 TV 프로그램 목록, 그리고 캐스팅, 감독, 등급, 개봉 연도, 기간 등의 세부 사항으로 구성되어 있다.
· Understanding what content is available in different countries
· Identifying similar content by matching text-based features
· Network analysis of Actors / Directors and find interesting insights
· Does Netflix has more focus on TV Shows than movies in recent years.
· 다양한 국가에서 이용 가능한 콘텐츠에 대한 이해
· 텍스트 기반 기능을 매칭하여 유사한 콘텐츠를 식별하기
· 배우/감독의 네트워크 분석 및 흥미로운 인사이트 도출
· 최근 몇 년간 넷플릭스가 영화보다 TV 프로그램에 더 주력하고 있는지
위와 같은 넷플릭스의 영화 및 TV 프로그램 데이터를 확인해보고, 어떤 추측과 가설이 가능할 지 고민하는 과정을 거쳤다. 그리고 다음과 같은 가설을 도출했다.
[1번 가설] 넷플릭스에서 서비스되는 K-콘텐츠의 type은 Moive보다 TV Show가 많을 것이다.
[2번 가설] 넷플릭스에서 서비스되는 K-콘텐츠의 listed_in은 Action & Adventure가 가장 많을 것이다.
왜 이러한 가설을 세웠는지 설명을 덧붙이자면, 최근 넷플릭스에서 성공을 거둔 K-콘텐츠를 살펴봤기 때문이다. 위 사진 속 K-콘텐츠들은 액션 어드벤쳐 드라마라는 공통점을 갖는다. 달리 말하면 type은 TV Show, listed_in은 Action & Adventure라는 뜻이다. 그래서 실제 데이터에서도 한국에서 제작한 콘텐츠 중 액션 어드벤쳐 드라마의 갯수가 가장 많을지 궁금해졌다.
두 개의 가설을 검증하기 위하여 엑셀의 피벗 테이블 기능을 활용하여 데이터를 확인했다. 먼저, country를 기준으로 필터를 적용했다. country 컬럼 'South Korea'가 포함된 항목을 다중 선택했다. [1번 가설]을 확인할 때는 type 컬럼을 행에 배치하고, [2번 가설]을 확인할 때는 listed_in 컬럼을 행에 배치했다. 그리고 이들의 개수를 값으로 구했다. 그랬더니 다음과 같은 결과가 도출됐다.
먼저, 1번 가설에 대한 데이터를 확인하니 Movie 60개, TV Show 170개로 TV Show가 2배 이상 많았다. 2번 가설에 대한 데이터에서는 International TV Shows, Korean TV Shows, Romantic TV Shows가 63개로 가장 많았다. 이렇게 보니 2번 가설에서 나의 추측과는 다른 부분이 있었다. 내가 예상한 Action & Adventure가 포함된 항목은 17개뿐이었기 때문이다. 이를 한눈에 확인해보기 위해 데이터 시각화 과정을 ㅓ쳤다.
세상에는 다양한 종류의 차트가 있다. 내가 선택한 데이터 분석 도구인 엑셀에서도 위와 같은 종류의 차트를 선택할 수 있다. 우리는 데이터의 내용과 특성에 맞게 적절한 표현법을 선택할 수 있다. 그렇다면 데이터 시각화는 왜 필요할까? 당연히 숫자로 된 다량의 데이터를 간편히 확인할 수 있기 때문일 것이다. 그리고 이때의 궁극적인 목적은 설득일 것이다.
데이터에 대한 분석과 인사이트를 전달하고자 하는 사람들은 보여주고자 하는 데이터의 종류와 상대방에 따라서 적절한 시각화 자료를 선택해야 한다. 이때 데이터 시각화는 시간과 개념적인 구조로 배열된 일종의 스토리텔링으로서 상대방이 데이터를 파악하는 데 큰 도움을 준다. 내가 되고자 하는 서비스 기획자/PM/PO는 데이터를 바탕으로 논리적인 의사 결정을 내리고 팀원들을 설득할 수 있어야 하는 사람이므로, 이러한 데이터 시각화 능력 또한 갖추고 있어야 할 것이다.
[1번 가설]에 대한 데이터의 항목은 Moive와 TV Show, 단 2개뿐이었으므로 가장 보편적인 형태의 차트인 묶은 세로형 차트로 시각화했다. "넷플릭스에서 서비스되는 K-콘텐츠의 type은 Moive보다 TV Show가 많을 것이다."라는 가설은 참으로 검증되었다.
[2번 가설]에 대한 데이터는 묶은 가로막대형 차트로 시각화했다. 묶은 세로막대형으로 만들었더니 listed_in 항목의 글자수가 비교적 많다 보니 뒷부분이 잘리는 현상이 발생했다. 그래서 묶은 가로막대형으로 구성하고, 어떤 항목이 가장 많은 개수를 차지했는지 한눈에 보기 위하여 숫자 오름차순으로 정렬했다. 그랬더니 International TV Shows, Korean TV Shows, Romantic TV Shows 다음으로 Crime TV Shows, International TV Shows, Korean TV Shows가 두 번째로 높은 개수를 기록했다는 것을 확인할 수 있었다. 그 아래로 이어진 각 항목들 간 순위를 파악하기가 매우 쉬웠다.
그런데 여전히 찜찜한 의문이 남았다. 피벗 테이블이 자동으로 정리해준 데이터에 대한 나의 믿음이 완벽하지 못했다. 과연 모든 항목을 제대로 포함한 것이 맞을지 의구심이 들었고, 결국 필터 기능을 활용하여 어떤 항목들이 피벗 테이블에 포함된 것인지 하나하나 뜯어봤다.
그리고 놀라운 오류(?)를 발견했다...! 첫 번째는 country의 필드 값이 없는 항목이 있다는 것, 두 번째는 데이터셋에 아예 포함되지 않은 작품이 있다는 것이었다. 한마디로 데이터 무결성(Data integrity)이 확보되지 못했다는 거다.
country 컬럼에서 (필드 값 없음) 필터를 적용하니 country에 어떤 값도 적히지 않은 콘텐츠가 무려 전체의 1/10에 달했다. 그중에는 넷플릭스의 초대박 K-콘텐츠, <오징어 게임>도 포함되어 있었다(...). 쉽게 말해 <오징어 게임>을 포함한 약 800개의 콘텐츠의 제작 국가가 '없음'으로 잘못되어 있었단 뜻이다.
뿐만 아니라 내가 가장 좋아하는 K-콘텐츠 중 하나인 <스위트 홈>은 아예 데이터셋에 포함되어 있지 않았다. 혹시나 하는 마음에 Ctrl+F로 검색까지 해봤지만 나오지 않았다. 이로서 이 데이터 자체에 크고 작은 오류가 있음이 확인됐고, 나의 데이터 분석 또한... 실효성을 잃었다.
그럼에도 데이터 수집 이후에 데이터를 어떻게 가공해야 하는지, 고객 분석을 위해 추가로 수집해야 할 데이터는 무엇이 있을지에 대해서 PM으로서 고려해볼 수 있는 좋은 기회였다고 생각한다. 이렇게 또 하나의 지식이 늘어나는 것 아니겠는가. 다음에는 구글 빅쿼리 등을 활용하여 더더욱 정확하고 의미있는 데이터 분석을 수행해보고 싶다는 생각을 했다. 오늘도 우당탕탕 과제 끝!
참고자료