파이썬 데이터 분석 사례 - paisseon deiteo bunseog salye

파이썬 데이터 분석

데이터 분석이란?

데이터란, 어떤 사실에 대한 측정이나 관찰을 통해 모아놓은 값들의 모음을 말합니다. 보통 '모음'이라는 사실을 강조하기 위해 '데이터셋(data set)'이라는 표현도 많이 쓰입니다.

분석이란, 어떤 대상을 더 잘 이해하기 위해, 이를 나누고 쪼개는 것을 말합니다.

데이터 분석이란, 어떤 대상에 대한 사실을 설명하는 값의 모음을 유효적절한 방법으로 나누고 쪼개서 그 대상을 더 잘 이해하는 것이라고 할 수 있습니다.

빅 데이터에 대한 탐색적 데이터 분석

탐색적 데이터 분석(EDA. exploratory data analysis)은 기계 학습, 자연어 처리, 패턴 인식 등 모든 데이터 과학의 출발점이라고 할 수 있습니다. 이는 각종 통계적 기법을 적용하여 데이터의 주요 특징을 발견하고, 이를 시각화하여 표현하는 일련의 과정을 포괄합니다.

본 수업에서는 이 탐색적 데이터 분석 방법을 배울 것이며, 이를 곧 '데이터 분석'으로 지칭할 것입니다.

데이터 분석의 가치

1. 버락 오바마 미국 대통령의 재선 사례

오바마 선거 캠프에서는 유권자들의 64%가 인터넷을 사용하여 대선 후보자들의 발언의 진위 여부를 조사한다는 연구 결과에 주목하여, 유권자들이 구글에서 어떤 검색어를 사용하였을 때 선거 캠프 웹 페이지로 가장 많이 유입되는지를 데이터 분석을 통해 실시간으로 조사하였습니다.

데이터 분석에 기반한 이러한 전략은, 결과적으로 버락 오바마의 재선을 성공시키는 주된 요인으로 작용하였습니다.

2. 아마존의 추천 시스템 사례

온라인 서점으로 유명한 아마존에서는 고객들이 이전에 구매했던 서적 데이터에 대한 분석을 통해, 해당 고객과 유사한 구매 성향의 고객들이 구매한 서적을 추천해 주는 방식으로 자체적인 추천 시스템을 구축하였습니다.

이 추천 시스템 도입으로 인한 매출은, 오늘날 아마존이 서적 판매를 통해 거둬들이는 전체 매출의 35% 가량을 차지한다고 합니다.

3. 2014 브라질 월드컵에서의 독일 국가대표 축구팀 사례

독일축구협회에서는 SAP AG 측으로 독일 국가대표 축구팀의 경기 영상을 촬영한 비디오 데이터와, 선수 개인별 기록 데이터, 팀 기록 데이터 등에 대한 분석을 의뢰하였습니다. SAP AG 측에서는 해당 데이터에 대한 분석을 통해 선수 개인의 기량을 어떻게 향상시킬 수 있을지, 팀워크를 어떻게 향상시킬 수 있을지에 대한 디테일한 피드백을 제공하였습니다.

그 결과, 독일 대표팀은 준결승전에서 홈 팀인 브라질을 7:1로 대파하고, 결승전에서 아르헨티나마저 꺾어버리는 놀라운 성적을 보였습니다.

'빅 데이터'의 등장

빅 데이터(big data)는, 양이 너무 많고 복잡해서, 통상적으로 사용되는 데이터 분석 방법이 잘 적용되지 않는 데이터를 의미합니다.

통계 이론의 핵심적인 이론인 '큰 수의 법칙(law of large numbers)'에 의하면, 표본의 크기가 커질수록 그 데이터의 평균이 실제 모집단 데이터의 평균에 가까워진다는 사실이 알려져 있습니다. 이는 양면으로 구성된 동전을 더 많이 던질수록, 전체 던진 횟수 대비 앞면이 나온 횟수의 비율이 (이론적으로 동전의 앞면이 나올 확률인) 0.5에 가까워진다는 결과를 통해 확인할 수 있습니다.

이 법칙을 데이터의 측면에서 바라보면, 어떤 대상과 관련된 사실의 단면을 보여주는 데이터의 양이 많을수록, 분석을 통해 대상에 대한 이해를 보다 사실에 가깝게 할 수 있을 가능성이 높아진다는 것을 입증하고 있습니다. 다시 말해, 데이터의 양이 많아지면서 빅 데이터에 가까워질수록, 분석 결과를 '일반화(generalization)'하기가 더 수월해진다는 것입니다.

이 때문에 데이터 분석을 하고자 하는 사람들의 입장에서는 "어떻게 하면 더 많은 데이터를 수집할 수 있을까?"가 항상 화두였는데, 오늘날 기술의 발전으로 데이터가 축적되는 속도 자체가 매우 높아졌으며, 이로 인해 동일한 시간과 노력을 들이더라도 더 많은 데이터를 수집하는 것이 가능해졌습니다.

오늘날, 분야를 막론하고 빅 데이터에 대한 분석은 가히 일의 성패를 좌우할 수 있는 중요한 과제로 부각되고 있습니다.

왜 Python인가?

여러분이 사용할 '빅 데이터'

