#0. 데이터 분석에 유용한 라이브러리를 소개합니다! (numpy, pandas, matplotlib)

Python에 대한 글을 적기 위해 '어떤 내용으로 글을 시작하면 좋을까?' 오랜 시간 고민을 했습니다..


블로그에 다양한 주제의 글을 적을 예정이기는 하지만, Python에 대한 글은 짜임새 있게 글을 적고 싶어 방향성을 크게 다음과 같이 정해보았습니다.

1. 데이터를 다루는 법

2. 데이터 통계 처리

3. 시각화


결국은 주어진 데이터를 어떻게 다루는지에 대한 이야기를 주로 적게 될것 같습니다.

주어진 다양한 데이터 (e.g. Excel, 주식, 경제, 물리, 이미지 등)에 대해서 제 전공과 했던일들 위주로 글을 시작해보겠습니다...


Python은 매우 다양한 모듈을 제공하고 있습니다. 그 중 주로 사용되는 모듈을 고르라고 한다면 numpy, pandas 그리고 시각화를 위한 matplotlib을 고를것 같습니다.
(통계 처리를 위한 scipy, 또 다른 시각화 모듈 plotly 와 같은 유용한 모듈들은 추후에 하나씩 소개하도록 하겠습니다.)


NumPy


NumPy 모듈에 대한 설명은 다음과 같습니다 (numpy.org).

"NumPy 모듈은 파이썬을 통해 과학적인 컴퓨터 연산을 할 때 (scientific computing), 기초적인 패키지로 다음과 같은 기능들을 포함하고 있습니다.
- 강력한 N-dimensional array object
- 정교한 함수
- C/C++, Fortran 코드 통합을 위한 툴
- 유용한 선형 대수, 푸리에 변환, 난수 기능

명확한 과학적 용도 외에도 NumPy는 일반적인 데이터의 효율적인 분석을 위해 사용될 수 있습니다. (중략)"

결론은 우리가 데이터를 분석할 때, 필요한 수학적 기능들을 포함한 모듈이라고 생각하면 됩니다. 또한 우리가 아는 여러 함수들 (https://docs.scipy.org/doc/numpy-1.13.0/reference/routines.math.html)을 포함하고 있습니다.

단순히 주어진 list 자료를 연산하면 아래와 같은 결과가 도출되기 때문에, 수학적으로 연산하기 위해서는 array 형의 데이터를 사용해야 합니다. 
a = [1,2,3]
b = [4,5,6]

print(a + b)

>>> [1,2,3,4,5,6]

이 때, NumPy가 유용하게 사용됩니다.

import numpy as np

a = np.array([1,2,3])
b = np.array([4,5,6])

print(a + b)

>>> [5,7,9]

이에 대한 자세한 내용은 파이썬의 데이터 종류와 함께 다음 글에서 정리해보도록 하겠습니다.


Pandas

Pandas 모듈에 대한 설명을 살펴보겠습니다 (https://pypi.org/project/pandas/)

"pandas는 Python 패키지로, (tabular, multidimensional, potentially heterogeneous) 구조화되거나 시계열 데이터에 대해 직관적으로 사용할 수 있도록 빠르고 유연하며 표현적인 데이터 구조를 제공합니다.
Python에서 real world 데이터 분석을 수행하기 위한 필수적인 기능 제공을 목표로 합니다. 또한 모든 언어에서 사용할 수 있는 가장 강력하고 유연한 오픈 소스 데이터 분석 툴이 되기 위한 장기적인 목표를 가지고 있으며, 이를 향해 나아가고 있습니다."

매우 추상적으로 표현이 되어 있어 쉽게 이야기해 드리겠습니다.
우리가 흔히 사용하는 Excel 데이터와 같은 표 형식의 데이터 (i.e. *.txt, *.csv, *.ascii etc.)들을 Python 내에서 불러들이고 처리하기 쉽게 해주는 기능을 제공합니다.
(다만 Pandas 설명대로 실제로 속도가 빠른 편은 아닙니다. 특히 R과 많이 비교가 되곤 합니다..)
데이터를 구조화하여 처리하거나, 파일의 형태로 제공되는 자료를 활용할 때 매우 유용한 모듈입니다.

DataFrame이라는 구조를 통해 데이터를 처리하는데 이 방법은 소스 코드와 예제 파일을 통해 자세히 이야기해보도록 하겠습니다.



Matplotlib

공대를 다녀보신분들은 아마 Matlab이라는 소프트웨어에 익숙하실 겁니다 (아니라면 죄송합니다..).
matplotlib은 matlab에서 사용되는 그래프 기능과 유사한 기능들을 활용할 수 있게 해주는 라이브러리입니다. 개인적으로는 굉장히 중요한 라이브러리라고 생각합니다. 그 이유는 우리가 데이터를 처리한 후 얼마나 시각화를 잘하느냐에 따라 정보 전달력이 크게 달라지기 때문입니다.

데이터 시각화에 대해서는 https://serialmentor.com/dataviz/의 글을 많이 참조했는데, 이를 python 코드로 구현하는건 어렵다기보단 귀찮음이 수반되는 작업이긴 합니다....
그만큼 matplotlib 라이브러리를 이용하면 효과적인 정보 전달을 위해 다양한 조건들을 활용할 수 있습니다.
(최근 plotly 라이브러리를 활용하시는 분들이 많이 계신것 같습니다만 제가 사용해본적이 없어 일단은 matplotlib 위주의 그래프들을 보여드리게 될 것 같습니다..)

그래프 그리는 법 또한 추후에 예제들을 통해 알려드리도록 하겠습니다!!!



** 제가 주로 사용하는 라이브러리들을 소개했는데, 위에 언급하였듯이 scipy, seaborn, plotly, scikit-learn 과 같은 데이터 분석에 유용한 라이브러리는 많이 존재하고 있습니다. 파이썬을 처음 접하시는 분들에게는 다양함보다는 가장 대표적인 세 가지 모듈을 소개해드리는게 좋을것 같아 numpy, pandas, matplotlib에 대해 간략하게 이야기 드려 보았습니다.

이후에는 파이썬의 데이터 종류, 그리고 각 모듈을 활용하는 방법들에 대해 연재해보도록 하겠습니다.
또 그때마다 유용한 기능들을 따로 소개하고, 예제들과 함께 인사드릴 수 있도록 하겠습니다.

긴 글을 끝까지 읽어주셔서 감사합니다!!

댓글