파이썬(Python)/고양시 아파트 현황 조사

[부동산 | Phase1] 아파트 현황조사(고양시) - Data Mining & Refining (1부)

JJ Goh[Certified customs broker] 2020. 6. 3. 18:14

[부동산 | Phase1] 아파트 현황조사(고양시) - Data Mining & Refining (1부)



 가장 먼저 다뤄볼 주제로 무엇이 좋을지 고민을 거듭하였다. 앞선 글에서 언급한 Data의 요건 기준으로 유용한 Data 분석 가치를 가진 것이 무엇이 있을지를 깊이 고려해 보았고, 결론적으로 우리가 몸 뉘우는 우리의 집에 관한 이야기로 가볍게 이 여정을 시작하기로 하였다. 


 앞으로 주제를 가지고 글을 올릴 때엔 다음과 같은 형태를 갖추어 글을 세분류해 올리고자 한다.


 (1) Phase 1 - Data Mining 및 Refining과 항목 이해

 (2) Phase 2 - Data analysis(분석 알고리즘 구성) 

 (3) Phase 3 - 정보 도출과 의미 파악하기


 Phase 1에서는 우리가 수집하게 될 Data의 수집 방법, 해당 Data set에 포함된 항목에 대한 이해 그리고 통계 전 Refining을 다룸으로서 Data에 대한 전처리 과정을 이행하고 Data에 대해 사전 이해를 갖는 과정을 진행한다.

 Phase 2에서는 Python coding을 통해 어떻게 분석 및 시각화 알고리즘을 구성할 것인지를 살펴본다.

 Phase 3에서는 시각화된 정보자료를 바탕으로 그 의미와 활용분야 등에 대해 독자분들과 소통할 수 있는 페이지를 꾸미고자 한다.


 한가지 주제로 수집된 데이터에 대해서 말그대로 '씹고 뜯고 맛보고 즐기기'위해 Data set내 모든 항목들간의 연관성을 최대한 살펴 보고, 다룰 수 있는 소주제는 모두 다루어 내는 것이 목표다. 이를 통해, 한가지 주제만으로도 심도 있게 Data를 살피는 안목을 길러 나갈 수 있으리라 생각한다. 다시 말해, Data scientist 흉내 정도는 내볼 수 있도록 기본 소양을 함께 훈련하자는 것이다.  


 그럼 이제 Data 수집부터 시작해 보자.



[Phase 1] Data Mining 및 Refining과 항목 이해 (Part 1)



 1.  정부공공데이터포털로 들어가자. 



 2.  '데이터찾기 - 데이터목록' 카테고리로 진입하자.





 3. 검색창에 키워드 '아파트'를 넣고, 검색을 희망하는 지역명을 검색어로 함께 넣자. 


    필자는 '고양시'를 넣어보겠다. 


    대략 살펴 보았을 때, 인천시의 경우 '계양구'와 같이 구단위까지 아파트현황 집계를 제공하는 경우도 있었으니, 검색에 참조하시기 바란다. 

    본인의 관심 지역명을 검색어에 함께 넣어 주되, 원하는 검색결과가 나오지 않는다면 본인의 의사에 따라, 공공데이터 제공신청을 해보는 것도 경험 삼아 좋을 듯 하다.





4. 검색결과를 보자.



 파일데이터의 형태로 '고양시 공동주택 현황'이 보인다. 이제 이 파일의 요약을 좀 살펴보자.

 원하는 검색결과 항목을 클릭하면 다음과 같이, 파일데이터 상세화면으로 이동한다.

 


이 파일은 CSV 확장자의 파일이며, 경기도 고양시 주택과에서 제공한 것을 알 수 있다. 관리부서의 전화번호도 있기 때문에, Data 항목에 대해 정의 파악이 필요하다면, 해당 전화번호로 확인해 보실 수 있겠다. 업데이트는 연간으로 이루어진다는 점과 차기 등록 예정일 또한 알 수 있다. 등록일이 2019년 11월 20일인 자료이므로, 적어도 이 Data set이 경기도 고양시가 집계중인 데이터 중 가장 최신 자료임을 알 수 있다. 그리고, 이용허락범위와 비용부과유무에 유의하여 Data의 상업적 활용 여부를 판단하시면 되겠다.


 5. 이제 우측 상단의 다운로드 버튼을 눌러 파일을 내 PC에 저장해 놓자.


 필자는 Data 파일을 통상 '바탕화면'에 만든 폴더에 저장한다. 나중에 다루겠지만 Coding을 하다보면, 파일의 경로명을 Full address로 입력해 줘야 하는 경우가 있는데, 이때 내 PC의 너무 깊숙한 위치에 저장해 두면 찾기도 어렵고 경로명 입력도 버거울 수 있다. 가급적 Root위치에 가까운 곳을 선택해 Raw Data 저장소를 마련하자.


 6. 다운로드 받은 CSV파일을 열어 보자.


 우선, Database파일 통계가 생소하신 분들을 위해 CSV파일이 무엇인지 알아보자. 

 위키백과에서 제공하는 설명문을 아래와 같이 발췌하여 제시한다.


 CSV(영어comma-separated values)는 몇 가지 필드를 쉼표(,)로 구분한 텍스트 데이터 및 텍스트 파일이다. 확장자는 .csv이며 MIME 형식은 text/csv이다. comma-separated variables라고도 한다.