오늘날의 빅 데이터는 일반적으로 테라바이트(TB) 혹은 페타바이트(PB) 수준의 용량을 가지는 데이터를 지칭하나, 여러분과 같은 개인의 수준에서 저 정도 용량을 다루는 것은 불가능에 가깝습니다.

그러므로, 본 수업에서 여러분이 다룰 '빅 데이터'는 대략 수 백 메가바이트(MB) 혹은 수 기가바이트(GB) 수준 용량을 가지는 데이터라고 재정의하도록 하겠습니다.

샘플 데이터: US Baby Names

[US Baby Names 데이터셋 다운로드] - https://drive.google.com/file/d/0B9fcvsgEhJNsN0FUaGZudFYyTVU/view

엑셀(Excel)을 사용하여 데이터 분석을 해 보고자, 'US Baby Names'라는 이름의 샘플 데이터셋을 사용하도록 하겠습니다. NationalNames.csv라는 이름의 CSV 파일로 구성되어 있으며, 용량이 약 42.2MB정도 됩니다. 이 데이터셋은 미국에서 1880년부터 2014년까지 태어난 남자 아이와 여자 아이의 이름(first name)에 따른 출생횟수를 나타내는 데이터셋입니다.

엑셀을 사용한 샘플 데이터 분석

엑셀을 사용하여 NationalNames.csv 파일을 연 뒤 분석하려고 하면, 몇 가지 치명적인 문제가 있는 것을 확인할 수 있습니다.

  • 데이터셋에서 최대 1,048,576행까지밖에 로드할 수 없습니다. US Baby Names 데이터셋이 총 1,825,434 행으로 구성되어 있으므로, 거의 절반에 육박하는 분량의 데이터를 흘려보낸 것입니다.
  • 부분합 등의 단순한 작업도, 실행 속도가 너무 오래 걸립니다.
  • 좀 더 복잡한 분석을 하려고 하면, 작성해야 하는 엑셀 함수가 너무 복잡해집니다.

Python을 사용한 샘플 데이터 분석

Python을 사용하여 NationalNames.csv 파일을 열어 분석하면, 전체 데이터셋을 온전히 로드할 수 있으며 분석 작업을 빠른 속도로 수행할 수 있습니다. Python 라이브러리의 특성 상 매 분석 결과를 화면에 모두 표시해주지 않으므로, 이로 인해 빠른 분석 속도를 발휘할 수 있습니다.

그럼 왜 수많은 프로그래밍 언어 중 Python인가?

다른 수많은 프로그래밍 언어들 중, 데이터 분석을 위해 Python을 추천하는 이유는 다음과 같습니다.

  • 언어 자체가 너무 쉽습니다.
  • 컴퓨터와 대화하듯이 프로그래밍이 가능합니다.
  • numpy, pandas, matplotlib 등의 강력한 데이터 분석 라이브러리를 제공합니다.
  • 모두 오픈 소스(open source)이며, 공짜 입니다.

R 언어의 경우에도 위와 같은 장점을 모두 가지고 있는 스크립트 언어이나, R의 경우 통계 분석 및 리서치 작업 등에 특화된 성격이 강합니다. 반면, Python의 경우 다양한 목적으로 범용적으로 사용할 수 있는 언어입니다. 이는 Python으로 데이터 분석한 결과물을 웹 사이트를 통해 외부에 공개하고자 할 때 매우 유리한 특징이라고 할 수 있습니다.

원활한 Python 데이터 분석을 위한 핵심 도구

Python에서는 Python shell이라고 부르는 기본적인 대화식 프로그래밍 툴을 제공하는데, IPython은 이 기본 툴에 몇 가지 강력한 기능을 덧붙인 툴이라고 할 수 있습니다.

IPython Notebook은, IPython의 대화식 프로그래밍 방식을 기본적으로 제공하면서, 여러분이 데이터 분석을 하는 과정을 노트 형식으로 보기 쉽게 기록하고 정리해 놓을 수 있도록 도와주는 강력한 툴입니다.

Python 데이터 분석 라이브러리

numpy

numpy는 주요한 Python 데이터 분석 라이브러리들의 기본 베이스가 되는 라이브러리입니다. numpy는 특히 벡터(vector) 및 행렬(array) 연산에 있어 엄청난 편의성을 제공하는 라이브러리입니다.

여러분이 데이터 분석을 하는 데 직접적으로 많이 사용하지는 않겠지만, 추후 많이 사용하게 될 pandas와 matplotlib의 기반이 되는 라이브러리라고 할 수 있습니다.

pandas

여러분은 pandas를 가장 많이 사용하게 될 것입니다. pandas는 고유하게 정의한 Series 및 DataFrame 등의 자료구조를 활용하여, 빅 데이터 분석에 있어 높은 수준의 퍼포먼스를 가능하게 하는 라이브러리입니다.

여러분이 기존에 엑셀로 하던 모든 분석을 더 큰 스케일의 데이터에 적용할 수 있으며, 더 빠른 속도로 수행할 수 있습니다.

matplotlib

matplotlib은 데이터 시각화를 위한 라이브러리입니다. 엑셀에서 차트를 그릴 경우 데이터의 양이 조금만 많아지더라도 엄청나게 버벅이는데, matplotlib을 사용하면 데이터 분석 결과에 대한 시각화를 빠르고 깔끔하게 수행해줍니다.