프로그래밍 언어/Python

금리지표 데이터 시각화하기

· 코딩마이데이

수집한 금리지표를 한눈에 파악할 수 있도록 시각화해 보겠습니다. 가로축에는 TIME 열을, 세로축에는 DATA_VALUE 열을 두고 시간의 흐름에 따른 금리지표의 변동 추이를 선 그래프로 표현할 것입니다.

 

이번에는 최근 시점의 금리지표 값을 최초 시점과 비교하여 상승하였으면 빨간색, 하락하였으면 파란색, 동일하면 검은색으로 채워

변동 추이가 극명히 보이도록 해 보겠습니다.

 

비주얼 스튜디오 코드에서 새로운 파일을 생성하고 파일명 'step_2_2.py'로 변경합니다. 다음과 같이 코드를 입력하고, 대화형 창에서 실행하면 'img' 폴더에 다섯 가지 금리지표의 최근 2년차 변동 추이를 시각화한 그래프가 이미지 파일로 생성됩니다.

 

ch_10/step_2_2.py

import matplotlib.pyplot as plt
import pandas as pd
from step_1_1 import IMG_DIR # 이전에 작성한 모듈을 불러옵니다.
from step_2_1 import OUT_2_1

def indicator_to_png(): # 06
    with pd.ExcelFile(OUT_2_1) as xlsx: #ExcelFile 객체 생성 # 07
        for sheet_name in xlsx.sheet_names: 
            df_raw = pd.read_excel(xlsx, sheet_name=sheet_name) # 시트별로 데이터프레임 생성 
            df_raw = df_raw.tail(24) # 마지막 24개월 데이터 추출 # 10
            x_value = df_raw.index # 가로축 데이터
            y_value = df_raw["DATA_VALUE"] # 세로축 데이터
            y_min = y_value.min() # 세로축 데이터 최소값 # 13
            change = y_value.iloc[-1] - y_value.iloc[0] # 세로축 데이터 # 14
            color = ("red" if change > 0 else "blue" # 15
                     if change < 0 else "black") # 16
            fig, ax = plt.subplots(figsize=(9, 3), dpi=100)
            ax.plot(x_value, y_value, color=color, linewidth=3) # 선 그래프
            ax.fill_between(x_value, y_value, y_min, # 19
                            color=color, alpha=0.10) # 채우기 # 20
            ax.set_axis_off() # 축 제거
            fig.set_layout_engine("tight") # 여백 제어
            fig.savefig(IMG_DIR / f"{sheet_name}.png") # PNG 파일로 저장

if __name__ == "__main__":
    indicator_to_png() # 주요 금리지표 데이터 시긱화

 

산금체.PNG
일반신용대출.PNG
정기예금.PNG
정기적금.PNG

 

주텍담보대출.PNG

 

06 금리지표 데이터를 시각화하여 이미지로 저장하는 함수 indicators_to_png()를 정의합니다.

07 ExcelFile 객체의 시트를 하나씩 반복 처리합니다.

10 함수 tail(24)를 사용하여 마지막 24개월에 해당하는 데이터를 추출합니다.

13 함수 min()을 사용하여 세로축 데이터의 최솟값을 변수 y_min에 저장합니다.

14 데이터의 첫 번째 값과 마지막 값 사이 증감량을 계산합니다.

15~16 변수 color에 값이 증가하면 'red', 감소하면 'blue', 동일하면 'black'을 저장합니다.

19~20 함수 fill_between()을 사용하여 y_value와 y_min 사이의 면적을 불투명도 0.1로 채웁니다.