TIL_20231219 (금시세와 원달러 시간에 따른 변화 비교/시각화)

0
post-thumbnail

내일배움캠프 1주차 미니 프로젝트 주제를 가지고 데이터 처리과정과 시각화 과정 기술

프로젝트 개요

  1. 금, 원달러 시세 동향을 파악하여 경제 안정성을 확인할 수 있다.
  2. 금 시세가 상승할수록 경제는 불안정하다.

데이터 수집

  • KRX정보데이터시스템에서 추출(2020.01 ~ 2023.12.15)
  • 한국은행 경제통계시스템에서 추출(2020.01 ~ 2023.12.15)

활용 데이터 유형

  • 날짜 데이터 (date)
  • 금액 데이터 (float) : 금은 원/g, 환율은 USD/KRW

데이터 전처리(정규화)

  • 금 시세, 원달러 환율이 같은 날짜에 존재하지 않는다면 결측치로 제외
  • 2020~2023까지 분기단위로 평균금액 표시
#dataset : 일자별 금(종가기준), data2 : 일자별 원달러 환율(종가기준)
select d.date, d.last_price , d2.종가 
from dataset d inner join data2 d2 on d.`date` = d2.일자

# 분기별 평균가액
SELECT YEAR(`date`) YEAR, 
	   QUARTER(`date`) as QUARTER,
	   count(1) DAYS,
	   sum(종가) as "원/달러 합산",
	   SUM(last_price) as "금_가격 합산",
	   ROUND(sum(종가)/count(1)) as 원달러평균가액,
	   ROUND(sum(last_price)/count(1)) as 금_평균가액
from new_schema.dataset d inner join new_schema.data2 d2 on d.`date` = d2.일자
group by 1, 2

# 월별 평균가액
SELECT YEAR(`date`) YEAR,
	   MONTH(`date`) MONTH,
	   count(1) DAYS,
	   sum(종가) as "원/달러 합산", 
	   SUM(last_price) as "금_가격 합산", 
   	   ROUND(sum(종가)/count(1)) as 원달러평균가액,
	   ROUND(sum(last_price)/count(1)) as 금_평균가액
from new_schema.dataset d inner join new_schema.data2 d2 on d.`date` = d2.일자
group by 1, 2
  • 분기별
  • 월별

시각화

  • SQL로 전처리한 분기별 데이터를 Colab으로 불러와 시각화 구현
    #라이브러리 호출
    import pandas as pd
    import matplotlib.pyplot as plt
    
    #csv파일 불러오기
    data = pd.read_csv('파일경로')
    
    #필요 컬럼만 새로 데이터셋 만들기
    #연도와 분기를 한 컬럼으로 합치기
    dollar_set = data[['YEAR', 'QUARTER', '원달러평균가액']]
    dollar_set['연_분기'] = dollar_set['YEAR'].map(str)+"_"+dollar_set['QUARTER'].map(str)
    gold_set = data[['YEAR', 'QUARTER', '금_평균가액']]
    gold_set['연_분기'] = gold_set['YEAR'].map(str)+"_"+gold_set['QUARTER'].map(str)
    
    #이중축 plot 차트
    ```python
    fig, ax1 = plt.subplots() # subplots 함수로 이중축 생성
    plot1 = ax1.plot(gold_set['연_분기'], gold_set['금_평균가액'], color = 'y', marker ='o', markersize=4, markerfacecolor='grey')
    ax1.set_xlabel('연도별 분기')
    ax1.set_ylabel('금 시세')
    plt.xticks(rotation=90)
    
    ax2 = ax1.twinx()        # ax1과 ax2 연결
    plot2 = ax2.plot(dollar_set['연_분기'], dollar_set['원달러평균가액'], color ='r', marker ='o', markersize=4, markerfacecolor='grey')
    ax2.set_ylabel('원달러 환율')
    
    #두 개의 plot을 묶어서 라벨을 직접 표시하는 직관적인 방법
    plot = plot1 + plot2    # plot차트를 위에서 각각 변수 지정하여 plot으로 묶기
    #plot을 핸들로 지정, [라벨 지정:plot변수의 순서대로], loc로 'upper left' 지정
    ax1.legend(plot, ['금시세','원달러 환율'], loc = 2)
    
    plt.title('분기별 금, 원달러 가격')
    plt.show()

plot 차트 이미지

범례 개별 설정 ver.

fig, ax1 = plt.subplots()
line1 = ax1.plot(gold_set['연_분기'], gold_set['금_평균가액'], label='금 시세',color = 'y', marker ='o', markersize=4, markerfacecolor='grey')
ax1.set_xlabel('연도별 분기')
ax1.set_ylabel('금 시세')
plt.xticks(rotation=90)

ax2 = ax1.twinx()
line2 = ax2.plot(dollar_set['연_분기'], dollar_set['원달러평균가액'],label='원달러 환율',color ='r', marker ='o', markersize=4, markerfacecolor='grey')
ax2.set_ylabel('원달러 환율')

# 개별 라벨로 설정해두었을 경우
ax2.legend(loc='upper left', fontsize=10, bbox_to_anchor=(0.2, 1))
ax1.legend(loc='upper left', fontsize=10, bbox_to_anchor=(0, 1))

plt.title('분기별 금, 원달러 가격')
plt.show()

결론 도출

  • 전반적으로 금, 원달러는 가치가 하락하는 추세를 보이고 있다.
  • 22년도 하반기(2022_3~4)에 원달러 환율은 상승하는 반면 금 시세는 하락하는데 다른 이유가 있을 것이다.
  • 안전자산인 금과 달러의 변화는 대체로 동반 상승하며, 둘의 격차가 보이는 지점에서 경제의 불안정성이 존재하는지 상세한 원인을 찾아볼 필요가 있다.

발표 자료(Notion 기록)

profile
Data analyst를 향해 도전하는 이야기

0개의 댓글