아파트 시계열 분석 4 - 아파트 전월세 자료
포스트
취소

아파트 시계열 분석 4 - 아파트 전월세 자료

1. 수집할 데이터

공공 데이터포털 (data.go.kr) 소개

공공데이터포털은 공공기관이 생성 또는 취득하여 관리하고 있는 공공데이터를 한 곳에서 제공하는 통합 창구입니다. 포털에서는 국민이 쉽고편리하게 공공데이터를 이용할 수 있도록 파일데이터, 오픈API, 시각화 등 다양한 방식으로 제공하고 있으며, 누구라도 쉽고 편리한 검색을통해 원하는 공공데이터를 빠르고 정확하게 찾을 수 있습니다.

아파트매매 실거래 상세 자료

image

위 주소에 들어가서 로그인 후 아파트 실거래 상세자료 활용신청을 진행한다.
약 10분 후 부터 api 호출할 수 있다.

  • 요청변수(Request Parameter)
항목명(국문)항목명(영문)항목크기항목구분샘플데이터항목설명
서비스키ServiceKey20필수-공공데이터포털에서 받은 인증키
지역코드LAWD_CD5필수11110지역코드
계약월DEAL_YMD6필수201512계약월
  • 출력결과(Response Element)

image

2. 데이터 수집

요청 방법 : Rest API

매매 내역을 API 방식으로 제공하고 있다. google 홈페이지에 접속하고 싶을 때 브라우저에 https://google.com 를 치면 브라우저에 화면이 떠지는 것처럼 받고싶은 데이터를 지정된 양식에 맞춰서 요청하면 데이터가 받아지는 방식이다.

http://openapi.molit.go.kr/OpenAPI_ToolInstallPackage/service/rest/RTMSOBJSvc/getRTMSDataSvcAptTradeDev?serviceKey={개인서비스키}&LAWD_CD={지역코드}&DEAL_YMD={년월}&pageNo=1&numOfRows=1000

위 URL에서 3가지 조건을 바꿔가며 검색할 수 있다.

  • {개인서비스키} : 공공데이터포털에 활용신청하면 받을 수 있음.
  • {지역코드} : https://www.code.go.kr/stdcode/regCodeL.do 에서 확인할 수 있다. 시코드 2자리와 구코드 3자리를 합쳐서 5자리 코드로 입력하면 된다.
    • 서울특별시 종로구 청운동 : 1111010100
    • 서울특별시 : 11
    • 종로구 : 110
    • 청운동 : 10100
  • {년월} : 매매 월 - 201111 (YYYYMM)

이렇게 완성된 url을 브라우저 url 입력하는 곳에 넣어서 확인해볼 수 있다.

image

python으로 10, 11월만 빠르게 수집

1
2
3
4
5
6
import time
import requests
import xml.etree.ElementTree as ET
import pandas as pd

from tqdm import tqdm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
def get_items(get):
    root = ET.fromstring(get.content)
    item_list = []
    for child in root.find('body').find('items'):
        elements = child.findall('*')
        data = {}
        for element in elements:
            tag = element.tag.strip()
            text = element.text.strip()
            data[tag] = text
        item_list.append(data)  
    return item_list

serviceKey = "################################공유하면안됨#################################"

url = "http://openapi.molit.go.kr:8081/OpenAPI_ToolInstallPackage/service/rest/RTMSOBJSvc/getRTMSDataSvcAptRent?serviceKey={}&LAWD_CD={}&DEAL_YMD={}"

locCode = ["11110", "11140", "11170", "11200", "11215", "11230", "11260", "11290", "11305", "11320", "11350", "11380", "11410", "11440", "11470", "11500", "11530", "11545", "11560", "11590", "11620", "11650", "11680", "11710", "11740"]

locCode_nm = ["종로구", "중구", "용산구", "성동구", "광진구", "동대문구", "중랑구", "성북구", "강북구", "도봉구", "노원구", "은평구", "서대문구", "마포구", "양천구", "강서구", "구로구", "금천구", "영등포구", "동작구", "관악구", "서초구", "강남구", "송파구", "강동구"]

yyyymm = ['202101', '202102', '202103', '202104', '202105', '202106', '202107', '202108', '202109', '202110', '202111', '202112']

for ym in tqdm(yyyymm):
    
    DataFrame = pd.DataFrame([])

    for code, name in zip(locCode, locCode_nm):

        time.sleep(0.5)
        req = url.format(serviceKey, code, ym)
        get = requests.get(req)
        items_list = get_items(get)
        items = pd.DataFrame(items_list) 
        items["지역구"] = name
        DataFrame = pd.concat([DataFrame, items])
        
    DataFrame.to_csv("../data/seoul_apt_rent_{}_raw.csv".format(ym), index=None)

    DataFrame["보증금"] = DataFrame["보증금액"].apply(lambda x: int(x.replace(",", "")))
    DataFrame["월세금"] = DataFrame["월세금액"].apply(lambda x: int(x.replace(",", "")))
    
    DataFrame["법정동주소"] = DataFrame[["지역구", "법정동", "지번"]].apply(lambda x: "{} {} {}".format(x[0], x[1], x[2]), 1)
    
    tiny = DataFrame[['법정동주소', '아파트', '전용면적', '층', '보증금', '보증금', '월세금', '년', '월', '일']]
    
    tiny.to_csv("../data/seoul_apt_rent_{}.csv".format(ym), index=None)

끝.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

Embed iframe in jekyll

아파트 시계열 분석 5 - 건축인허가정보 서비스