본문 바로가기

Machine Learning(머신러닝)

부동산 거래량 (~2019년 03월)

 

 

 

부동산 거래량

2018년도 부동산 거래량에 대해 알아본다.

  • 부동산 거래량은 부동산 실거래가 사이트에서 받을 수 있다.
  • 이 곳에서는 부동산 거래량과 평균 거래 금액의 추이를 광역시 별로 살펴보는 시간을 가져보도록 한다.
In [20]:
#-*- encoding: utf8 -*-
import os
import glob
import pandas as pd
import matplotlib.pyplot as plt
import unicodedata

import matplotlib
 

1. 준비

맥에서 자모 분리되는 문제로 폰트를 변경해 준다.

In [21]:
matplotlib.rc('font', family='AppleGothic')
 

2. Data prepation

다운 받은 데이터를 csv file format으로 변경해서 저장한다.

In [23]:
!ls trade/*.csv
 
trade/all_201801_아파트(매매)_실거래가_20190407180211.csv
trade/all_201802_아파트(매매)_실거래가_20190407180234.csv
trade/all_201803_아파트(매매)_실거래가_20190407180301.csv
trade/all_201804_아파트(매매)_실거래가_20190407180321.csv
trade/all_201805_아파트(매매)_실거래가_20190407180347.csv
trade/all_201806_아파트(매매)_실거래가_20190407180409.csv
trade/all_201807_아파트(매매)_실거래가_20190407180427 2.csv
trade/all_201808_아파트(매매)_실거래가_20190407180445.csv
trade/all_201809_아파트(매매)_실거래가_20190407180506.csv
trade/all_201810_아파트(매매)_실거래가_20190407180528.csv
trade/all_201811_아파트(매매)_실거래가_20190407180544.csv
trade/all_201812_아파트(매매)_실거래가_20190407180604.csv
trade/all_201901_아파트(매매)_실거래가_20190407175942.csv
trade/all_201902_아파트(매매)_실거래가_20190407175914.csv
trade/all_201903_아파트(매매)_실거래가_20190407173819.csv
In [67]:
def load_data_all(path):
    filenames = glob.glob(os.path.join(path, '*.csv'))
    ret = []

    for fname in filenames:
        dft = pd.read_csv(fname)
        dft.columns = dft.columns.str.normalize('NFC')
        dft['거래금액(만원)'] = dft['거래금액(만원)'].str.replace(',', '')# extract('(\d+),(\d+)')
        dft['거래금액(만원)'] =  pd.to_numeric(dft['거래금액(만원)'])
        dft['광역시'] = dft['시군구'].map(lambda x: x.split(' ')[0])
        ret.append(dft)
    return pd.concat( ret)
In [31]:
df = load_data_all('./trade/')
In [32]:
df.shape
Out[32]:
(576864, 13)
In [33]:
df.head()
Out[33]:
  시군구 번지 본번 부번 단지명 전용면적(㎡) 계약년월 계약일 거래금액(만원) 건축년도 도로명 광역시
0 강원도 강릉시 견소동 289 289 0 송정해변신도브래뉴아파트 59.9900 201811 11~20 16250 11 2005 경강로2539번길 강원도
1 강원도 강릉시 견소동 289 289 0 송정해변신도브래뉴아파트 59.9900 201811 21~30 17500 9 2005 경강로2539번길 강원도
2 강원도 강릉시 견소동 289 289 0 송정해변신도브래뉴아파트 59.9900 201811 21~30 17500 11 2005 경강로2539번길 강원도
3 강원도 강릉시 교동 1982 1982 0 강릉교동롯데캐슬1단지 135.1727 201811 1~10 35000 7 2009 화부산로99번길 강원도
4 강원도 강릉시 교동 1982 1982 0 강릉교동롯데캐슬1단지 163.9852 201811 21~30 41000 13 2009 화부산로99번길 강원도
 
  • 광역시 별로 분류할 수 있게 준비했다.
In [36]:
df['광역시'].unique()
Out[36]:
array(['강원도', '경기도', '경상남도', '경상북도', '광주광역시', '대구광역시', '대전광역시', '부산광역시',
       '서울특별시', '세종특별자치시', '울산광역시', '인천광역시', '전라남도', '전라북도', '제주특별자치도',
       '충청남도', '충청북도'], dtype=object)
 

3. 거래량을 Plot해 본다.

In [48]:
def cal_volume_all(df_all):
    data = {}

    for key, dft in df_all.groupby('광역시'): # .items():
        data[key] = dft.groupby('계약년월').count()['시군구']
    df_count = pd.DataFrame(data)
    df_count.index = pd.to_datetime(df_count.index, format='%Y%m')
    
    return df_count
In [49]:
dfvol = cal_volume_all(df)
In [54]:
dfvol2 = dfvol / dfvol.iloc[0]
In [59]:
figsize = (12, 8)
In [60]:
dfvol2.plot(figsize=figsize)
Out[60]:
<matplotlib.axes._subplots.AxesSubplot at 0x118db6fd0>
 
 

4. 평균 거래량을 plot 해 본다.

In [68]:
def cal_mean_all(df_all):
    data = {}

    for key, dft in df_all.groupby('광역시'): 
        data[key] = dft[['계약년월', '거래금액(만원)']].groupby('계약년월').mean()['거래금액(만원)']
    df_mean = pd.DataFrame(data)
    df_mean.index = pd.to_datetime(df_mean.index, format='%Y%m')
    
    return df_mean
In [64]:
df_mean = cal_mean_all(df)
In [65]:
df_mean2 = df_mean / df_mean.iloc[0]
In [66]:
df_mean2.plot(figsize=figsize)
Out[66]:
<matplotlib.axes._subplots.AxesSubplot at 0x116c77898>