Programming/Python

[Python] 차트 그리기 :: Pandas, Matplotlib, Numpy

쌍쌍바나나 2016. 5. 20. 22:30
반응형

들어가며

  데이터 분석을 하다보면, 시각화(Visualization)을 해야한다. 우리가 물론 값을 눈으로 확인하면 되지만, 전체적인 추이를 확인하거나, 일정 패턴이 있는지 확인하기 위해서는 그래프만큼 좋은게 없다. 파이썬은 데이터 분석을 하기 위해한 모듈이 갖춰져 있어 많은 사람들이 사용한다. R이나 Matlab을 사용하는 사람도 많지만, 뭐 셋다 거의 비슷비슷하다. 내 주위 사람은 matlab을 사용하다가 파이썬으로 넘어오기도 한다. 그 이유는 약간 파이썬이 구현적인 느낌을 받는다나... 사실 왜 넘어온지는 모르겠지만 일단! 파이썬에서는 Pandas, Matplotlib, Scipy, Numpy를 이용하고, 거기에 machine-learning을 하기 위한 scikit-learn만 잘쓰면 어디서 데이터 분석좀 해봤다... 라고 말 할수 있다. 

  너무 도입이 길었다. 이번에 설명할 예제는 이런 것도 되는구나의 맛보기인 pandas, numpy, matplot을 이용해 차트를 그리는 예제이다. pandas, numpy, matplot은 각각 라이브러리를 의미하고, 각각 pip를 이용해 install이 가능하다. 아무래도 행렬(Matrix)의 연산을 하기 위해서는 pandas, numpy를 많이 사용한다. 행렬연산은 연산의 코스트가 크기 때문에 pandas, numpy같은 경우에는 최적화 되어있다. 우리가 실제로 사용하고 있는 파이썬은, 빠른속도의 언어는 아니기때문에 그러한 단점을 보완해주는 라이브러리라고 생각하면 쉽다. matplot은 차트를 그려주는 라이브러리로, histogram, scatter, box, area, pie 등을 표현할 수 있다.

 예제코드

  아래 예제 코드는 numpy는 50 x 4 행렬을 랜덤하게 생성해주는데 사용하였고, 4개의 컬명을 column1~4까지해서, DataFrame을 생성했다. DataFrame은 pandas라이브러리를 사용해서 만들 수 있다. 엄청나게 강력한놈이다. column만의 정보를 뽑아주거나, transpoose, 행렬 multiply등을 지원한다. DataFrame에 scatter형태의 x축은 column1, y축은 column2로 만든다. matplotlib을 이용해 마지막으로 show()를 해주면 DataFrame에 있는 데이터를 그래프로 보여준다. 어떻게 그려지는지 궁금하면 아래 코드를 돌려보도록.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

array = np.random.rand(50,4)
# array 
'''
array([[ 0.3347008 ,  0.17101007,  0.60413486,  0.07802254],
       [ 0.99833921,  0.8127049 ,  0.88208538,  0.72311924],
       [ 0.9183722 ,  0.88758343,  0.86167109,  0.78183782],
       [ 0.79292021,  0.9091759 ,  0.29359604,  0.28822469],
       [ 0.54208173,  0.36041798,  0.5120044 ,  0.47802358],
       [ 0.90270792,  0.72576188,  0.41491166,  0.3220259 ],
       [ 0.96239715,  0.29116418,  0.28649957,  0.83994126],
       [ 0.58893068,  0.11073341,  0.86004333,  0.75391128]...]
'''

df = pd.DataFrame(array, columns = ['column1', 'column2', 'column3', 'column4'])
# kind = 'scatter', 'bar', 'hist', 'box', 'kde', 'area', 'hexbin', 'pie'
df.plot(kind='scatter',  x='column1', y ='column2', color='Blue', label='group1')
plt.show()

[참고 사이트]  http://pandas.pydata.org/pandas-docs/stable/visualization.html



반응형