원달러 환율 그래프 30년: 대한민국 경제의 변동성을 한눈에 보다!
원달러 환율은 한국 경제와 글로벌 경제의 상호작용을 잘 보여주는 중요한 지표입니다. 원달러 환율 그래프 30년의 변화를 살펴보면, 특정 시기에 극적인 변동이 있었음을 알 수 있습니다.
이번 포스트에서는 Python과 Yahoo Finance API를 활용해 원달러 환율 그래프 30년 데이터를 가져오고, 주요 변동 시기를 그래프로 표시해보겠습니다. 이를 통해 경제적 충격의 영향을 시각적으로 이해할 수 있습니다.
1. 데이터를 수집하기 위한 준비
Python에서 Yahoo Finance 데이터를 가져오기 위해 yfinance
라이브러리를 활용합니다. 이 라이브러리는 무료로 과거 데이터를 제공하며, 간단한 설정으로 시작할 수 있습니다. 추가적으로 pandas-datareader
나 FinanceDataReader
같은 다른 라이브러리도 활용할 수 있습니다.
pip install yfinance matplotlib
설치 후, 아래 코드를 사용하여 1994년부터 2024년까지의 환율 데이터를 가져옵니다.(목표가 원달러 환율 그래프 30년치를 가져와서 시각화 하는 것인데 아쉽게도 야후 파이낸스에는 2004년 정도 이전 데이터가 없는거 같습니다.)
2. 환율 데이터 수집 및 시각화(전체 코드)
import yfinance as yf
import matplotlib.pyplot as plt
from datetime import datetime
# Define currency pair and date range
currency_pair = "USDKRW=X"
start_date = "1994-01-01"
end_date = "2024-12-31"
# Download data from Yahoo Finance
data = yf.download(currency_pair, start=start_date, end=end_date)
# Plot exchange rate data
plt.figure(figsize=(14, 7))
plt.plot(data.index, data['Close'], label="KRW/USD Exchange Rate", color="steelblue")
# Highlight major economic events
events = {
"1997-12-01": "IMF Crisis",
"2008-09-15": "Global Financial Crisis",
"2020-03-01": "COVID-19 Pandemic",
"2022-02-24": "Russia-Ukraine War"
}
for date, label in events.items():
plt.axvline(datetime.strptime(date, "%Y-%m-%d"), color="red", linestyle="--", alpha=0.7)
plt.text(datetime.strptime(date, "%Y-%m-%d"), plt.ylim()[1] * 0.9, label, color="red")
# Add moving average line
data['MA50'] = data['Close'].rolling(window=50).mean()
plt.plot(data.index, data['MA50'], label="50-Day Moving Average", color="orange")
# Highlight max and min exchange rates
max_rate = data['Close'].max()
min_rate = data['Close'].min()
max_date = data['Close'].idxmax()
min_date = data['Close'].idxmin()
plt.scatter(max_date, max_rate.item(), color='green', label=f'Max Rate: {max_rate.item():.2f}', zorder=5)
plt.scatter(min_date, min_rate.item(), color='purple', label=f'Min Rate: {min_rate.item():.2f}', zorder=5)
# Customize plot
plt.title("KRW/USD Exchange Rate Over 30 Years", fontsize=16)
plt.xlabel("Year", fontsize=12)
plt.ylabel("Exchange Rate (KRW/USD)", fontsize=12)
plt.legend()
plt.grid(True)
plt.show()
3. 주요 변동 시기의 분석
IMF 외환위기 (1997-1998):
- 1997년 말, IMF 외환위기로 인해 환율이 급등했습니다. 당시 원화 가치가 급락하며 환율이 2,000원을 넘기도 했습니다.
글로벌 금융위기 (2008):
- 2008년 리먼 브라더스 파산 이후 글로벌 금융위기가 시작되며, 원화 가치가 다시 하락했습니다.
코로나 팬데믹 (2020):
- 2020년 초, 코로나 팬데믹으로 인해 전 세계 금융 시장이 불안정해졌고, 원달러 환율 역시 급격히 변동했습니다.
러시아-우크라이나 전쟁 (2022):
- 2022년 러시아-우크라이나 전쟁 발발로 글로벌 경제에 불확실성이 커졌고, 원화 가치가 다시 약세를 보였습니다.
4. 원달러 환율 그래프 30년 시각화 결과
위 코드를 실행하면 이 포스트 초반의 그래프가 생성됩니다. 그래프에는 2004년부터 2024년까지의 원달러 환율 데이터가 표시됩니다. 주요 사건 발생 시기를 그래프에 빨간색 선으로 표시하여 변동의 이유를 시각적으로 이해할 수 있습니다. 또한 최대 및 최소 환율이 각각 녹색과 보라색 점으로 표시되어 해당 수치를 확인할 수 있습니다.
5. 정리하기
원달러 환율 그래프 30년 데이터는 한국 경제의 과거를 이해하고, 미래를 예측하는 데 중요한 자료를 제공합니다. 환율 변동의 주요 원인으로는 외환위기, 금융위기, 팬데믹, 지정학적 사건 등이 있었습니다.
Python과 Yahoo Finance API를 활용하면 과거 데이터를 손쉽게 수집하고 분석할 수 있습니다. 이 코드를 활용해 더 긴 기간의 데이터나 다른 통화 데이터를 분석해보는 것도 추천합니다.
#코드 상세해설: 환율 데이터 수집 및 시각화
import yfinance as yf
import matplotlib.pyplot as plt
from datetime import datetime
yfinance
라이브러리를yf
로 임포트하여 Yahoo Finance 데이터를 가져옵니다.matplotlib.pyplot
을plt
로 임포트하여 데이터 시각화를 위한 그래프를 그립니다.datetime
모듈을 임포트하여 날짜 형식을 다룹니다.
currency_pair = "USDKRW=X"
start_date = "1994-01-01"
end_date = "2024-12-31"
currency_pair
변수에 원-달러 환율의 심볼을 저장합니다.start_date
와end_date
에 데이터 수집 기간의 시작과 끝 날짜를 설정합니다.
data = yf.download(currency_pair, start=start_date, end=end_date)
yfinance
의download
함수를 사용하여 설정한 기간 동안의 환율 데이터를 다운로드합니다.
plt.figure(figsize=(14, 7))
plt.plot(data.index, data['Close'], label="KRW/USD Exchange Rate", color="steelblue")
- 새로운 그래프를 생성하고 크기를 설정합니다.
- 환율 데이터의 날짜(
index
)와 종가(Close
)를 이용해 라인 그래프를 그립니다.
events = {
"1997-12-01": "IMF Crisis",
"2008-09-15": "Global Financial Crisis",
"2020-03-01": "COVID-19 Pandemic",
"2022-02-24": "Russia-Ukraine War"
}
- 주요 경제적 사건과 그 날짜를 딕셔너리로 정의합니다.
for date, label in events.items():
plt.axvline(datetime.strptime(date, "%Y-%m-%d"), color="red", linestyle="--", alpha=0.7)
plt.text(datetime.strptime(date, "%Y-%m-%d"), plt.ylim()[1] * 0.9, label, color="red")
- 각 사건의 날짜에 수직선을 그려 그래프에 표시합니다.
- 해당 위치에 사건명을 텍스트로 추가합니다.
data['MA50'] = data['Close'].rolling(window=50).mean()
plt.plot(data.index, data['MA50'], label="50-Day Moving Average", color="orange")
- 50일 이동평균선을 계산하여 데이터에 추가합니다.
- 이동평균선을 그래프에 추가하여 추세를 시각화합니다.
max_rate = data['Close'].max()
min_rate = data['Close'].min()
max_date = data['Close'].idxmax()
min_date = data['Close'].idxmin()
plt.scatter(max_date, max_rate.item(), color='green', label=f'Max Rate: {max_rate.item():.2f}', zorder=5)
plt.scatter(min_date, min_rate.item(), color='purple', label=f'Min Rate: {min_rate.item():.2f}', zorder=5)
- 최대 및 최소 환율 값을 계산하고 해당 날짜를 찾습니다.
- 최대값은 녹색 점으로 표시하고 최소값은 보라색 점으로 표시하여 강조합니다.
plt.title("KRW/USD Exchange Rate Over 30 Years", fontsize=16)
plt.xlabel("Year", fontsize=12)
plt.ylabel("Exchange Rate (KRW/USD)", fontsize=12)
plt.legend()
plt.grid(True)
plt.show()
- 그래프 제목과 축 레이블을 설정합니다.
- 범례를 추가하고 그리드를 활성화하여 가독성을 높입니다.
- 그래프를 화면에 표시합니다.