최근 부동산 시장이 거래량이 많이 줄어서 불안한 상황이기는 하다. 그럼에도 아직도 갭투자할 물건들이 남아있는지 알아보기 위해서 부동산 실거래가 데이터를 돌려서 2021년 1월 ~ 3월까지 3개월 최신 데이터를 기준으로 물건들을 추려보았다. 너무나 감사하게도 부동산 실거래가 데이터를 손쉽게 할 수 있는 모듈이 있었다.
우선 결과물을 먼저 첨부해두겠다.
우선 PublicDataReader 라는 모듈을 불러온다. 공공 API를 이용하려면 공공 데이터포털(www.data.go.kr/)에서 서비스 인증키를 받아서 아래 코드에 "서비스인증키"라는 부분에 넣어줘야 한다.
우선 PublicDataReader 라는 모듈을 불러온다. 서울시 각 구별 코드의 리스트를 만들어 준다.
import PublicDataReader as pdr
print(pdr.__version__)
import pandas as pd
# https://github.com/WooilJeong/PublicDataReader
# PublicDataReader 모듈 출처
# 공공 데이터 포털 Open API 서비스 인증키
serviceKey = "hFl9q%2FeZqtfS8oojngJJpqydHJGujznhkRmH4vzSm93xTdbNwzjxzFjMw3yNNe3fnEvHnubn37YsxT%2FLvntb%2FA%3D%3D"
molit = pdr.Transaction(serviceKey)
# 지역코드 검색기 (서울 구 분리하기, 서울특별시는 11000)
df_seoul = molit.CodeFinder("서울특별시")
df_seoul = df_seoul.drop_duplicates("법정구코드", keep="first")
df_seoul = df_seoul.drop([0])
df_seoul_list = df_seoul['법정구코드'].tolist()
코드가 길긴 하지만 별 내용은 아니다. 핵심은 PriceAnalysis라는 함수에 (구별코드, 갭투자금액, 데이터시작일자, 데이터종료일자)를 넣어주면 된다. 해당 금액들은 다 평균금액으로 계산하였다.
def PriceAnalysis(code, equity, start_date,end_date):
df_AptTradeDetail = molit.DataCollector(molit.AptTradeDetail, code,start_date,end_date)
df_AptTradeDetail['거래금액'] = pd.to_numeric(df_AptTradeDetail['거래금액'])
df_AptTradeDetail['전용면적'] = pd.to_numeric(df_AptTradeDetail['전용면적'])
df_AptTradeDetail['평당가'] = df_AptTradeDetail['거래금액']/df_AptTradeDetail['전용면적']*3.305785
df_AptTradeDetail_sort = df_AptTradeDetail.groupby(["아파트","전용면적"]).mean()
df_AptRent = molit.DataCollector(molit.AptRent, code, start_date, end_date)
df_AptRent['월세금액'] = pd.to_numeric(df_AptRent['월세금액'])
df_AptRent['보증금액'] = pd.to_numeric(df_AptRent['보증금액'])
df_AptRent['전용면적'] = pd.to_numeric(df_AptRent['전용면적'])
df_AptRentt = df_AptRent[df_AptRent['월세금액'] == 0]
df_AptRent_sort = df_AptRent.groupby(["아파트","전용면적"]).mean()
# 두가지 데이터 프레임을 merge
df_merge= pd.merge(df_AptTradeDetail_sort, df_AptRent_sort,left_index=True, right_index=True)
df_merge['갭투자금액']= df_merge['거래금액'] - df_merge['보증금액']
gap_equity = df_merge['갭투자금액'] < equity
df_merge_gap = df_merge[gap_equity]
return df_merge_gap
첫 번째 코드블럭에서 만든 서울시 구별 코드리스트를 for 문으로 돌리면서 액셀 파일에 시트별로 저장한다. 나는 2021년 1월부터 2021년 3월까지 데이터의 평균값을 추출하여 3억 이하의 갭투자가 가능한 아파트들의 리스트를 저장해보았다. 엑셀 파일명은 서울시갭투자분석.xlsx 로 저장했다.
# for문 돌려서 구 별로 엑셀 저장하는 함수
df_seoul = df_seoul.set_index("법정구코드")
writer = pd.ExcelWriter('df_result.xlsx', engine='xlsxwriter')
def PriceAnalysis_to_excel(equity,start_date,end_date):
for code in df_seoul_list:
df = PriceAnalysis(code,equity,start_date,end_date)
region_name = df_seoul.loc[code]['법정동명']
print(region_name)
df.to_excel(writer,sheet_name = region_name)
# 갭 투자금액 "3억"으로 매수가능한 아파트 엑셀 리스트 작성
# 실거래 데이터 추출 구간 : 202001-202003
writer = pd.ExcelWriter('서울시갭투자분석.xlsx', engine='xlsxwriter')
PriceAnalysis_to_excel(30000,"202101","202103")
writer.save()
상대적으로 가격이 저렴한 노도강(노원, 도봉, 강북), 금관구(금천, 관악, 구로) 쪽에는 소형평수 위주의 매물이 많이 보인다. 근데 지금 타이밍이 들어가는 게 맞는지 잘 모르겠다. 다들 고민하는 장세인듯 하다.
코드를 그대로 복붙하시면 되고 함수에다가 인풋 값만 새롭게 넣으면 원하는 데이터를 얻을 수 있다. 파이썬 공부의 길은 멀고 험난하지만 정말 재밌다. ^^
'데이터 분석 > 데이터 분석' 카테고리의 다른 글
[데이터 분석] 로지스틱 회귀분석 (Logistic Regression) (0) | 2021.07.19 |
---|---|
[데이터 분석] Ridge 회귀 분석 (0) | 2021.07.14 |
[데이터 분석] 선형회귀분석 Linear Regression (0) | 2021.07.13 |
[데이터 분석] ARIMA 모델을 활용한 CMA 잔고 분석 (0) | 2021.07.10 |
[데이터 분석] 2021년 5월 서울아파트 갭투자 리스트 (0) | 2021.06.09 |
댓글