KEEP GOING

[PANDAS] 한국은행 기준 금리 데이터 분석 본문

python/pandas

[PANDAS] 한국은행 기준 금리 데이터 분석

jmHan 2022. 5. 6. 11:20
반응형

 

https://ecos.bok.or.kr/

 

한국은행경제통계시스템

 

ecos.bok.or.kr

한국은행경제통계시스템에서 가져온 2000년도 1월부터 2022년 4월까지의 기준 금리 csv 파일입니다.

 

interest_rate.csv
0.00MB

 

아래와 같은 순서로 진입하면 기준 금리 데이터와 그래프를 볼 수 있습니다.

 

통계검색 → 복수통계검색 → 한국은행 주요계정 및 기준금리 → 한국은행 기준금리 및 여수신금리 → 한국은행 기준금리

 

여기서 csv 파일을 저장하여 pandas 실습을 진행하려고 합니다.

저장된 csv 파일을 그대로 사용하지 않고 파일 안에 연도, 금리 숫자 데이터를 제외한 부가적인 내용들은 삭제해주었습니다.

 

[csv 파일 불러오기]

import pandas as pd

df = pd.read_csv('C:/Users/dkwlw/Downloads/interest_rate.csv', names=['date', 'year'])
print(df)

확인해보면 아래와 같이 파일이 저장된 것을 확인해 볼 수 있습니다. 날짜 date 컬럼의 경우 첫 행에 문자열 형태로 '1-00'과 같은 값이 주어졌는데 이는 2000년도 1월을 의미합니다.

 

df.info()를 사용하여 각 컬럼의 데이터 타입을 확인해본 결과, date 컬럼의 데이터 타입은 문자열이었습니다. 따라서 문자열을 datetime 형식으로 바꾸기 위해 먼저 문자열들을 형변환 해주었습니다.

 

[데이터 형 변환]

for loc in df['date']:
    data = loc.split('-')
    data[1] = '20' + data[1]
    df['date'][idx] = '-'.join(data[::-1])
    idx += 1
df['date'] = pd.to_datetime(df['date'])
print(df.info())

다시 데이터 프레임의 info 함수를 돌려주면

다음과 같이 date 컬럼의 Dtype이 datetime으로 변경된 것을 확인해볼 수 있습니다. 

 

 

* 참고 SettingWithCopyWarning 

형 변환 작업시 위와 같이 SettingWithCopyWarning 이라는 경고가 발생합니다.

이러한 경고가 뜰지라도 실제 값이 변경되는 부분에는 아무런 영향을 미치지 않습니다. 더 깊게 이해하고 싶다면 해당 블로그를 참고하길 바랍니다.

https://blog.naver.com/PostView.nhn?blogId=wideeyed&logNo=221817400937 

 

[Pandas] SettingWithCopy Warning or Error 해결방법

Pandas(판다스, 팬더스)에서 원본 Dataframe의 일부를 복사하거나 인덱싱 후 값을 수정할 때 발생할 수 ...

blog.naver.com

그냥 단순히 경고를 끄고 싶은 경우 다음과 같이 설정해주면 됩니다. 

# SettingWithCopyWarning
pd.set_option('mode.chained_assignment', 'warn')
# 경고 무시
pd.set_option('mode.chained_assignment',  None)

 

[데이터 시각화]

import matplotlib.pylab as plt

df.plot(x='date', y='year', xlim=['2000-01-01', '2022-04-01'], ylim=(0, 10))
plt.title("Bank of Korea Interest Rate by Year")
plt.xlabel("month-year")
plt.ylabel("interest rate")
plt.show()

 

 

[최종 코드]

import pandas as pd
import matplotlib.pylab as plt
# csv 파일 업로드
df = pd.read_csv('C:/Users/dkwlw/Downloads/interest_rate.csv', names=['date', 'year'])

# SettingWithCopyWarning
pd.set_option('mode.chained_assignment', 'warn')
# 경고 무시
pd.set_option('mode.chained_assignment',  None)
idx = 0

# 데이터 형변환
for loc in df['date']:
    data = loc.split('-')
    data[1] = '20' + data[1]
    df['date'][idx] = '-'.join(data[::-1])
    idx += 1
df['date'] = pd.to_datetime(df['date'])

# 데이터 시각화
df.plot(x='date', y='year', xlim=['2000-01-01', '2022-04-01'], ylim=(0, 10))
plt.title("Bank of Korea Interest Rate by Year")
plt.xlabel("month-year")
plt.ylabel("interest rate")
plt.show()

 

[결과물]

반응형
Comments