본문 바로가기
문송충의 코딩하기/파이썬 데이터 분석

2021년 5월 ~ 11월 서울 강서구 오피스텔 매매가 데이터 가져오기(공공데이터) with Python

by 동장군님 2021. 12. 27.
728x90
반응형

지난 6개월(21년 5월 ~ 11월) 서울 강서구 내 오피스텔 매매가 데이터를 가져오도록 하겠다. 데이터는 공공데이터에서 파이썬으로 가져오도록 하겠다.

 

데이터 설명은 아래 링크에서 확인할 수 있다.

https://www.data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15058452 

 

국토교통부_오피스텔 매매 신고 조회 서비스

부동산 거래신고에 관한 법률에 따라 신고된 주택의 실거래 자료를 제공

www.data.go.kr

 

from urllib.request import urlopen
from urllib.parse import urlencode, unquote, quote_plus
import urllib
import requests
import pandas as pd
import xmltodict
import json
from datetime import datetime
import requests

api='~~'

data=[]
for v in range(202105, 202112):

    url = f'http://openapi.molit.go.kr/OpenAPI_ToolInstallPackage/service/rest/RTMSOBJSvc/getRTMSDataSvcOffiTrade?serviceKey={api}'
    queryParams = '&' + urlencode({quote_plus('pageNo') : 1, quote_plus('numOfRows') : '1000', 
                                    quote_plus('LAWD_CD') : '11500', quote_plus('DEAL_YMD') : v})

    url2 = url + queryParams
    response = urlopen(url2) 
    results = response.read().decode("utf-8")
    results_to_json = xmltodict.parse(results)
    rows = json.loads(json.dumps(results_to_json))
    temp=rows['response']['body']['items']['item']
    data.extend(temp)
    
df=pd.DataFrame(data)

추출하면 아래와 같은 데이터셋을 확인할 수 있다. 

 

다음으로 지난 6개월 동안 오피스텔 평당 매매가격을 계산해보도록 하겠다.

import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
%config InlineBackend.figure_format='retina'

df['전용면적']=df['전용면적'].astype(float)
df['평수']=df['전용면적']/3.3
df['거래금액']=df['거래금액'].str.replace(',','')
df['거래금액']=df['거래금액'].astype(int)
df['평당 매매가격']=df['거래금액']/df['평수']

df2=pd.DataFrame(df.groupby(['월']).mean()['평당 매매가격'])
df2=df2.reset_index()

months=[]
for i in df2['월']:
    if len(str(i))==1:
        months.append('0'+str(i))
    else:
        months.append(str(i))
        
df2['거래월']=months
df2=df2.sort_values(by='거래월',ascending=True)
df2['평당 매매가격']=round(df2['평당 매매가격'],2)

plt.rcParams["font.family"] = 'Malgun Gothic'
plt.figure(figsize=(20,11))
plt.bar(df2['거래월'],df2['평당 매매가격'])

for x,y in enumerate(list(df2['평당 매매가격'])):
    plt.text(x, y, y, fontsize=13, color='r', 
        horizontalalignment='center', verticalalignment='bottom')
plt.title('2021년 5월 ~ 11월 서울 강서구 오피스텔 평당 매매가격')

 

728x90
반응형

댓글