-
최신 버전
- 2021.4.12 Version (2021-04):
- 2021.1.9 Version (2021-01):
- 소상공인 상가업소 정보 조회 기능 추가
- 서울시 지하철호선별 역별 승하차 인원 정보 조회 기능 추가
- 서울시 버스노선별 정류장별 시간대별 승하차 인원 정보 조회 기능 추가
- 0.1.2 Version (2020-12):
- 국토교통부 실거래가 정보 조회 기능 전면 수정
-
요구 사항
PublicDataReader는 공공데이터포털, 서울 열린데이터 광장 등 에서 제공하는 OpenAPI 서비스를 Python으로 쉽게 이용할 수 있도록 도와주는 데이터 수집 라이브러리입니다.
2021년 04월 현재 아래 Open API 서비스를 이용하여 데이터를 Pandas DataFrame 형태로 조회할 수 있습니다. 추후 수요가 높은 Open API 서비스에 대한 인터페이스도 지속적으로 업데이트할 예정입니다.
메서드 |
서비스 명 |
CondeFinder |
지역코드 조회 |
DataCollector |
서비스/기간 별 데이터 조회 |
AptTrade |
아파트매매 실거래자료 조회 |
AptTradeDetail |
아파트매매 실거래 상세 자료 조회 |
AptRent |
아파트 전월세 자료 조회 |
AptOwnership |
아파트 분양권전매 신고 자료 조회 |
OffiTrade |
오피스텔 매매 신고 조회 |
OffiRent |
오피스텔 전월세 신고 조회 |
RHTrade |
연립다세대 매매 실거래자료 조회 |
RHRent |
연립다세대 전월세 실거래자료 조회 |
DHTrade |
단독/다가구 매매 실거래 조회 |
DHRent |
단독/다가구 전월세 자료 조회 |
LandTrade |
토지 매매 신고 조회 |
BizTrade |
상업업무용 부동산 매매 신고 자료 조회 |
메서드 |
서비스 명 |
getBrBasisOulnInfo |
건축물대장 기본개요 조회 |
getBrRecapTitleInfo |
건축물대장 총괄표제부 조회 |
getBrTitleInfo |
건축물대장 표제부 조회 |
getBrFlrOulnInfo |
건축물대장 층별개요 조회 |
getBrAtchJibunInfo |
건축물대장 부속지번 조회 |
getBrExposPubuseAreaInfo |
건축물대장 전유공용면적 조회 |
getBrWclfInfo |
건축물대장 오수정화시설 조회 |
getBrHsprcInfo |
건축물대장 주택가격 조회 |
getBrExposInfo |
건축물대장 전유부 조회 |
getBrJijiguInfo |
건축물대장 지역지구구역 조회 |
메서드 |
서비스 명 |
storeZoneOne |
지정 상권조회 |
storeZoneInRadius |
반경내 상권조회 |
storeZoneInRectangle |
사각형내 상권조회 |
storeZoneInAdmi |
행정구역 단위 상권조회 |
storeOne |
단일 상가업소 조회 |
storeListInBuilding |
건물단위 상가업소 조회 |
storeListInPnu |
지번단위 상가업소 조회 |
storeListInDong |
행정동 단위 상가업소 조회 |
storeListInArea |
상권내 상가업소 조회 |
storeListInRadius |
반경내 상가업소 조회 |
storeListInRectangle |
사각형내 상가업소 조회 |
storeListInPolygon |
다각형내 상가업소 조회 |
storeListInUpjong |
업종별 상가업소 조회 |
storeListByDate |
수정일자기준 상가업소 조회 |
reqStoreModify |
상가업소정보 변경요청 |
largeUpjongList |
상권정보 업종 대분류 조회 |
middleUpjongList |
상권정보 업종 중분류 조회 |
smallUpjongList |
상권정보 업종 소분류 조회 |
메서드 |
서비스 명 |
CardSubwayStatsNew |
서울시 지하철호선별 역별 승하차 인원 정보 |
CardBusTimeNew |
서울시 버스노선별 정류장별 시간대별 승하차 인원 정보 |
pip install PublicDataReader
(예시1) 국토교통부 실거래가 정보 조회 서비스
# 1. 라이브러리 임포트 및 버전 확인하기
import PublicDataReader as pdr
print(pdr.__version__)
# 2. 공공 데이터 포털 Open API 서비스 인증키 입력하기
serviceKey = "공공 데이터 포털에서 발급받은 서비스 키"
# 3. 국토교통부(molit) 실거래가 정보 조회 Open API 인스턴스 생성하기
molit = pdr.Transaction(serviceKey)
# 4. 지역코드 검색하기
codeResult = molit.CodeFinder("분당구") # 지역코드 : 41135
codeResult.head()
# 5. 지역, 월 별 데이터 프레임 만들기
# Function(지역코드(5자리), 계약월(YYYYMM))
# (예시) '2020년 12월', '분당구'에 해당하는 자료를 Pandas DataFrame으로 반환
df_AptTrade = molit.AptTrade(41135, 202012) # 아파트매매 실거래자료 조회
df_AptTradeDetail = molit.AptTradeDetail(41135, 202012) # 아파트매매 실거래 상세 자료 조회
df_AptRent = molit.AptRent(41135, 202012) # 아파트 전월세 자료 조회
df_AptOwnership = molit.AptOwnership(41135, 202012) # 아파트 분양권전매 신고 자료 조회
df_OffiTrade = molit.OffiTrade(41135, 202012) # 오피스텔 매매 신고 조회
df_OffiRent = molit.OffiRent(41135, 202012) # 오피스텔 전월세 신고 조회
df_RHTrade = molit.RHTrade(41135, 202012) # 연립다세대 매매 실거래자료 조회
df_RHRent = molit.RHRent(41135, 202012) # 연립다세대 전월세 실거래자료 조회
df_DHTrade = molit.DHTrade(41135, 202012) # 단독/다가구 매매 실거래 조회
df_DHRent = molit.DHRent(41135, 202012) # 단독/다가구 전월세 자료 조회
df_LandTrade = molit.LandTrade(41135, 202012) # 토지 매매 신고 조회
df_BizTrade = molit.BizTrade(41135, 202012) # 상업업무용 부동산 매매 신고 자료 조회
# 6. 지역, 기간 별 데이터 프레임 만들기
# Function(API서비스 메서드, 지역코드(5자리), 시작월(YYYYMM), 종료월(YYYYMM))
df_AptTradeSum = molit.DataCollector(molit.AptTrade, 41135, 202001, 202012)
df_AptTradeDetailSum = molit.DataCollector(molit.AptTradeDetail, 41135, 202001, 202012)
df_AptRentSum = molit.DataCollector(molit.AptRent, 41135, 202001, 202012)
df_AptOwnershipSum = molit.DataCollector(molit.AptOwnership, 41135, 202001, 202012)
df_OffiTradeSum = molit.DataCollector(molit.OffiTrade, 41135, 202001, 202012)
df_OffiRentSum = molit.DataCollector(molit.OffiRent, 41135, 202001, 202012)
df_RHTradeSum = molit.DataCollector(molit.RHTrade, 41135, 202001, 202012)
df_RHRentSum = molit.DataCollector(molit.RHRent, 41135, 202001, 202012)
df_DHTradeSum = molit.DataCollector(molit.DHTrade, 41135, 202001, 202012)
df_DHRentSum = molit.DataCollector(molit.DHRent, 41135, 202001, 202012)
df_LandTradeSum = molit.DataCollector(molit.LandTrade, 41135, 202001, 202012)
df_BizTradeSum = molit.DataCollector(molit.BizTrade, 41135, 202001, 202012)
# 1. 라이브러리 임포트 및 버전 확인하기
import PublicDataReader as pdr
print(pdr.__version__)
# 2. 공공 데이터 포털 Open API 서비스 인증키 입력하기
serviceKey = "공공 데이터 포털에서 발급받은 서비스 키"
# 3. 국토교통부(molit) 건축물대장정보 서비스 Open API 인스턴스 생성하기
molit = pdr.Transaction(serviceKey)
# 4. 건축물대장정보 오퍼레이션별 데이터 조회
# Sample Parameter - (판교 현대백화점)
# 시군구코드(5)
sigunguCd = "41135"
# 읍면동코드(5)
bjdongCd = "11000"
# 본번
bun = "541".zfill(4)
# 부번
ji = "".zfill(4)
# (Operaion 01) 기본개요
df1 = molit.getBrBasisOulnInfo(
sigunguCd_=sigunguCd,
bjdongCd_=bjdongCd,
platGbCd_="0",
bun_=bun,
ji_=ji,
startDate_="",
endDate_=""
)
df1 = molit.ChangeCols(df1, "getBrBasisOulnInfo")
# (Operaion 02) 총괄표제부
df2 = molit.getBrRecapTitleInfo(
sigunguCd_=sigunguCd,
bjdongCd_=bjdongCd,
platGbCd_="0",
bun_=bun,
ji_=ji,
startDate_="",
endDate_=""
)
df2 = molit.ChangeCols(df2, "getBrRecapTitleInfo")
# (Operaion 03) 표제부
df3 = molit.getBrTitleInfo(
sigunguCd_=sigunguCd,
bjdongCd_=bjdongCd,
platGbCd_="0",
bun_=bun,
ji_=ji,
startDate_="",
endDate_=""
)
df3 = molit.ChangeCols(df3, "getBrTitleInfo")
# (Operaion 04) 층별개요
df4 = molit.getBrFlrOulnInfo(
sigunguCd_=sigunguCd,
bjdongCd_=bjdongCd,
platGbCd_="0",
bun_=bun,
ji_=ji,
startDate_="",
endDate_=""
)
df4 = molit.ChangeCols(df4, "getBrFlrOulnInfo")
# (Operaion 05) 부속지번
df5 = molit.getBrAtchJibunInfo(
sigunguCd_=sigunguCd,
bjdongCd_=bjdongCd,
platGbCd_="0",
bun_=bun,
ji_=ji,
startDate_="",
endDate_=""
)
df5 = molit.ChangeCols(df5, "getBrAtchJibunInfo")
# (Operaion 06) 전유공용면적
df6 = molit.getBrExposPubuseAreaInfo(
sigunguCd_ = sigunguCd,
bjdongCd_ = bjdongCd,
platGbCd_ = "0",
bun_ = bun,
ji_ = ji,
startDate_ = "",
endDate_ = "",
dongNm_ = "",
hoNm_ = ""
)
df6 = molit.ChangeCols(df6, "getBrExposPubuseAreaInfo")
# (Operaion 07) 오수정화시설
df7 = molit.getBrWclfInfo(
sigunguCd_=sigunguCd,
bjdongCd_=bjdongCd,
platGbCd_="0",
bun_=bun,
ji_=ji,
startDate_="",
endDate_=""
)
df7 = molit.ChangeCols(df7, "getBrWclfInfo")
# (Operaion 08) 주택가격
df8 = molit.getBrHsprcInfo(
sigunguCd_=sigunguCd,
bjdongCd_=bjdongCd,
platGbCd_="0",
bun_=bun,
ji_=ji,
startDate_="",
endDate_=""
)
df8 = molit.ChangeCols(df8, "getBrHsprcInfo")
# (Operaion 09) 전유부
df9 = molit.getBrExposInfo(
sigunguCd_=sigunguCd,
bjdongCd_=bjdongCd,
platGbCd_="0",
bun_=bun,
ji_=ji,
startDate_="",
endDate_=""
)
df9 = molit.ChangeCols(df9, "getBrExposInfo")
# (Operaion 10) 지역지구구역
df10 = molit.getBrJijiguInfo(
sigunguCd_=sigunguCd,
bjdongCd_=bjdongCd,
platGbCd_="0",
bun_=bun,
ji_=ji,
startDate_="",
endDate_=""
)
df10 = molit.ChangeCols(df10, "getBrJijiguInfo")
(예시3) 소상공인 상가업소 정보 조회 서비스
# 1. 라이브러리 임포트 및 버전 확인하기
import PublicDataReader as pdr
print(pdr.__version__)
# 2. 공공 데이터 포털 Open API 서비스 인증키 입력하기
serviceKey = "공공 데이터 포털에서 발급받은 서비스 키"
# 3. 소상공인 상가업소 정보 조회 Open API 인스턴스 생성하기
semas = pdr.Transaction(serviceKey)
# 4. 데이터프레임으로 자료 조회하기
## 4-1 지정 상권조회
## 입력: 상권번호
key = 1
df = semas.storeZoneOne(key=key)
## 4-2 반경내 상권조회
## 입력: 반경(m), 중심점 경도(WGS84 좌표계), 중심점 위도(WGS84 좌표계)
radius = 500
cx = 127.03641615737838
cy = 37.50059843782878
df = semas.storeZoneInRadius(radius=radius, cx=cx, cy=cy)
## 4-3 사각형내 상권조회
## 입력: 서쪽 경도, 남쪽 위도, 동쪽 경도, 북쪽 위도 (WGS84 좌표계)
minx = 127.0327683531071
miny = 37.495967935149146
maxx = 127.04268179746694
maxy = 37.502402894207286
df = semas.storeZoneInRectangle(minx=minx, miny=miny, maxx=maxx, maxy=maxy)
## 4-4 행정구역 단위 상권조회
## 입력: 구분ID, 행정구역코드
## 구분ID - 시도(ctprvnCd), 시군구(signguCd), 행정동(adongCd)
## 행정구역코드 - 시도(시도코드값), 시군구(시군구코드값), 행정동(행정동코드값)
divId = 'adongCd'
key = '1168058000'
df = semas.storeZoneInAdmi(divId=divId, key=key)
## 4-5 단일 상가업소 조회
## 입력: 상가업소번호
key = '19911027'
df = semas.storeOne(key=key)
## 4-6. 건물단위 상가업소 조회
## 입력: 건물관리번호, 상권업종대분류코드, 상권업종중분류코드, 상권업종소분류코드, 페이지당 건수(최대 1000), 페이지 번호
key = '1168011000104940000004966'
pageNo = '1'
df = semas.storeListInBuilding(key=key, pageNo=1)
## 4-7. 지번단위 상가업소 조회
## 입력: PNU코드, 상권업종대분류코드, 상권업종중분류코드, 상권업종소분류코드, 페이지 번호
key = '1168010600209380024'
pageNo = '1'
indsLclsCd = 'Q'
indsMclsCd = 'Q12'
indsSclsCd = 'Q12A01'
df = semas.storeListInPnu(key=key, indsLclsCd_=indsLclsCd, pageNo=1)
## 4-8. 행정동 단위 상가업소 조회
## 입력: 구분ID(시도:ctprvnCd, 시군구:signguCd, 행정동:adongCd), 행정구역코드, 상권업종대분류코드, 상권업종중분류코드, 상권업종소분류코드, 페이지 번호
divId = 'adongCd'
key = '1168064000'
indsLclsCd = 'Q'
pageNo = 1
df = semas.storeListInDong(divId = divId, key = key, indsLclsCd_=indsLclsCd, pageNo = pageNo)
## 4-9 상권내 상가업소 조회
## 입력: 상권번호, 상권업종 대분류코드, 상권업종 중분류코드, 상권업종 소분류코드, 페이지 번호
key = '1819'
pageNo = '1'
indsLclsCd = 'Q'
df = semas.storeListInArea(key=key, pageNo=pageNo, indsLclsCd_=indsLclsCd)
## 4-10. 반경내 상가업소 조회
## 입력: 반경, 중심점 경도, 중심점 위도, 상권업종 대분류코드, 상권업종 중분류코드, 상권업종 소분류코드, 페이지 번호
radius = '500'
cx = 127.03641615737838
cy = 37.50059843782878
indsLclsCd = 'Q'
pageNo = '1'
df = semas.storeListInRadius(radius=radius, cx=cx, cy=cy, indsLclsCd_=indsLclsCd, pageNo=pageNo)
## 4-11. 사각형내 상가업소 조회
## 입력: 서쪽 경도, 남쪽 위도, 동쪽 경도, 북쪽 위도, 상권업종 대분류코드, 상권업종 중분류코드, 상권업종 소분류코드, 페이지 번호
minx = 127.0327683531071
miny = 37.495967935149146
maxx = 127.04268179746694
maxy = 37.502402894207286
indsLclsCd = 'Q'
pageNo = 1
df = semas.storeListInRectangle(minx=minx, miny=miny, maxx=maxx, maxy=maxy, indsLclsCd_=indsLclsCd, pageNo=1)
## 4-12. 다각형내 상가업소 조회
## 입력: 다각형 좌표값, 상권업종 대분류코드, 상권업종 중분류코드, 상권업종 소분류코드, 페이지 번호
key = 'POLYGON((127.02355609555755 37.504264372557095, 127.02496157306963 37.50590702991155, 127.0270858825753 37.50486867039889, 127.02628121988377 37.503489842823114))'
pageNo = 1
indsLclsCd = 'Q'
df = semas.storeListInPolygon(key, indsLclsCd_=indsLclsCd, pageNo=pageNo)
## 4-13. 업종별 상가업소 조회
## 입력: 구분ID(대분류:indsLclsCd, 중분류:indsMclsCd, 소분류:indsSclsCd), 업종코드값, 페이지 번호
divId = 'indsLclsCd'
key = 'Q'
pageNo = 1
df = semas.storeListInUpjong(divId=divId, key=key, pageNo=pageNo)
## 4-14. 수정일자기준 상가업소 조회
## 입력: 일자(YYYYMMDD), 상권업종 대분류코드, 상권업종 중분류코드, 상권업종 소분류코드, 페이지 번호소분류코드, 페이지 번호
key = '20200101'
indsLclsCd = 'Q'
pageNo = '1'
df = semas.storeListByDate(key=key, pageNo=pageNo)
## 4-21. 상권정보 업종 대분류 조회
df = semas.largeUpjongList()
## 4-22. 상권정보 업종 중분류 조회
## 입력: 상권업종 업종 대분류코드
indsLclsCd = 'Q'
df = semas.middleUpjongList(indsLclsCd_=indsLclsCd)
## 4-23. 상권정보 업종 소분류 조회
## 입력: 상권정보 업종 대분류코드, 상권정보 업종 중분류코드
indsLclsCd = 'Q'
indsMclsCd = 'Q01'
df = semas.smallUpjongList(indsLclsCd_=indsLclsCd)