아파트 시계열 분석 2 - 공동주택 단지 목록제공 서비스
포스트
취소

아파트 시계열 분석 2 - 공동주택 단지 목록제공 서비스

1. 수집할 데이터

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

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

공동주택 단지 목록제공 서비스

image

  • 주소 : https://www.data.go.kr/data/15057332/openapi.do
  • 설명 : (공동주택 단지정보)공동주택관리정보시스템에 가입한 단지의 목록을 제공
  • 방법 : 시군구코드를 이용해 단지 코드, 단지명을 조회할 수 있는 공동주택 단지 목록제공 서비스

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

  • 요청변수(Request Parameter)
항목명(국문)항목명(영문)항목크기항목구분샘플데이터항목설명
서비스키serviceKey100인증키(URL Encode)공공데이터포털에서 받은 인증키
시도코드sidoCode227시도코드
페이지번호pageNo1001페이지번호
목록 건수numOfRows10010목록 건수
  • 출력결과(Response Element)
항목명(국문)항목명(영문)항목크기항목구분샘플데이터항목설명
결과코드resultCode20000:성공
결과메시지resultMsg20NORMAL SERVICE결과메시지
단지코드kaptCode9A10027868단지코드
단지명kaptName50대구테크노폴리스 남해오네뜨1차 아파트단지명
시도as110대구광역시단지가 속한 시도
시군구as210달성군단지가 속한 시군구
읍면동as310현풍읍단지가 속한 읍면동
as410중리단지가 속한 리, 시도/시군구에 따라 존재하지 않을 수 있음
법정동코드bjdCode102771026522법정동코드 10자리
열 갯수numOfRows310열 갯수
페이지 수pageNo31현재 페이지
전체 조회건수totalCount10929전체 조회건수

공동주택 이란 ?

「주택법」 제2조 [시행 2021. 10. 21.] [법률 제18317호, 2021. 7. 20., 일부개정]

  1. “주택”이란 세대(世帶)의 구성원이 장기간 독립된 주거생활을 할 수 있는 구조로 된 건축물의 전부 또는 일부 및 그 부속토지를 말하며, 단독주택과 공동주택으로 구분한다.
  2. “단독주택”이란 1세대가 하나의 건축물 안에서 독립된 주거생활을 할 수 있는 구조로 된 주택을 말하며, 그 종류와 범위는 대통령령으로 정한다.
  3. “공동주택”이란 건축물의 벽ㆍ복도ㆍ계단이나 그 밖의 설비 등의 전부 또는 일부를 공동으로 사용하는 각 세대가 하나의 건축물 안에서 각각 독립된 주거생활을 할 수 있는 구조로 된 주택을 말하며, 그 종류와 범위는 대통령령으로 정한다.

공동주택의 종류 ?

공동주택관리정보시스템 : http://www.k-apt.go.kr/

image

토지이용규제정보서비스 : 공동주택 용어사전

  1. 아파트: 주택으로 쓰이는 층수가 5개 층 이상인 주택
    • 층수를 산정할 때 1층 전부를 필로티 구조로 하여 주차장으로 사용하는 경우에는 필로티 부분을 층수에서 제외하고, 지하층을 주택의 층수에서 제외한다.
  2. 연립 주택: 주택으로 쓰이는 1개 동의 연면적(지하 주차장 면적 제외)이 660m2를 초과하고, 층수가 4개 층 이하인 주택
    • 층수를 산정할 때 1층 전부를 필로티 구조로 하여 주차장으로 사용하는 경우에는 필로티 부분을 층수에서 제외하고, 지하층을 주택의 층수에서 제외한다.
  3. 다세대 주택: 주택으로 쓰이는 1개 동의 연면적(지하 주차장 면적 제외)이 660m2 이하인 4개 층 이하인 주택
    • 층수를 산정할 때 1층의 전부 또는 일부를 필로티 구조로 하여 주차장으로 사용하고 나머지 부분을 주택 외의 용도로 쓰는 경우에는 해당 층을 주택의 층수에서 제외하며, 지하층을 주택의 층수에서 제외한다.
  4. 기숙사: 학교 또는 공장 등의 학생 또는 종업원 등을 위해 사용되는 것으로서 공동 취사 등을 할 수 있는 구조이되, 독립된 주거 형태를 갖추지 않은 것이다.
    • 층수를 산정할 때 지하층은 주택의 층수에서 제외한다.

의무관리대상 아파트 ?

「공동주택관리법」 제2조 제1항 제2호 [시행 2021. 8. 10.] [법률 제18385호, 2021. 8. 10., 일부개정]

  • 가. 300세대 이상의 공동주택
  • 나. 150세대 이상으로서 승강기가 설치된 공동주택
  • 다. 150세대 이상으로서 중앙집중식 난방방식(지역난방방식을 포함한다)의 공동주택
  • 라. 「건축법」 제11조에 따른 건축허가를 받아 주택 외의 시설과 주택을 동일 건축물로 건축한 건축물로서 주택이 150세대 이상인 건축물
  • 마. 가목부터 라목까지에 해당하지 아니하는 공동주택 중 입주자등이 대통령령으로 정하는 기준에 따라 동의하여 정하는 공동주택

2. 데이터 수집

