데이터 인사이트

데이터 전문가 칼럼
데이터 전문가가 전하는 데이터 노하우

[빅데이터 분석] 나성호의 R 부동산 데이터 분석 특강 (1회) : 준비: 공공데이터포털에서 오픈 API로 데이터 불러오기

작성자
관리자
작성일
2020-10-26 13:30
조회
701

나성호의 R 부동산 데이터 분석 특강 (1회)

준비: 공공데이터포털에서 오픈 API로 데이터 불러오기

• 연재에 들어가며

안녕하세요? 오늘부터 R을 활용한 부동산 데이터 분석에 대해 소개해드릴 나성호입니다. 간단하게 제 소개를 드리면, 저는 2002년 한일 월드컵 당시 대학원을 졸업하고 대기업 금융 계열사에 입사해 2019년 2월까지 약 17년간 데이터 분석을 직접 수행하는 마케터로 근무했습니다.

2015년쯤인 것으로 기억하고 있는데요. 제가 회사에서 데이터 분석가로 일을 하는데 ‘새로운 세계’로부터 지속적으로 강력한 머신러닝 알고리즘들이 소개되고 있는 상황에 직면하게 됐습니다. 우물 안 개구리로 있지 말고 최신의 알고리즘 공부를 제대로 해보고자 하는 생각에 지난 2018년에 박사 학위 과정에 등록했습니다. 그런데 회사일을 더 잘하고 싶다는 생각에 뒤늦게 시작한 공부로 인해, 회사를 그만두어야 하는 상황에 직면하게 됐습니다. 현재는 공부하는 프리랜서로 여러 기업에서 데이터 분석 관련 강의를 하고 있습니다.

저는 회사에서 근무하는 동안 외부에 공개된 데이터를 찾아 수집하는 방법, 즉 웹 크롤링에 대해 오랜 기간 훈련해왔습니다. 회사 내부의 데이터를 분석하는 것도 중요하지만 외부에서 수집할 수 있는 데이터를 수집·분석함으로써 입체적인 분석 결과를 제시할 수 있을 것이라 생각했기 때문입니다. 그런 훈련 과정을 거친 덕분에 저는 온라인에 공개된 데이터를 쉽게 수집할 수 있게 되었는데요. 이런 역량이 왜 중요하냐면, 웹 크롤링을 할 수 있는 경우와 그렇지 않은 경우 다룰 수 있는 데이터의 범위가 크게 달라지기 때문입니다. 만약 웹 크롤링을 몰라서 웹 브라우저의 내용을 복사해 엑셀 파일에 붙여 넣는 과정을 수작업으로 한다면 데이터 수집에 소요되는 시간도 크게 증가할 것입니다.

따라서 ‘R 부동산 데이터 분석 특강'은 데이터 수집부터 시작을 하고자 합니다. 1편에는 ‘공공데이터 포털 오픈 API로 데이터 수집 준비’ 과정에 대한 설명이고, 2편에는 실제로 공공데이터 포털의 오픈 API를 이용해 부동산 관련 데이터를 수집하는 방법에 대해 소개해드리겠습니다.
이 연재는 R 언어 알고 있으면 좋습니다. 물론 R을 모르더라도 분석 과정을 따라 하다 보면 R을 배울 수 있고 더 공부할 필요를 느끼게 될 것입니다. 이 연재를 따라 하다 보면, 머리 무겁게 느껴졌던 데이터 분석의 실체를 파악할 수 있고, 더 자세히 공부해 보고 싶은 마음이 들 것입니다. 여기까지 왔다면 성공입니다. 왜 공부해야 하는지를 이해하여 즐겁게 데이터 분석을 해볼 수 있는 다리를 놓아주는 것이 이번 연재의 목표라고 할 수 있겠네요.



함평고막천석교. 1274년 고려 시대 때 축조돼 큰 물에도 버티며 사람과 사람을 이어주는 튼튼한 다리로서 지금까지 그 역할을 다하고 있다(사진 출처: 한국학중앙연구원).

• 오픈 API로 데이터 수집하기

