
국토부 분양권 실거래가 데이터를 불러오는 파이썬 코드
국토부 분양권 실거래가 데이터를 불러오는 파이썬 코드
부동산 시장을 분석할 때 가장 중요한 데이터 중 하나는 실거래가 정보입니다. 본 글에서는 국토부 API를 활용하여 특정 기간 동안의 분양권 실거래가 데이터를 불러오는 방법을 소개합니다.
1. 국토부 API란?
국토교통부에서 제공하는 실거래가 정보 공개 API를 활용하면 원하는 지역과 기간을 설정하여 분양권 실거래가 데이터를 불러올 수 있습니다. 이 데이터는 실시간으로 갱신되며, 부동산 시장 분석에 필수적인 자료입니다.
2. 파이썬 코드 개요
이 파이썬 코드에서는 다음과 같은 기능을 수행합니다:
✅ 사용자가 원하는 기간(년/월)을 입력하면 해당 기간 동안의 데이터를 가져옴
✅ 국토부 API를 호출하여 데이터 수집
✅ 데이터를 정리 및 가공하여 엑셀 파일로 저장
✅ 엑셀 파일을 자동으로 서식 적용 후 저장
3. 파이썬 코드 상세 설명
3.1 필요한 라이브러리 설치
from urllib.request import Request, urlopen
from urllib.parse import urlencode, quote_plus
from datetime import datetime
from dateutil.relativedelta import relativedelta
import openpyxl
import os
import json
import xmltodict
import pandas as pd
from openpyxl.styles import Border, Side, Font, Alignment
위 코드에서는 데이터 요청, 날짜 처리, 엑셀 저장 및 스타일 적용을 위한 라이브러리를 사용합니다.
3.2 국토부 API 호출 함수
def molit_public_api(key, rcode, dealdate):
try:
base = "http://apis.data.go.kr/1613000/RTMSDataSvcSilvTrade/getRTMSDataSvcSilvTrade?"
parameters = "serviceKey=%s&" % (key) + urlencode({
quote_plus('LAWD_CD'): rcode,
quote_plus('DEAL_YMD'): str(dealdate),
quote_plus('numOfRows'): str(9999)}, encoding='UTF-8')
url = base + parameters
request = Request(url)
response = urlopen(request)
rescode = response.getcode()
if rescode == 200:
response_body = response.read().decode('utf-8')
else:
print('Error code:', rescode)
return None
jsonData = json.loads(json.dumps(xmltodict.parse(response_body)))
if jsonData['response']['body']['items'] is not None:
df = pd.DataFrame(jsonData['response']['body']['items']['item'])
return df
else:
return None
except Exception as e:
print('Exception occurred:', str(e))
return None
👉 이 함수는 API를 호출하여 해당 지역의 분양권 실거래 데이터를 가져오는 역할을 합니다.
3.3 사용자 입력 및 데이터 수집
start_year = input("시작 연도를 입력하세요 (예: 2024): ")
start_month = input("시작 월을 입력하세요 (예: 02): ")
end_year = input("종료 연도를 입력하세요 (예: 2024): ")
end_month = input("종료 월을 입력하세요 (예: 10): ")
사용자로부터 데이터를 조회할 기간(년/월)을 입력받습니다.
def get_yearmonth_list(start_year, start_month, end_year, end_month):
init_yearmonth = datetime.strptime(f"{start_year}{start_month}", "%Y%m").date()
end_yearmonth = datetime.strptime(f"{end_year}{end_month}", "%Y%m").date()
year_months = []
while init_yearmonth <= end_yearmonth:
year_months.append(init_yearmonth)
init_yearmonth += relativedelta(months=1)
return year_months
위 함수는 입력한 기간의 모든 연월 목록을 생성하여 데이터 요청 시 활용합니다.
3.4 데이터 수집 및 엑셀 저장
final_df = pd.DataFrame()
for year_month in year_months:
try:
yearmonth = year_month.strftime("%Y%m")
df_molit_api = molit_public_api(molit_serviceKey, rcode='지역코드입력', dealdate=yearmonth)
if df_molit_api is not None:
selected_columns = ['umdNm', 'aptNm', 'floor', 'excluUseAr', 'dealYear', 'dealMonth', 'dealDay', 'dealAmount', 'dealingGbn']
df_selected = df_molit_api[selected_columns]
final_df = pd.concat([final_df, df_selected], ignore_index=True)
print(f"{yearmonth} 데이터가 수집되었습니다.")
else:
print(f"{yearmonth}: 조회 가능한 데이터가 없습니다.")
except Exception as e:
print(f"에러 발생: {str(e)}")
👉 API를 호출하여 수집한 데이터를 정리하고, 원하는 컬럼만 선택하여 최종 데이터프레임에 추가합니다.
final_df.to_excel(final_filename, index=False, engine='openpyxl')
wb = openpyxl.load_workbook(final_filename)
ws = wb.active
thin = Side(style='thin')
border = Border(left=thin, right=thin, top=thin, bottom=thin)
font = Font(name='맑은 고딕', size=11)
alignment = Alignment(horizontal='center')
for row in ws.iter_rows(min_row=1, max_row=ws.max_row):
for cell in row:
cell.border = border
cell.font = font
cell.alignment = alignment
wb.save(final_filename)
👉 엑셀 파일을 저장할 때 가독성을 높이기 위해 서식을 적용합니다.
4. 결론
이 코드를 실행하면 원하는 기간 동안의 분양권 실거래가 데이터를 자동으로 수집하고, 정리하여 엑셀 파일로 저장할 수 있습니다. 📊
✅ 국토부 API를 활용한 부동산 데이터 수집을 자동화할 수 있으며, 추가적인 분석 및 가공도 가능합니다.
✅ 이 데이터를 활용하여 부동산 트렌드 분석, 투자 전략 수립, 가격 변동성 파악 등이 가능합니다.
👉 앞으로 국토부 API를 활용한 심화 데이터 분석 방법도 다뤄볼 예정이니, 관심 있으시면 댓글과 공유 부탁드립니다! 😊