API 제공 내역

항목예시
as1서울특별시
as2강동구
as3명일동
bjdCode1174010100
kaptCodeA13407204
kaptName명일신동아

AptListService2 주소가 아니라 AptListService1 인경우 (만약 오래전에 이미 활용신청을 한 경우) 공공데이터포털에서 재 검색 후 다시 활용신청을 하면 된다.

요청 방법 : Rest API

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

http://apis.data.go.kr/1613000/AptListService2/getSigunguAptList?ServiceKey={개인서비스키}&sigunguCode={시군구코드}&pageNo=1&numOfRows=1000

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

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

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

image

python으로 빠르게 수집

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
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
1
2
3
4
5
serviceKey = "################################공유하면안됨#################################"

url = "http://apis.data.go.kr/1613000/AptListService2/getSigunguAptList?ServiceKey={}&sigunguCode={}&pageNo=1&numOfRows=1000"

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"]
1
2
3
4
5
6
req = url.format(serviceKey, '11110')
get = requests.get(req)
items_list = get_items(get)
items = pd.DataFrame(items_list) 
items = items.rename(columns = rename_columns)
items.head()
시도시군구읍면동법정동코드단지코드단지명
서울특별시종로구사직동1111011500A11005401광화문풍림스페이스본 아파트
서울특별시종로구내수동1111011800A11007001경희궁의아침3단지
서울특별시종로구내수동1111011800A11087101경희궁의아침2단지
서울특별시종로구수송동1111012400A11014001로얄팰리스스위트
서울특별시종로구익선동1111013300A11034001현대뜨레비앙

25개 지역구 한번에 수집

1
2
3
4
5
6
7
8
9
10
11
DataFrame = pd.DataFrame([])

for code in locCode:

    time.sleep(0.1)
    req = url.format(serviceKey, code)
    get = requests.get(req)
    items_list = get_items(get)
    items = pd.DataFrame(items_list) 
    items = items.rename(columns = rename_columns)
    DataFrame = pd.concat([DataFrame, items])

살고(사고) 싶은 지역을 검색

1
2
3
DataFrame.loc[(
    (DataFrame.읍면동 == "상도동")
)]
시도시군구읍면동법정동코드단지코드단지명
서울특별시동작구상도동1159010200A15603401상도경향렉스빌
서울특별시동작구상도동1159010200A15603002브라운스톤상도
서울특별시동작구상도동1159010200A15603008힐스테이트상도프레스티지
서울특별시동작구상도동1159010200A15603003상도건영제2 관리사무소
서울특별시동작구상도동1159010200A15683601상도1동대림
서울특별시동작구상도동1159010200A15603004상도sh-ville
서울특별시동작구상도동1159010200A15603206상도더샵
서울특별시동작구상도동1159010200A15603502래미안상도2차
서울특별시동작구상도동1159010200A15603006래미안상도3차
서울특별시동작구상도동1159010200A15671801상도두산위브
서울특별시동작구상도동1159010200A15683901상도쌍용
서울특별시동작구상도동1159010200A15678101상도현대
서울특별시동작구상도동1159010200A15683402상도동중앙하이츠빌아파트
서울특별시동작구상도동1159010200A15603204상도래미안1차
서울특별시동작구상도동1159010200A15678103힐스테이트상도센트럴파크
서울특별시동작구상도동1159010200A15603001상도동원베네스트
서울특별시동작구상도동1159010200A15603203아이파크상도동
서울특별시동작구상도동1159010200A15603009상도더샵2차
서울특별시동작구상도동1159010200A15603007상도래미안1차제2
서울특별시동작구상도동1159010200A15678102상도삼호
서울특별시동작구상도동1159010200A10027472상도효성해링턴플레이스
서울특별시동작구상도동1159010200A10027633상도2차 두산위브트레지움 아파트
서울특별시동작구상도동1159010200A10027614상도 휴엔하임 도시형생횔주택
서울특별시동작구상도동1159010200A10025768이편한세상 상도 노빌리티
서울특별시동작구상도동1159010200A10027424상도파크자이 아파트
서울특별시동작구상도동1159010200A10024777상도동 롯데캐슬 비엔
서울특별시동작구상도동1159010200A10024365상도역롯데캐슬파크엘

지역구별 아파트 개수

1
DataFrame.groupby(["시도", "시군구"]).단지명.count().reset_index().sort_values("단지명", ascending = False)
시도시군구단지명
서울특별시노원구212
서울특별시강남구200
서울특별시강서구181
서울특별시서초구168
서울특별시영등포구163
서울특별시송파구147
서울특별시구로구146
서울특별시양천구129
서울특별시성북구129
서울특별시은평구126
서울특별시마포구125
서울특별시동작구117
서울특별시강동구115
서울특별시성동구112
서울특별시도봉구108
서울특별시중랑구102
서울특별시동대문구100
서울특별시서대문구81
서울특별시광진구76
서울특별시관악구74
서울특별시용산구73
서울특별시금천구46
서울특별시강북구43
서울특별시중구40
서울특별시종로구29

끝.

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

아파트 시계열 분석 1 - 아파트매매 실거래 상세 자료

아파트 시계열 분석 3 - 공동주택 기본/상세 정보제공 서비스