웹 페이지에 있는 데이터를 수집하는 방법은 다양합니다. 수집하려는 데이터의 양이 적고, 횟수도 1~2번 정도에 그친다면 웹 사이트에서 마우스로 해당 부분을 복사해 엑셀이나 워드 등에 붙여 넣는 방법이 가장 효과적일 것입니다. 이런 경우라면 오히려 웹 크롤러를 만드는 것이 ‘닭 잡는 데 소 잡는 칼’을 쓰는 것과 다를 바 없는데요. 하지만 수집해야 할 웹 데이터의 양이 많고, 또 수집 작업을 주기적으로 수행해야 하는 경우, 이렇게 수작업으로 하는 것은 상당히 비효율적인 방법이 될 것이므로 이럴 때에는 웹 크롤러를 만드는 것이 더욱 효과적입니다.
그런데 웹 크롤러를 만드는 것은 생각보다 쉽지 않습니다. 그 이유는, 웹 사이트마다 HTML 구성 형태와 동작하는 방식이 제각각이기 때문입니다. 기업들이 웹 사이트를 제작하는 목적은 온라인으로 사업을 영위하려 함이지 인터넷 사용자들에게 비용을 들여 수집한 데이터를 무상으로 제공하고자 함이 아닙니다. 오히려 웹 크롤링 등으로 인해 영업 기회를 잃거나 결과적으로 재산권이 침해 받는 경우가 발생할 수 있어 웹 사이트를 운영하는 기업 입장에서는 웹 크롤링이 결코 반가울리 없습니다. 그러므로 웹 크롤링을 방해하기 위해 다양한 방법을 동원하는 것은 어쩌면 당연한 결과라 할 수 있죠.

반면에 둘 이상의 개인이나 단체가 온라인으로 약속된 데이터를 주고받을 목적으로 API를 제작합니다. API는 Application Programming Interface의 머리글자인데요. 응용프로그램과 운영 체제 간 통신을 위한 인터페이스라 할 수 있는데 쉽게 표현하면 컴퓨터 프로그램끼리 소통하는 방식이라고 이해하면 됩니다. API를 데이터를 주고받는 관점에서 단순하게 도식화하면 다음과 같습니다.



[그림 1]을 보면 API 서비스 사용자가 API 서비스 제공자에게 API 서비스 사용 권한을 신청하면, API 서비스 제공자는 적법한 사용자에 한해 API 인증키를 발급합니다. 그러면 API 서비스 사용자는 API 인증키를 이용해 API 오퍼레이션에서 요구되는 형태로 서비스 요청(Request)을 할 수 있습니다. API 서비스 제공자는 API 서비스 사용자에게 XML 또는 JSON 형태로 데이터를 전송함으로써 응답(Response)합니다. 이와 같은 일련의 프로세스는 웹 크롤링에서 HTML을 요청하고 응답 받는 부분과 상당히 비슷한데요. 다만 일반적인 웹 페이지를 크롤링하는 것에 비해 API를 통한 방법은 데이터 처리가 매우 쉽다는 차이점이 있습니다.

• 1. Open API란?

지금까지 API 서비스에 관해 간략하게 살펴보았습니다. 그럼 Open API는 무엇일까요? ‘Open’이라는 단어에는 ‘(API 서비스를 신청하는) 모든 사람에게 공개된’이라는 의미가 담겨 있습니다. 즉 Open API는 누구나 사용신청을 할 수 있으며, 인증키를 받은 사람은 해당 오퍼레이션에서 지정된 일별 한도 내에서 자유롭게 API 서비스를 사용할 수 있다는 점입니다. API에 대한 설명은 이 정도로 간략하게 마무리하고 이제 실습에 들어가기에 앞서 공공데이터 포털에서 원하는 서비스를 탐색하고 API 인증키를 발급받는 방법에 대해 상세하게 설명하겠습니다.

• 2. 공공데이터 포털에서 Open API 이용 준비하기

