본문 바로가기

Programming/Data mining

9. Pandas Visualization / 코세라(COURSERA) 수료증_python

Coursera.org 에서 Michigan University의 Applied Data Science with Python의 강의를 토대로 정리한 내용입니다.

https://www.coursera.org/account/accomplishments/certificate/JE6Q4XBQM2JJ

https://www.coursera.org/account/accomplishments/certificate/8HD7UJ4SY4B

헿.. 시작하기에 앞서서 드디어 이번 파이썬을 활용한 데이터마이닝의 두번째 코스 파이썬을 활용한 데이터표현 수료증을 받았다!
코세라(COURSERA)수료증은 위에 처럼 나온다. 받고 나면 굳이 이걸 위해서 돈을 내고 들었어야 하나 생각도 잠시 들지만, 코세라 강의의 핵심은 수업보다 과제에 있다는 것을 많이 느끼기에, 돈이 크게 아깝지 않았다..

그리고 요건 내 파이널 과제로 만들어 본 3일 전의 세계 코로나 현황 데이터.. 시간이 많이 없어서 좀 조잡하긴 하지만 나름 배운것들을 열심히 꾸겨넣었다.
그런데 이걸 제출하자마자 3일만에 벌써 두배라니.. 어서 상황이 진정됐으면 좋겠다.

사실 이번 강의를 들으면서 좀 허탈했다. 비유하자면 실컷 insertion sort, merge sort, quick sort 등 다양한 솔트 알고리즘을 외웠는데 파이썬에서 .sort()로 다해결하는 기분이랄까? 하지만 그런 알고리즘을 알고 동작 배경을 알고 있어야 나중에 정말 필요할 때 더 적합하게 이용할 수 있는 것 처럼 기본을 다져왔다고 생각하려고 한다. 여튼 내가 허탈했던 것은 판다스를 통해 정의된 데이터프레임은 그냥 plot이 된다는 것이다.
예제코드를 보자.

np.random.seed(123)

df = pd.DataFrame({'A': np.random.randn(365).cumsum(0), 
                   'B': np.random.randn(365).cumsum(0) + 20,
                   'C': np.random.randn(365).cumsum(0) - 20}, 
                  index=pd.date_range('1/1/2017', periods=365))
                  
df.plot(); #line plot
df.plot('A','B', kind = 'scatter'); #scatter plot

random.seed()는 난수 생성 시드이며, cumsum(0)는 누적합이 0이 되게 하겠다는 말이다.
index를 date_range를 통해 설정해주었으며, df.plot()은 라인 함수를, df.plot(kind='scatter')는 스캐터 함수를 그리게 된다.

디테일하게는 이러한 것 까지 가능하다.

# create a scatter plot of columns 'A' and 'C', with changing color (c) and size (s) based on column 'B'
df.plot.scatter('A', 'C', c='B', s=df['B'], colormap='viridis')
ax.set_aspect('equal')

#A와 C에 대한 스캐터 함수를 그리되 컬러와 사이즈를 column B를 기준으로 변경시키겠다는 뜻이다.
#그리고 각 축의 간격을 동일한 기준으로 맞추겠다는 선언이다.
#이러한 선언은 독자들이 그래프로부터 왜곡된 정보를 얻는 것을 방지해줄 수 있다.

df.plot.kde();
#kde() function을 이용해 커널밀도추정 함수를 보여줄 수도 있다.

Dataframe.plot을 이용해 그릴 수 있는 Plot의 종류

'line' : line plot (default)
'bar' : vertical bar plot
'barh' : horizontal bar plot
'hist' : histogram
'box' : boxplot
'kde' : Kernel Density Estimation plot
'density' : same as 'kde'
'area' : area plot
'pie' : pie plot
'scatter' : scatter plot
'hexbin' : hexbin plot

또한 plotting tools를 이용해서 다양한 플로팅을 할 수도 있는데 그 중 유용한 예시는  scatter_matrix() 이다.
이는 데이터프레임 열간의 관계를 diagonal에는 히스토그램으로, non-diagonal에는 hexbin으로 표현한다.

pd.tools.plotting.scatter_matrix(iris);

 

이 외에도 seaborn과 같이 데이터표현을 강력하게 도와주는 라이브러리들이 존재하지만, 지금 다루는 것보다 나중에 실제로 쓰게 될 때 한번 활용해서 포스팅해보도록 하겠다.

그럼 여기까지 Python을 활용한 데이터마이닝 및 데이터표현 포스팅 끝.