본문 바로가기

Visualization

Python으로 데이터 시각화 하기! (3) - Line Chart (선도표, 라인 차트)

안녕하세요~ 오늘은 저번에 이어서 파이썬으로 데이터 시각화 하기! 그 첫 번째, 라인 차트 그리기를 해볼겁니다.

라인 차트는 흔이 볼 수 있는 꺾은선 그래프를 떠올리시면 되는데요. 수많은 분야에서 가장 일반적으로 쓰이는 차트입니다.  x축과 y축 이 두 가지 축 중에서 일반적으로 x축 값을 기준으로 정렬해서 그리는 차트입니다.

이번 포스팅에서 제가 그려볼 라인 차트는 제 블로그에서 포스팅한 CLOU와 SKYY 시계열 가격 차트인데요. 우선 차트를 그리기 전에 데이터 시각화를 하기 위해 파이썬에서 가장 많이 사용하는 라이브러리 패키지, matplotlib을 설치하는 방법을 살짝 짚고 넘어가도록 할게요.

 

저번 포스팅에서 파이썬 설치를 저와 같이 해보셨다면 아마 anaconda를 설치하셨을 거에요. 그렇다면 사실 matplotlib을 따로 설치할 필요는 없습니다. anaconda를 설치할 때 같이 자동으로 설치가 되거든요. 하지만 혹시 아직 matplotlib을 설치하지 못하신 분들이 있을 수 있으니 간단하게 파이썬에서 라이브러리 패키지를 설치하는 방법을 짚고 넘어갈게요.

 

우선 anaconda prompt를 켜줍니다. 패키지를 설치할 때는 관리자의 권한을 요구하는 경우가 많으니 관리자의 권한으로 실행을 꼭! 해주세요. 혹여나 anaconda를 설치하지 않고 파이썬만 설치하셨다면 파이썬 명령프롬프트를 켜주면 됩니다.

 

 

이렇게 명령프롬프트를 켜주고 conda install matplotlib을 쳐주면 됩니다. 파이썬 명령프롬프트의 경우 pip install matplotlib을 쳐주시면 됩니다.

 

 

저는 이미 설치가 되어 있다고 나오네요. matplotlib 외에도 numpy와 pandas 패키지 정도는 앞으로도 많이 쓰일 수 있으니 같이 설치해주시면 좋을 것 같습니다.

 

이렇게 패키지를 설치하고 jupyter notebook을 설치해서 자신이 원하는 폴더에 new python3를 만들어 줍니다.

 

저는 오늘 CLOU와 SKYY 의 가격 데이터를 라인 차트로 그려볼건데요. 최종적으로는 아래와 같은 모양의 차트를 만들 수 있게 됩니다.

이에 대한 자세한 jupyter notebook에서 사용한 코드에 대해서 알아볼게요.

Line Chart

Line Chart 그리기

필요한 패키지, 아까 설치한 matplotlib과 pandas를 불러와 줍니다.

In [1]:
# 필요한 패키지 불러오기
import pandas as pd
import matplotlib.pyplot as plt

그리고 이제 데이터를 불러와야겠죠? 저는 csv 파일로 저장을 해놓아서 pandas 패키지의 read_csv를 사용했습니다.

In [2]:
# CLOU 데이터 불러오기
CLOU = pd.read_csv('파일경로/CLOU(day).csv', index_col=0, engine='python')
CLOU
Out[2]:
Open High Low Close Volume
Time
2019-04-17 15.19 15.19 14.76 14.80 1.41M
2019-04-18 14.91 14.91 14.55 14.78 992.942K
2019-04-22 14.78 15.04 14.77 15.04 324.051K
2019-04-23 15.11 15.28 15.09 15.25 452.986K
2019-04-24 15.32 15.36 15.22 15.25 492.164K
... ... ... ... ... ...
2020-07-06 22.61 22.80 22.29 22.37 949.057K
2020-07-07 22.38 22.64 22.25 22.29 775.778K
2020-07-08 22.49 22.90 22.46 22.90 1.069M
2020-07-09 23.12 23.18 22.60 23.08 1.195M
2020-07-10 23.08 23.09 22.80 22.97 236.815K

311 rows × 5 columns

In [3]:
# SKYY 데이터 불러오기
SKYY = pd.read_csv('파일경로/SKYY(day).csv', index_col=0, engine='python')
SKYY
Out[3]:
Open High Low Close Volume
Time
2012-07-30 18.31 18.31 17.92 17.97 14.689K
2012-07-31 17.95 18.07 17.86 17.91 28.128K
2012-08-01 17.99 18.03 17.63 17.67 9.824K
2012-08-02 17.50 17.79 17.37 17.50 166.492K
2012-08-03 18.08 18.12 17.85 18.06 15.204K
... ... ... ... ... ...
2020-07-06 76.93 77.36 76.26 76.57 525.489K
2020-07-07 76.32 77.44 75.84 75.91 489.181K
2020-07-08 76.41 77.86 76.38 77.86 553.542K
2020-07-09 78.79 78.92 77.16 78.71 571.962K
2020-07-10 78.41 78.78 77.62 78.11 442.331K

2000 rows × 5 columns

그래프의 x축 값을 이쁘게 보여주기 위해 Time index를 pandas 형식에 맞게 변형시켜줍니다.

In [4]:
# 인덱스를 pandas의 datetime 형태로 바꿔주기
CLOU.index = pd.to_datetime(CLOU.index)
SKYY.index = pd.to_datetime(SKYY.index)

이제 본격적으로 차트를 그려야겠죠. 차트를 그리기 위해서는 우선 사이즈를 설정해 차트를 만들어줍니다. 그런 다음 CLOU와 SKYY의 데이터를 불러와 줍니다. 여기서 이제 label 값을 설정해야 범례가 만들어지기 때문에 label은 꼭 설정해주세요.

In [5]:
# 차트 그리기
fig = plt.figure(figsize=(20, 12)) # 차트 생성 및 사이즈 설정
ax = fig.add_subplot(1,1,1) # subplot 생성

ax.plot(CLOU['Close'], label='CLOU', color='b') # CLOU 종가 불러오기
ax.plot(SKYY['Close'].iloc[1689:], label='SKYY', color='r') # SKYY 종가 불러오기

ax.set_title('CLOU & SKYY Close price', fontsize=20) # 타이틀 설정
ax.set_ylabel('price', fontsize=14) # x축 설정
ax.set_xlabel('Date', fontsize=14) # y축 설정

ax.legend(fontsize=12, loc='best') # 범례 설정 best로 해놓으면 가장 적절한 위치에 알아서 범례가 놓이게 됩니디

plt.show()

이런 식으로 간단하게 matplotlib을 이용해서 종가 차트를 그릴 수 있습니다. 여기서 이제 색상과 x축 글자 모양 등등을 설정해주면 자신만의 라인 차트를 그릴 수 있겠죠?