🖥️ IT, 컴퓨터/🐍 Python

[Python] 부동산 지수 데이터 시각화하기 (feat. matplotlib)

김 홍시 2023. 1. 3.
반응형

1. 데이터 구득

 

 

https://kimhongsi.tistory.com/223

 

[부동산 데이터] 캐나타, 뉴질랜드, 홍콩, 영국 부동산 가격 지수 데이터

https://fredblog.stlouisfed.org/2017/12/houses-up-and-down/?utm_source=series_page&utm_medium=related_content&utm_term=related_resources&utm_campaign=fredblog Houses, up and down | FRED Blog An international comparison of house price movement We recently h

kimhongsi.tistory.com

에서 부동산 데이터를 내려받는다.

 

캐나다뉴질랜드홍콩영국.csv
0.01MB

혹은 본 데이터를 받는다.

2. Python 코드

1) 데이터 불러오기 및 전처리

# 캐나다 뉴질랜드 홍콩 영국 데이터 불러오기
df_fred = pd.read_csv('./data/캐나다뉴질랜드홍콩영국.csv', skiprows =13)
df_fred

# 2006년 이후 데이터만 불러오기
df_fred_ = df_fred.iloc[151:217]
df_fred_

# 결측치 제거
df_fred_.dropna(axis=0)

결측치는 없었습니다.

 

2) matplotlib를 활용한 시각화

import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
 
from matplotlib.ticker import MultipleLocator, IndexLocator, FuncFormatter
from matplotlib.dates import MonthLocator, DateFormatter

# 1. 기본 스타일 설정
plt.style.use('default')
plt.rcParams['figure.figsize'] = (15, 5)
plt.rcParams['font.size'] = 12

# 2. 데이터 준비
x = df_fred_.observation_date
y1 = df_fred_.캐나다
y2 = df_fred_.뉴질랜드
y3 = df_fred_.홍콩
y4 = df_fred_.영국

# 3. 그래프 그리기
fig, ax1 = plt.subplots()

# y1 : 캐나다 인덱스에 대한 값
ax1.plot(x, y1, '-s', color='red', markersize=3, linewidth=3, alpha=0.7, label='Canada')

# y2 : 뉴질랜드 인덱스에 대한 값
ax1.plot(x, y2, '-s', color='green', markersize=3, linewidth=3, alpha=0.7, label='New Zealand')

# y3 : 홍콩 인덱스에 대한 값
ax1.plot(x, y3, '-s', color='pink', markersize=3, linewidth=3, alpha=0.7, label='Hongkong')

# y4 : 영국 인덱스에 대한 값
ax1.plot(x, y4, '-s', color='navy', markersize=3, linewidth=3, alpha=0.7, label='UK')


ax1.set_xlabel('Year')
ax1.set_ylabel('price')
ax1.tick_params(axis='both', direction='in')

# set_zorder() 메서드는 z-축 방향의 순서를 지정
#  zorder가 낮을수록 먼저 그려지고, zorder가 높을수록 나중에 그려짐

ax1.set_zorder(ax2.get_zorder() + 10)
ax1.patch.set_visible(False)
ax1.legend(loc='upper left')

loc = matplotlib.ticker.LinearLocator(numticks = 12)
ax1.xaxis.set_major_locator(loc) ## 5개월마다 메인 눈금을 표시한다.

plt.show()

 

 

 

 

 

 

 

반응형

댓글