아래 [그림 2]는 공공데이터 포털(https://www.data.go.kr)의 메인 화면입니다. 2019년 6월 현재 정부기관에서 공개한 공공데이터는 총 3만여 건이며, 이 중에서 약 10%에 해당하는 3000여 건이 Open API로 제공되고 있습니다.



[그림 2] 공공데이터 포털 메인 화면
Open API를 이용해 공공데이터를 수집하려면 먼저 공공데이터 포털에 회원가입이 돼 있어야 합니다. 회원가입을 하고 로그인한 다음 마이페이지로 이동하면 [그림 3]과 같은 화면이 열립니다. 개발계정에서 자신이 그동안 신청했던 데이터 항목을 확인할 수 있다. 아직 아무런 신청을 하지 않았다면 개발계정은 [그림 3]과 같이 비어 있을 것입니다.

공공데이터 포털에 회원가입하고 로그인하였다면, 다음 단계에서는 수집하려는 데이터세트를 찾아 활용신청을 해야 합니다. 활용신청 단계에서 인증키를 발급받을 수 있는데요. 아래와 같이 3단계를 거치면 됩니다.

① 수집하고자 하는 공공데이터세트를 찾는다. [탐색]
② 상세내용을 확인해 원하는 데이터세트인 경우 활용을 신청한다. [신청]
③ 개발계정 화면으로 이동해 Open API 인증키를 발급받는다. [발급]

위 3단계에 대해 하나씩 자세하게 살펴보도록 하겠습니다. 이번 글의 주제가 ‘R 부동산 데이터 분석’이므로 부동산 관련 데이터세트를 찾습니다. 부동산 관련 데이터세트는 국토교통부에서 공개하고 있을 가능성이 높습니다.



[그림 3] 공공데이터 포털 마이페이지 화면
 

• 2.1 공공데이터세트 찾기

[그림 2]의 공공데이터 포털 메인화면으로 이동하면 수집하고자 하는 데이터세트를 탐색할 수 있습니다. 상단의 검색창에 ‘아파트 실거래가'를 입력하고 돋보기 버튼을 클릭하면 화면이 이동하는데 제공되는 데이터세트의 형태에 따라 ‘파일데이터', ‘오픈API’ 및 ‘표준데이터'로 구분돼 있습니다. ‘파일데이터'에는 엑셀이나 csv, txt 형식의 파일이 제공됩니다.

아마도 이 글을 읽고 있는 독자의 대부분은 오픈API 사용법에 익숙하지 않을 것 같습니다. 그렇기에 엑셀이나 csv로 데이터를 내려 받는 편이 더 쉬운 방법이라고 생각해왔을 것입니다. 하지만 파일데이터로는 원하는 조건에 해당하는 데이터만 내려 받을 수 없는 경우가 많고, 심지어 일부 데이터세트는 오픈API로만 제공되기도 합니다. 따라서 익숙해지기만 하면 파일데이터보다 더욱 손쉽게 데이터를 다룰 수 있게 되므로 이번 기회에 오픈API 방식을 배워서 익숙해질 때까지 반복해 연습해볼 것을 추천 드립니다.

오픈API 항목에 있는 ‘국토교통부 실거래가 정보'를 선택하면 다시 12개의 세부 ‘오퍼레이션’을 소개하는 페이지로 넘어갑니다. 오퍼레이션은 정보계 마트의 데이터 테이블로 생각하면 쉽게 이해할 수 있습니다. 우리는 ‘아파트매매 실거래자료'를 가지고 데이터를 수집할 것입니다. 이때 주의할 점이 있습니다. ‘아파트매매 실거래 상세자료'가 아니라는 점입니다. 선택한 오퍼레이션이 달라지면 이후 실습 과정에서 원하는 결과를 얻지 못하게 됩니다.



[그림 4] 아파트 실거래가 오퍼레이션 목록
 

• 2.2 상세내용 확인하고 활용신청하기

[그림 4]의 중앙에 있는 ‘아파트매매 실거래자료'의 상세정보를 클릭하면 해당 오퍼레이션에 대한 정보를 확인할 수 있습니다. 상세내용에는 End Point, 데이터포맷, API 유형, 비용부과 유무, 심의유형 등이 기술돼 있습니다. 상세내용에서 가장 중요한 것은 참고문서를 확인하는 것입니다. 왜냐하면, 참고문서에는 우리가 찾고자 하는 데이터, 즉 아파트 거래에 관한 정보가 포함돼 있는지, 있다면 어떤 항목들이 어떻게 포함돼 있는지를 확인할 수 있기 때문입니다. 따라서 오퍼레이션이 데이터 테이블이라면, 참고문서는 해당 데이터 테이블의 정의서라고 할 수 있습니다.

아파트 실거래가의 참고문서는 hwp 파일로 되어 있으므로 컴퓨터로 내려 받아 hwp 파일을 열어 봅니다. 4페이지로 이동하면 [표 1]과 같이 ‘요청 메시지 명세’가 있는데, 지역코드와 계약월 등 2가지 항목에 대해 원하는 조건을 지정하고 자신의 인증키를 함께 담아 API 서비스 요청(request)을 실행할 수 있다는 것을 의미합니다. 인증키 발급에 관한 설명은 뒤에서 확인하시기 바랍니다.



[표 1] 요청 메시지 명세
[표 2]는 ‘응답 메시지 명세'에 해당하는 것으로 앞에서 설명한 요청 메시지에 대한 응답(response) 결과로, 제공되는 데이터 항목을 설명한 것입니다. 이 표를 보면 수집할 수 있는 데이터 항목이 있는지 여부를 판단할 수 있습니다.



[표 2] 응답 메시지 명세
[표 1]에는 아파트 거래 건에 대해 매매가격을 만원 단위로 제공하고 있습니다. 이 데이터를 수집하면 관심 지역의 아파트 단지별 전용면적에 따른 매매가격을 거래된 기간별로 비교할 수 있습니다. 아쉬운 점은 아파트단지별 특성이 제공되지 않는다는 것입니다. 만약 총 세대수, 총 주차대수 등 단지별 특성을 알 수 있다면 이 특성들을 입력변수로 사용한 아파트 매매가격 결정모형을 만들 수 있을 것입니다.

수집하려는 항목이 포함돼 있으므로 [그림 4]의 ‘활용신청' 버튼을 클릭해 활용신청 상세 페이지로 이동합니다. ‘활용정보'와 ‘상세기능정보' 등 항목별 해당사항을 선택한 다음 맨 하단의 ‘라이센스표시'로 이동해 ‘동의합니다’ 앞의 체크박스를 선택하고 ‘신청’ 버튼을 클릭하는 것으로 활용신청이 완료됩니다.

• 2.3 일반 인증키 발급받기

공공데이터 포털은 오픈API의 오퍼레이션을 활용 신청한 회원에게 개별 인증키를 발급해줍니다. 다만 맨 처음 인증키를 발급받는 경우라면 별도의 신청 절차를 거쳐야 합니다. 다행인 것은 복잡하지 않다는 것입니다.

공공데이터 포털 상단의 ‘마이페이지' 버튼을 클릭하면 개발계정으로 이동하는데요. 여기서 본인이 활용 신청한 오퍼레이션을 확인할 수 있다는 것을 앞서 설명했습니다. 이제 ‘아파트매매 실거래자료' 오퍼레이션이 보일 것입니다. 해당 오퍼레이션을 클릭하면 [그림 5]와 같이 상세항목으로 이동합니다.



[그림 5] 일반 인증키 발급받기
저는 이미 공공데이터의 인증키를 발급한 경험이 있으므로 [그림 5] 화면 중앙에 일반 인증키가 발급돼 있습니다. 아마 공공데이터 포털을 처음 사용하시는 분이라면 이 부분이 비어 있을 것입니다. 따라서 인증키 발급 신청을 해야 하는데요. 화면 상단 5개의 파란색 버튼 중 가장 오른쪽에 있는 버튼이 ‘일반 인증키 발급'입니다. 저처럼 이미 인증키를 발급받은 회원은 ‘일반 인증키 재발급'으로 돼 있을 겁니다.

‘일반 인증키 발급' 버튼을 클릭하면 공란이었던 화면 중앙의 ‘일반 인증키 항목’에 인증키가 채워집니다. 문제는 이 인증키가 아직은 유효하지 않다는 점입니다. 인증키가 발급되고 30분 가량 지나면 유효한 인증키로 전환되므로 그동안 화면 하단의 ‘상세기능정보'에 대해서 알아보겠습니다.

‘더보기’ 버튼을 클릭하면 ‘요청변??의 흰색 버튼이 새로 생기는데요. 지역별 코드(5자리 숫자)와 거래년월(6자리 숫자)을 지정하면 조건에 해당하는 거래 데이터를 원하는 형태로 제공받을 수 있습니다. 우리는 오픈API를 사용할 예정이므로 ‘XLS’ 또는 ‘JSON’으로만 받을 예정인데요. 아마 이 두 가지 데이터 포맷에 대해서 익숙하지 않은 분들이 많을 것 같으므로 나중에 부가 설명을 드리겠습니다만, 지금은 이 두 가지 중 한 가지 형태로 데이터를 받는다는 정도만 알고 넘어가도록 하겠습니다.

일단은 그 중에서도 XML 형태로 받는 것을 확인해 볼 텐데요. 일반 인증키 발급을 신청한 다음 ‘미리보기' 버튼을 클릭하면 웹 브라우저에서 새로운 창이 열리면서 XML 데이터가 화면에 출력될 것입니다. 인증키가 유효한 상태로 전환된 경우라면 [그림 6]처럼 거래 데이터가 정상적으로 화면에 출력됩니다.



[그림 6] 아파트 실거래가 미리보기 화면 (XML 형태)
만약 거래 데이터가 보이는 대신 ‘SERVICE KEY IS NOT REGISTERED ERROR.’라는 에러 메시지가 출력됐다면 아직 인증키가 유효한 상태가 아니라는 의미입니다. 시간이 조금 더 경과된 후에 다시 실행해 보기 바랍니다.

이상으로 ‘R 부동산 데이터 분석 특강’의 첫 번째 연재 글을 소개합니다. 다음 글에서는 아파트 실거래가 데이터를 수집하고 전처리하는 과정을 소개해 드리겠습니다. 감사합니다.

출처 : 한국데이터산업진흥원

제공 : 데이터 전문가 지식포털 DBguide.net