오래전부터 스프레드시트나 데이터베이스 소프트웨어에서 많이 쓰였으나 세부적인 구현은 소프트웨어에 따라 다르다.


 데이터베이스 파일이라면 대부분의 사람들에겐 엑셀파일이 가장 대중적 인지도가 높다. 그런데, csv파일도 database의 구조를 갖춘 데이터베이스 형식 파일의 하나이며, 해당 필드를 comma로 구분한다는 점이 다르다. 역으로 생각하면, 해당 파일 내의 comma를 분기점으로 하여 데이터의 필드값을 구분해 인식할 수 있다는 점이다. 심지어, xlsx와 같은 오피스의 오픈 XML 형식 파일은 XML 표준을 따르기 위한 내부 프로세스로 데이터 처리에 부하가 생길 수 있다. 즉, 데이터가 대량일수록 처리속도가 둔화될 수 있다는 것이다. 



 하지만, CSV파일은 comma라는 구분자만 걸러내도 온전한 데이터베이스를 인식할 수 있어 처리속도가 훨씬 빠를 수 있다. 데이터의 용량이 크면 클수록 엑셀파일보다는 CSV와 같은 원초적 형태의 파일이 유리하고, MS 오피스 보다는 데이터베이스 전문 프로그램이나 Python 프로그램이 처리속도면에서 유리하다는 것이다. 


 이제 다시 우리가 다운 받은 '경기도 고양시 공동주택 관리현황' 파일을 살피러 돌아가 보자.



 이 Data set은 A열부터 N열까지 14개 항목으로 이루어져 있음을 알 수 있다.  

 또한 Python에서 부르는 자료형으로 구분해 본다면 다음과 같이 해당 필드들을 나눌 수 있다.


 1) String(str) - 구분, 단지명, 지번, 도로명주소, 건물유형, 관리소전화, fax

 2) Timestamp - 사업승인일, 사용검사일

 3) Integer(int) - 층수, 동수, 세대수, 승강기

 4) Float - 연면적


 자료형에 대해서는 Phase 2에서 다루도록 하고, 이런 식으로 구분된다는 정도만 봐두도록 하자.


 이제 다시 각 항목별로 관찰되는 중요 특징들에 대해 알아보자.

 데이터의 특징을 살펴볼 때엔, 해당 데이터가 '패턴화'를 띄고 있는지가 중요한 관찰지표이다. 패턴화된 데이터는 알고리즘을 만들기에 우수한 조건을 갖춘 데이터이기 때문이다.

 

 a. 구분 - 정의가 무엇인지 정보제공처에 문의가 필요해 보인다.

 b. 단지명 - 단지명이 기술되어 있으며, 데이터에서 특정한 패턴이 발견되지 않는다. 

 c. 지번 - 문자열 첫 문자부터 세번째 문자까지가 동이름으로 패턴화가 발견된다. 간혹 4자의 동이름인 곳이 있을 수 있다. 그렇더라도, 지번과는 공백문자로 구분되기에 역시 패턴화 되어 있다고 판단할 수 있다. 다시 말하면, 적어도 동이름 정도는 코딩으로 쉽게 분리해 낼 수 있다는 의미이다.

 d. 도로명주소 - 도로명까지 패턴화 되어 있다.

 e. 사업승인일 - Timestamp형태로 YYYY-MM-DD유형이다.

 f. 사용검사일 - Timestamp형태로 YYYY-MM-DD유형이다.

 g. 건물유형 - 총 9개의 건물유형이 구분되어 있다.

 

 이 정도의 특징을 파악한 후 이제 데이터가 가진 성격이 어느 정도 파악되었으니, 본격적인 알고리즘 구성 직전 Data refining을 진행하도록 하자. 이 작업은 후속 포스팅에서 이어 진행하겠다.


 

 


  

반응형