파이썬 부동산 매매가 조회 프로그램 만들기 2편 (지역코드)

반응형

파이썬 부동산 매매가 조회 프로그램 만들기 2편 (지역코드) ㅣ 지역 구분 코드 체계를 정리하는 것은 공공 데이터를 다루는 데 있어서 매우 중요한 과정입니다. 시, 도, 시군구, 읍면동의 계층적 관계를 파악하고, 이를 사용하기 쉽게 데이터 구조로 변환하는 것이 조회 및 데이터 처리 과정에서 큰 도움을 주기 때문이죠. 특히, 시군구 코드만으로도 많은 작업이 가능하지만, 다양한 상황에서 읍면동까지 세부적으로 사용할 일이 생길 수 있어 미리 준비해두면 좋습니다.

아직 1편을 못보고 넘어오신 분들이라면 1편 먼저 보고 오시는게 좋을 것 같아요!

2024.09.14 - [부동산/자동화 프로젝트] - 파이썬 부동산 매매가 조회 프로그램 만들기 1편

 

파이썬 부동산 매매가 조회 프로그램 만들기 2편 (지역코드)

파이썬 부동산 매매가 조회 프로그램 만들기 2편 (지역코드)

지역 구분 코드 구조

지역 구분 코드는 기본적으로 1: N 관계를 따릅니다. 즉, 하나의 시, 도 아래 여러 시군구가 있고, 다시 하나의 시군구 아래 여러 읍면동이 있는 형태입니다. 이러한 구조를 효율적으로 관리하려면 계층적 관계를 잘 표현할 수 있는 데이터 형식을 사용하는 것이 좋습니다. 여기서는 JSON 형식으로 시, 도, 시군구, 읍면동 코드를 정리해보겠습니다.

어느 분이 정리를 해두셨지만 조금 불편하여 JSON 형태로 바꿔보겠습니다.

https://github.com/WooilJeong/PublicDataReader

 

GitHub - WooilJeong/PublicDataReader: 공공 데이터 조회를 위한 오픈소스 파이썬 라이브러리

공공 데이터 조회를 위한 오픈소스 파이썬 라이브러리. Contribute to WooilJeong/PublicDataReader development by creating an account on GitHub.

github.com

JSON 데이터 구조 설명

다음은 파이썬을 이용해 지역 구분 코드를 JSON 형식으로 구성한 예시입니다. si_do_code는 시도 코드를 의미하고, 그 하위에 sigungu로 시군구 정보가, 시군구 안에는 eup_myeon_dong으로 읍면동 정보가 포함되어 있습니다.

{
 "si_do_code":{si_do_code},
  "si_do_name":{si_do_name},
  "sigungu":[{
      "sigungu_code":{sigungu_code},
    "sigungu_name":{sigungu_name},
    "eup_myeon_dong":[{
        "code":{code},
          "name":{name}
    }]
  }]
}
json
코드 복사
{ "si_do_code": "{si_do_code}", "si_do_name": "{si_do_name}", "sigungu": [ { "sigungu_code": "{sigungu_code}", "sigungu_name": "{sigungu_name}", "eup_myeon_dong": [ { "code": "{eup_myeon_dong_code}", "name": "{eup_myeon_dong_name}" } ] } ] }

이 구조에서는:

  • 시/도: si_do_code와 si_do_name으로 표시됩니다. 각 시/도는 고유한 코드와 이름을 가지고 있습니다.
  • 시군구: sigungu_code와 sigungu_name은 시군구를 나타내며, 이는 시도 아래에 속하는 여러 시군구를 나열합니다.
  • 읍면동: code와 name은 읍면동의 코드와 이름으로, 시군구 아래에 속하는 읍면동 리스트를 포함합니다.

district.json
1.81MB

저는 이 구조를 구글 드라이브 코랩에서 실행할 수 있도록 코드를 작성할 예정입니다. 구글 코랩에서는 무료로 쉽게 코드를 실행하거나 동작시킬 수 있거든요

https://colab.research.google.com/?hl=ko

 

Google Colab

 

colab.research.google.com

구글 코랩에서 JSON 파일을 불러오기 위해서 구글 드라이브에 JSON 파일을 업로드 해둡니다. 저는 기본 폴더에 저장했습니다.

코드는 DistrictConverter 클래스를 이용하여, Google 드라이브에서 JSON 파일을 읽고, 여러 가지 데이터를 반환하는 메서드들을 포함하고 있습니다. 이 클래스의 메서드들을 살펴보겠습니다.

반응형

주요 메서드 설명:

  1. get_data():
    • JSON 파일에서 읽어온 모든 데이터를 반환합니다.
  2. get_si_do_name(si_do):
    • 입력받은 si_do (시/도의 이름)을 포함하는 si_do_name을 반환합니다.
  3. get_si_do_code(si_do_name):
    • 입력받은 si_do_name과 일치하는 시/도의 코드를 반환합니다.
  4. get_sigungu(si_do_code):
    • 입력된 si_do_code와 일치하는 시/도 내의 모든 시/군/구 데이터를 반환합니다.
  5. get_sigungu_list(si_do_code, sigungu_name):
    • 특정 시/도의 코드와 시/군/구 이름을 입력받아 해당하는 시/군/구 리스트를 반환합니다.
import json
import os
from google.colab import drive

class DistrictConverter:
    def __init__(self):
        self.districts = self.__read_district_file()

    def __read_district_file(self):
        # Google 드라이브를 마운트합니다.
        drive.mount('/content/drive')

        # 드라이브 내의 JSON 파일 경로를 설정합니다.
        # 이 부분을 실제 파일 경로로 수정해야 합니다.
        json_file_path = '/content/drive/MyDrive/district.json'
        
        # 파일을 열어서 내용을 읽고 JSON으로 변환합니다.
        with open(json_file_path, 'r') as f:
            return json.loads(f.read())

    def get_data(self):
        return self.districts

    def get_si_do_name(self, si_do):
        for district in self.districts:
            if si_do in district["si_do_name"]:
                return district["si_do_name"]

    def get_si_do_code(self, si_do_name):
        for district in self.districts:
            if si_do_name in district["si_do_name"]:
                return district["si_do_code"]

    def get_sigungu(self, si_do_code):
        for district in self.districts:
            if si_do_code in district["si_do_code"]:
                return district["sigungu"]

    def get_sigungu_list(self, si_do_code, sigungu_name):
        sigungu_list = []
        sigungu_data = self.get_sigungu(si_do_code)
        for sigungu in sigungu_data:
            if sigungu_name in sigungu["sigungu_name"]:
                sigungu_list.append(sigungu)

        return sigungu_list

이렇게 작성하면 구글 코랩에서 준비작업은 끝났습니다. 

잘 동작이 되는지 한번 볼까요? 프린트를 찍어서 출력을 한번 해보도록 하겠습니다.

# 전체 데이터 출력
print("전체 데이터:")
print(converter.get_data())

# 시/도 이름 출력
si_do_name = converter.get_si_do_name("서울특별시")
print("\n시/도 이름:")
print(si_do_name)

# 시/도 코드 출력
si_do_code = converter.get_si_do_code("서울특별시")
print("\n시/도 코드:")
print(si_do_code)

# 해당 시/도 코드의 시/군/구 데이터 출력
sigungu_data = converter.get_sigungu(si_do_code)
print("\n시/군/구 데이터:")
print(sigungu_data)

# 특정 시/군/구 리스트 출력
sigungu_list = converter.get_sigungu_list(si_do_code, "강남구")
print("\n필터된 시/군/구 리스트:")
print(sigungu_list)

결과값은 아래와 같이 도출이 됩니다. 

서울시 전체 구, 강남구에 속한 동 까지 잘 출력이 되고 있네요.

시/군/구 데이터:
[{'sigungu_code': '11110', 'sigungu_name': '종로구', 'eup_myeon_dong': [{'code': '1111000000', 'name': 'nan'}, {'code': '1111010100', 'name': '청운동'}, {'code': '1111010200', 'name': '신교동'}, {'code': '1111010300', 'name': '궁정동'}, {'code': '1111010400', 'name': '효자동'}, {'code': '1111010500', 'name': '창성동'}, {'code': '1111010600', 'name': '통의동'}, {'code': '1111010700', 'name': '적선동'}, {'code': '1111010800', 'name': '통인동'}, {'code': '1111010900', 'name': '누상동'}, {'code': '1111011000', 'name': '누하동'}, {'code': '1111011100', 'name': '옥인동'}, {'code': '1111011200', 'name': '체부동'}, {'code': '1111011300', 'name': '필운동'}, {'code': '1111011400', 'name': '내자동'}, {'code': '1111011500', 'name': '사직동'}, {'code': '1111011600', 'name': '도렴동'}, {'code': '1111011700', 'name': '당주동'}, {'code': '1111011800', 'name': '내수동'}, {'code': '1111011900', 'name': '세종로'}, {'code': '1111012000', 'name': '신문로1가'}, {'code': '1111012100', 'name': '신문로2가'}, {'code': '1111012200', 'name': '청진동'}, {'code': '1111012300', 'name': '서린동'}, {'code': '1111012400', 'name': '수송동'}, {'code': '1111012500', 'name': '중학동'}, {'code': '1111012600', 'name': '종로1가'}, {'code': '1111012700', 'name': '공평동'}, {'code': '1111012800', 'name': '관훈동'}, {'code': '1111012900', 'name': '견지동'}, {'code': '1111013000', 'name': '와룡동'}, {'code': '1111013100', 'name': '권농동'}, {'code': '1111013200', 'name': '운니동'}, {'code': '1111013300', 'name': '익선동'}, {'code': '1111013400', 'name': '경운동'}, {'code': '1111013500', 'name': '관철동'}, {'code': '1111013600', 'name': '인사동'}, {'code': '1111013700', 'name': '낙원동'}, {'code': '1111013800', 'name': '종로2가'}, {'code': '1111013900', 'name': '팔판동'}, {'code': '1111014000', 'name': '삼청동'}, {'code': '1111014100', 'name': '안국동'}, {'code': '1111014200', 'name': '소격동'}, {'code': '1111014300', 'name': '화동'}, {'code': '1111014400', 'name': '사간동'}, {'code': '1111014500', 'name': '송현동'}, {'code': '1111014600', 'name': '가회동'}, {'code': '1111014700', 'name': '재동'}, {'code': '1111014800', 'name': '계동'}, {'code': '1111014900', 'name': '원서동'}, {'code': '1111015000', 'name': '훈정동'}, {'code': '1111015100', 'name': '묘동'}, {'code': '1111015200', 'name': '봉익동'}, {'code': '1111015300', 'name': '돈의동'}, {'code': '1111015400', 'name': '장사동'}, {'code': '1111015500', 'name': '관수동'}, {'code': '1111015600', 'name': '종로3가'}, {'code': '1111015700', 'name': '인의동'}, {'code': '1111015800', 'name': '예지동'}, {'code': '1111015900', 'name': '원남동'}, {'code': '1111016000', 'name': '연지동'}, {'code': '1111016100', 'name': '종로4가'}, {'code': '1111016200', 'name': '효제동'}, {'code': '1111016300', 'name': '종로5가'}, {'code': '1111016400', 'name': '종로6가'}, {'code': '1111016500', 'name': '이화동'}, {'code': '1111016600', 'name': '연건동'}, {'code': '1111016700', 'name': '충신동'}, {'code': '1111016800', 'name': '동숭동'}, {'code': '1111016900', 'name': '혜화동'}, {'code': '1111017000', 'name': '명륜1가'}, {'code': '1111017100', 'name': '명륜2가'}, {'code': '1111017200', 'name': '명륜4가'}, {'code': '1111017300', 'name': '명륜3가'}, {'code': '1111017400', 'name': '창신동'}, {'code': '1111017500', 'name': '숭인동'}, {'code': '1111017600', 'name': '교남동'}, {'code': '1111017700', 'name': '평동'}, {'code': '1111017800', 'name': '송월동'}, {'code': '1111017900', 'name': '홍파동'}, {'code': '1111018000', 'name': '교북동'}, {'code': '1111018100', 'name': '행촌동'}, {'code': '1111018200', 'name': '구기동'}, {'code': '1111018300', 'name': '평창동'}, {'code': '1111018400', 'name': '부암동'}, {'code': '1111018500', 'name': '홍지동'}, {'code': '1111018600', 'name': '신영동'}, {'code': '1111018700', 'name': '무악동'}]}, {'sigungu_code': '11140', 'sigungu_name': '중구', 'eup_myeon_dong': [{'code': '1114000000', 'name': 'NaN'}, {'code': '1114010100', 'name': '무교동'}, {'code': '1114010200', 'name': '다동'}, {'code': '1114010300', 'name': '태평로1가'}, {'code': '1114010400', 'name': '을지로1가'}, {'code': '1114010500', 'name': '을지로2가'}, {'code': '1114010600', 'name': '남대문로1가'}, {'code': '1114010700', 'name': '삼각동'}, {'code': '1114010800', 'name': '수하동'}, {'code': '1114010900', 'name': '장교동'}, {'code': '1114011000', 'name': '수표동'}, {'code': '1114011100', 'name': '소공동'}, {'code': '1114011200', 'name': '남창동'}, {'code': '1114011300', 'name': '북창동'}, {'code': '1114011400', 'name': '태평로2가'}, {'code': '1114011500', 'name': '남대문로2가'}, {'code': '1114011600', 'name': '남대문로3가'}, {'code': '1114011700', 'name': '남대문로4가'}, {'code': '1114011800', 'name': '남대문로5가'}, {'code': '1114011900', 'name': '봉래동1가'}, {'code': '1114012000', 'name': '봉래동2가'}, {'code': '1114012100', 'name': '회현동1가'}, {'code': '1114012200', 'name': '회현동2가'}, {'code': '1114012300', 'name': '회현동3가'}, {'code': '1114012400', 'name': '충무로1가'}, {'code': '1114012500', 'name': '충무로2가'}, {'code': '1114012600', 'name': '명동1가'}, {'code': '1114012700', 'name': '명동2가'}, {'code': '1114012800', 'name': '남산동1가'}, {'code': '1114012900', 'name': '남산동2가'}, {'code': '1114013000', 'name': '남산동3가'}, {'code': '1114013100', 'name': '저동1가'}, {'code': '1114013200', 'name': '충무로4가'}, {'code': '1114013300', 'name': '충무로5가'}, {'code': '1114013400', 'name': '인현동2가'}, {'code': '1114013500', 'name': '예관동'}, {'code': '1114013600', 'name': '묵정동'}, {'code': '1114013700', 'name': '필동1가'}, {'code': '1114013800', 'name': '필동2가'}, {'code': '1114013900', 'name': '필동3가'}, {'code': '1114014000', 'name': '남학동'}, {'code': '1114014100', 'name': '주자동'}, {'code': '1114014200', 'name': '예장동'}, {'code': '1114014300', 'name': '장충동1가'}, {'code': '1114014400', 'name': '장충동2가'}, {'code': '1114014500', 'name': '광희동1가'}, {'code': '1114014600', 'name': '광희동2가'}, {'code': '1114014700', 'name': '쌍림동'}, {'code': '1114014800', 'name': '을지로6가'}, {'code': '1114014900', 'name': '을지로7가'}, {'code': '1114015000', 'name': '을지로4가'}, {'code': '1114015100', 'name': '을지로5가'}, {'code': '1114015200', 'name': '주교동'}, {'code': '1114015300', 'name': '방산동'}, {'code': '1114015400', 'name': '오장동'}, {'code': '1114015500', 'name': '을지로3가'}, {'code': '1114015600', 'name': '입정동'}, {'code': '1114015700', 'name': '산림동'}, {'code': '1114015800', 'name': '충무로3가'}, {'code': '1114015900', 'name': '초동'}, {'code': '1114016000', 'name': '인현동1가'}, {'code': '1114016100', 'name': '저동2가'}, {'code': '1114016200', 'name': '신당동'}, {'code': '1114016300', 'name': '흥인동'}, {'code': '1114016400', 'name': '무학동'}, {'code': '1114016500', 'name': '황학동'}, {'code': '1114016600', 'name': '서소문동'}, {'code': '1114016700', 'name': '정동'}, {'code': '1114016800', 'name': '순화동'}, {'code': '1114016900', 'name': '의주로1가'}, {'code': '1114017000', 'name': '충정로1가'}, {'code': '1114017100', 'name': '중림동'}, {'code': '1114017200', 'name': '의주로2가'}, {'code': '1114017300', 'name': '만리동1가'}, {'code': '1114017400', 'name': '만리동2가'}]}, {'sigungu_code': '11170', 'sigungu_name': '용산구', 'eup_myeon_dong': [{'code': '1117000000', 'name': 'nan'}, {'code': '1117010100', 'name': '후암동'}, {'code': '1117010200', 'name': '용산동2가'}, {'code': '1117010300', 'name': '용산동4가'}, {'code': '1117010400', 'name': '갈월동'}, {'code': '1117010500', 'name': '남영동'}, {'code': '1117010600', 'name': '용산동1가'}, {'code': '1117010700', 'name': '동자동'}, {'code': '1117010800', 'name': '서계동'}, {'code': '1117010900', 'name': '청파동1가'}, {'code': '1117011000', 'name': '청파동2가'}, {'code': '1117011100', 'name': '청파동3가'}, {'code': '1117011200', 'name': '원효로1가'}, {'code': '1117011300', 'name': '원효로2가'}, {'code': '1117011400', 'name': '신창동'}, {'code': '1117011500', 'name': '산천동'}, {'code': '1117011600', 'name': '청암동'}, {'code': '1117011700', 'name': '원효로3가'}, {'code': '1117011800', 'name': '원효로4가'}, {'code': '1117011900', 'name': '효창동'}, {'code': '1117012000', 'name': '도원동'}, {'code': '1117012100', 'name': '용문동'}, {'code': '1117012200', 'name': '문배동'}, {'code': '1117012300', 'name': '신계동'}, {'code': '1117012400', 'name': '한강로1가'}, {'code': '1117012500', 'name': '한강로2가'}, {'code': '1117012600', 'name': '용산동3가'}, {'code': '1117012700', 'name': '용산동5가'}, {'code': '1117012800', 'name': '한강로3가'}, {'code': '1117012900', 'name': '이촌동'}, {'code': '1117013000', 'name': '이태원동'}, {'code': '1117013100', 'name': '한남동'}, {'code': '1117013200', 'name': '동빙고동'}, {'code': '1117013300', 'name': '서빙고동'}, {'code': '1117013400', 'name': '주성동'}, {'code': '1117013500', 'name': '용산동6가'}, {'code': '1117013600', 'name': '보광동'}]}, {'sigungu_code': '11200', 'sigungu_name': '성동구', 'eup_myeon_dong': [{'code': '1120000000', 'name': 'nan'}, {'code': '1120010100', 'name': '상왕십리동'}, {'code': '1120010200', 'name': '하왕십리동'}, {'code': '1120010300', 'name': '홍익동'}, {'code': '1120010400', 'name': '도선동'}, {'code': '1120010500', 'name': '마장동'}, {'code': '1120010600', 'name': '사근동'}, {'code': '1120010700', 'name': '행당동'}, {'code': '1120010800', 'name': '응봉동'}, {'code': '1120010900', 'name': '금호동1가'}, {'code': '1120011000', 'name': '금호동2가'}, {'code': '1120011100', 'name': '금호동3가'}, {'code': '1120011200', 'name': '금호동4가'}, {'code': '1120011300', 'name': '옥수동'}, {'code': '1120011400', 'name': '성수동1가'}, {'code': '1120011500', 'name': '성수동2가'}, {'code': '1120011800', 'name': '송정동'}, {'code': '1120012200', 'name': '용답동'}]}, {'sigungu_code': '11215', 'sigungu_name': '광진구', 'eup_myeon_dong': [{'code': '1121500000', 'name': 'nan'}, {'code': '1121510100', 'name': '중곡동'}, {'code': '1121510200', 'name': '능동'}, {'code': '1121510300', 'name': '구의동'}, {'code': '1121510400', 'name': '광장동'}, {'code': '1121510500', 'name': '자양동'}, {'code': '1121510700', 'name': '화양동'}, {'code': '1121510900', 'name': '군자동'}]}, {'sigungu_code': '11230', 'sigungu_name': '동대문구', 'eup_myeon_dong': [{'code': '1123000000', 'name': 'nan'}, {'code': '1123010100', 'name': '신설동'}, {'code': '1123010200', 'name': '용두동'}, {'code': '1123010300', 'name': '제기동'}, {'code': '1123010400', 'name': '전농동'}, {'code': '1123010500', 'name': '답십리동'}, {'code': '1123010600', 'name': '장안동'}, {'code': '1123010700', 'name': '청량리동'}, {'code': '1123010800', 'name': '회기동'}, {'code': '1123010900', 'name': '휘경동'}, {'code': '1123011000', 'name': '이문동'}]}, {'sigungu_code': '11260', 'sigungu_name': '중랑구', 'eup_myeon_dong': [{'code': '1126000000', 'name': 'nan'}, {'code': '1126010100', 'name': '면목동'}, {'code': '1126010200', 'name': '상봉동'}, {'code': '1126010300', 'name': '중화동'}, {'code': '1126010400', 'name': '묵동'}, {'code': '1126010500', 'name': '망우동'}, {'code': '1126010600', 'name': '신내동'}]}, {'sigungu_code': '11290', 'sigungu_name': '성북구', 'eup_myeon_dong': [{'code': '1129000000', 'name': 'nan'}, {'code': '1129010100', 'name': '성북동'}, {'code': '1129010200', 'name': '성북동1가'}, {'code': '1129010300', 'name': '돈암동'}, {'code': '1129010400', 'name': '동소문동1가'}, {'code': '1129010500', 'name': '동소문동2가'}, {'code': '1129010600', 'name': '동소문동3가'}, {'code': '1129010700', 'name': '동소문동4가'}, {'code': '1129010800', 'name': '동소문동5가'}, {'code': '1129010900', 'name': '동소문동6가'}, {'code': '1129011000', 'name': '동소문동7가'}, {'code': '1129011100', 'name': '삼선동1가'}, {'code': '1129011200', 'name': '삼선동2가'}, {'code': '1129011300', 'name': '삼선동3가'}, {'code': '1129011400', 'name': '삼선동4가'}, {'code': '1129011500', 'name': '삼선동5가'}, {'code': '1129011600', 'name': '동선동1가'}, {'code': '1129011700', 'name': '동선동2가'}, {'code': '1129011800', 'name': '동선동3가'}, {'code': '1129011900', 'name': '동선동4가'}, {'code': '1129012000', 'name': '동선동5가'}, {'code': '1129012100', 'name': '안암동1가'}, {'code': '1129012200', 'name': '안암동2가'}, {'code': '1129012300', 'name': '안암동3가'}, {'code': '1129012400', 'name': '안암동4가'}, {'code': '1129012500', 'name': '안암동5가'}, {'code': '1129012600', 'name': '보문동4가'}, {'code': '1129012700', 'name': '보문동5가'}, {'code': '1129012800', 'name': '보문동6가'}, {'code': '1129012900', 'name': '보문동7가'}, {'code': '1129013000', 'name': '보문동1가'}, {'code': '1129013100', 'name': '보문동2가'}, {'code': '1129013200', 'name': '보문동3가'}, {'code': '1129013300', 'name': '정릉동'}, {'code': '1129013400', 'name': '길음동'}, {'code': '1129013500', 'name': '종암동'}, {'code': '1129013600', 'name': '하월곡동'}, {'code': '1129013700', 'name': '상월곡동'}, {'code': '1129013800', 'name': '장위동'}, {'code': '1129013900', 'name': '석관동'}]}, {'sigungu_code': '11305', 'sigungu_name': '강북구', 'eup_myeon_dong': [{'code': '1130500000', 'name': 'nan'}, {'code': '1130510100', 'name': '미아동'}, {'code': '1130510200', 'name': '번동'}, {'code': '1130510300', 'name': '수유동'}, {'code': '1130510400', 'name': '우이동'}]}, {'sigungu_code': '11320', 'sigungu_name': '도봉구', 'eup_myeon_dong': [{'code': '1132000000', 'name': 'nan'}, {'code': '1132010500', 'name': '쌍문동'}, {'code': '1132010600', 'name': '방학동'}, {'code': '1132010700', 'name': '창동'}, {'code': '1132010800', 'name': '도봉동'}]}, {'sigungu_code': '11350', 'sigungu_name': '노원구', 'eup_myeon_dong': [{'code': '1135000000', 'name': 'nan'}, {'code': '1135010200', 'name': '월계동'}, {'code': '1135010300', 'name': '공릉동'}, {'code': '1135010400', 'name': '하계동'}, {'code': '1135010500', 'name': '상계동'}, {'code': '1135010600', 'name': '중계동'}]}, {'sigungu_code': '11380', 'sigungu_name': '은평구', 'eup_myeon_dong': [{'code': '1138000000', 'name': 'nan'}, {'code': '1138010100', 'name': '수색동'}, {'code': '1138010200', 'name': '녹번동'}, {'code': '1138010300', 'name': '불광동'}, {'code': '1138010400', 'name': '갈현동'}, {'code': '1138010500', 'name': '구산동'}, {'code': '1138010600', 'name': '대조동'}, {'code': '1138010700', 'name': '응암동'}, {'code': '1138010800', 'name': '역촌동'}, {'code': '1138010900', 'name': '신사동'}, {'code': '1138011000', 'name': '증산동'}, {'code': '1138011400', 'name': '진관동'}]}, {'sigungu_code': '11410', 'sigungu_name': '서대문구', 'eup_myeon_dong': [{'code': '1141000000', 'name': 'nan'}, {'code': '1141010100', 'name': '충정로2가'}, {'code': '1141010200', 'name': '충정로3가'}, {'code': '1141010300', 'name': '합동'}, {'code': '1141010400', 'name': '미근동'}, {'code': '1141010500', 'name': '냉천동'}, {'code': '1141010600', 'name': '천연동'}, {'code': '1141010700', 'name': '옥천동'}, {'code': '1141010800', 'name': '영천동'}, {'code': '1141010900', 'name': '현저동'}, {'code': '1141011000', 'name': '북아현동'}, {'code': '1141011100', 'name': '홍제동'}, {'code': '1141011200', 'name': '대현동'}, {'code': '1141011300', 'name': '대신동'}, {'code': '1141011400', 'name': '신촌동'}, {'code': '1141011500', 'name': '봉원동'}, {'code': '1141011600', 'name': '창천동'}, {'code': '1141011700', 'name': '연희동'}, {'code': '1141011800', 'name': '홍은동'}, {'code': '1141011900', 'name': '북가좌동'}, {'code': '1141012000', 'name': '남가좌동'}]}, {'sigungu_code': '11440', 'sigungu_name': '마포구', 'eup_myeon_dong': [{'code': '1144000000', 'name': 'nan'}, {'code': '1144010100', 'name': '아현동'}, {'code': '1144010200', 'name': '공덕동'}, {'code': '1144010300', 'name': '신공덕동'}, {'code': '1144010400', 'name': '도화동'}, {'code': '1144010500', 'name': '용강동'}, {'code': '1144010600', 'name': '토정동'}, {'code': '1144010700', 'name': '마포동'}, {'code': '1144010800', 'name': '대흥동'}, {'code': '1144010900', 'name': '염리동'}, {'code': '1144011000', 'name': '노고산동'}, {'code': '1144011100', 'name': '신수동'}, {'code': '1144011200', 'name': '현석동'}, {'code': '1144011300', 'name': '구수동'}, {'code': '1144011400', 'name': '창전동'}, {'code': '1144011500', 'name': '상수동'}, {'code': '1144011600', 'name': '하중동'}, {'code': '1144011700', 'name': '신정동'}, {'code': '1144011800', 'name': '당인동'}, {'code': '1144012000', 'name': '서교동'}, {'code': '1144012100', 'name': '동교동'}, {'code': '1144012200', 'name': '합정동'}, {'code': '1144012300', 'name': '망원동'}, {'code': '1144012400', 'name': '연남동'}, {'code': '1144012500', 'name': '성산동'}, {'code': '1144012600', 'name': '중동'}, {'code': '1144012700', 'name': '상암동'}]}, {'sigungu_code': '11470', 'sigungu_name': '양천구', 'eup_myeon_dong': [{'code': '1147000000', 'name': 'nan'}, {'code': '1147010100', 'name': '신정동'}, {'code': '1147010200', 'name': '목동'}, {'code': '1147010300', 'name': '신월동'}]}, {'sigungu_code': '11500', 'sigungu_name': '강서구', 'eup_myeon_dong': [{'code': '1150000000', 'name': 'nan'}, {'code': '1150000100', 'name': '신정동'}, {'code': '1150000200', 'name': '신월동'}, {'code': '1150010100', 'name': '염창동'}, {'code': '1150010200', 'name': '등촌동'}, {'code': '1150010300', 'name': '화곡동'}, {'code': '1150010400', 'name': '가양'}, {'code': '1150010500', 'name': '마곡동'}, {'code': '1150010600', 'name': '내발산동'}, {'code': '1150010700', 'name': '외발산동'}, {'code': '1150010800', 'name': '공항동'}, {'code': '1150010900', 'name': '방화동'}, {'code': '1150011000', 'name': '개화동'}, {'code': '1150011100', 'name': '과해동'}, {'code': '1150011200', 'name': '오곡동'}, {'code': '1150011300', 'name': '오쇠동'}]}, {'sigungu_code': '11530', 'sigungu_name': '구로구', 'eup_myeon_dong': [{'code': '1153000000', 'name': 'nan'}, {'code': '1153010100', 'name': '신도림동'}, {'code': '1153010200', 'name': '구로동'}, {'code': '1153010300', 'name': '가리봉동'}, {'code': '1153010600', 'name': '고척동'}, {'code': '1153010700', 'name': '개봉동'}, {'code': '1153010800', 'name': '오류동'}, {'code': '1153010900', 'name': '궁동'}, {'code': '1153011000', 'name': '온수동'}, {'code': '1153011100', 'name': '천왕동'}, {'code': '1153011200', 'name': '항동'}]}, {'sigungu_code': '11545', 'sigungu_name': '금천구', 'eup_myeon_dong': [{'code': '1154500000', 'name': 'nan'}, {'code': '1154510100', 'name': '가산동'}, {'code': '1154510200', 'name': '독산동'}, {'code': '1154510300', 'name': '시흥동'}]}, {'sigungu_code': '11560', 'sigungu_name': '영등포구', 'eup_myeon_dong': [{'code': '1156000000', 'name': 'nan'}, {'code': '1156010100', 'name': '영등포동'}, {'code': '1156010200', 'name': '영등포동1가'}, {'code': '1156010300', 'name': '영등포동2가'}, {'code': '1156010400', 'name': '영등포동3가'}, {'code': '1156010500', 'name': '영등포동4가'}, {'code': '1156010600', 'name': '영등포동5가'}, {'code': '1156010700', 'name': '영등포동6가'}, {'code': '1156010800', 'name': '영등포동7가'}, {'code': '1156010900', 'name': '영등포동8가'}, {'code': '1156011000', 'name': '여의도동'}, {'code': '1156011100', 'name': '당산동1가'}, {'code': '1156011200', 'name': '당산동2가'}, {'code': '1156011300', 'name': '당산동3가'}, {'code': '1156011400', 'name': '당산동4가'}, {'code': '1156011500', 'name': '당산동5가'}, {'code': '1156011600', 'name': '당산동6가'}, {'code': '1156011700', 'name': '당산동'}, {'code': '1156011800', 'name': '도림동'}, {'code': '1156011900', 'name': '문래동1가'}, {'code': '1156012000', 'name': '문래동2가'}, {'code': '1156012100', 'name': '문래동3가'}, {'code': '1156012200', 'name': '문래동4가'}, {'code': '1156012300', 'name': '문래동5가'}, {'code': '1156012400', 'name': '문래동6가'}, {'code': '1156012500', 'name': '양평동1가'}, {'code': '1156012600', 'name': '양평동2가'}, {'code': '1156012700', 'name': '양평동3가'}, {'code': '1156012800', 'name': '양평동4가'}, {'code': '1156012900', 'name': '양평동5가'}, {'code': '1156013000', 'name': '양평동6가'}, {'code': '1156013100', 'name': '양화동'}, {'code': '1156013200', 'name': '신길동'}, {'code': '1156013300', 'name': '대림동'}, {'code': '1156013400', 'name': '양평동'}]}, {'sigungu_code': '11590', 'sigungu_name': '동작구', 'eup_myeon_dong': [{'code': '1159000000', 'name': 'nan'}, {'code': '1159010100', 'name': '노량진동'}, {'code': '1159010200', 'name': '상도동'}, {'code': '1159010300', 'name': '상도1동'}, {'code': '1159010400', 'name': '본동'}, {'code': '1159010500', 'name': '흑석동'}, {'code': '1159010600', 'name': '동작동'}, {'code': '1159010700', 'name': '사당동'}, {'code': '1159010800', 'name': '대방동'}, {'code': '1159010900', 'name': '신대방동'}]}, {'sigungu_code': '11620', 'sigungu_name': '관악구', 'eup_myeon_dong': [{'code': '1162000000', 'name': 'nan'}, {'code': '1162010100', 'name': '봉천동'}, {'code': '1162010200', 'name': '신림동'}, {'code': '1162010300', 'name': '남현동'}]}, {'sigungu_code': '11650', 'sigungu_name': '서초구', 'eup_myeon_dong': [{'code': '1165000000', 'name': 'nan'}, {'code': '1165010100', 'name': '방배동'}, {'code': '1165010200', 'name': '양재동'}, {'code': '1165010300', 'name': '우면동'}, {'code': '1165010400', 'name': '원지동'}, {'code': '1165010600', 'name': '잠원동'}, {'code': '1165010700', 'name': '반포동'}, {'code': '1165010800', 'name': '서초동'}, {'code': '1165010900', 'name': '내곡동'}, {'code': '1165011000', 'name': '염곡동'}, {'code': '1165011100', 'name': '신원동'}]}, {'sigungu_code': '11680', 'sigungu_name': '강남구', 'eup_myeon_dong': [{'code': '1168000000', 'name': 'nan'}, {'code': '1168010100', 'name': '역삼동'}, {'code': '1168010300', 'name': '개포동'}, {'code': '1168010400', 'name': '청담동'}, {'code': '1168010500', 'name': '삼성동'}, {'code': '1168010600', 'name': '대치동'}, {'code': '1168010700', 'name': '신사동'}, {'code': '1168010800', 'name': '논현동'}, {'code': '1168011000', 'name': '압구정동'}, {'code': '1168011100', 'name': '세곡동'}, {'code': '1168011200', 'name': '자곡동'}, {'code': '1168011300', 'name': '율현동'}, {'code': '1168011400', 'name': '일원동'}, {'code': '1168011500', 'name': '수서동'}, {'code': '1168011800', 'name': '도곡동'}]}, {'sigungu_code': '11710', 'sigungu_name': '송파구', 'eup_myeon_dong': [{'code': '1171000000', 'name': 'nan'}, {'code': '1171010100', 'name': '잠실동'}, {'code': '1171010200', 'name': '신천동'}, {'code': '1171010300', 'name': '풍납동'}, {'code': '1171010400', 'name': '송파동'}, {'code': '1171010500', 'name': '석촌동'}, {'code': '1171010600', 'name': '삼전동'}, {'code': '1171010700', 'name': '가락동'}, {'code': '1171010800', 'name': '문정동'}, {'code': '1171010900', 'name': '장지동'}, {'code': '1171011100', 'name': '방이동'}, {'code': '1171011200', 'name': '오금동'}, {'code': '1171011300', 'name': '거여동'}, {'code': '1171011400', 'name': '마천동'}]}, {'sigungu_code': '11740', 'sigungu_name': '강동구', 'eup_myeon_dong': [{'code': '1174000000', 'name': 'nan'}, {'code': '1174010100', 'name': '명일동'}, {'code': '1174010200', 'name': '고덕동'}, {'code': '1174010300', 'name': '상일동'}, {'code': '1174010500', 'name': '길동'}, {'code': '1174010600', 'name': '둔촌동'}, {'code': '1174010700', 'name': '암사동'}, {'code': '1174010800', 'name': '성내동'}, {'code': '1174010900', 'name': '천호동'}, {'code': '1174011000', 'name': '강일동'}]}]

필터된 시/군/구 리스트:
[{'sigungu_code': '11680', 'sigungu_name': '강남구', 'eup_myeon_dong': [{'code': '1168000000', 'name': 'nan'}, {'code': '1168010100', 'name': '역삼동'}, {'code': '1168010300', 'name': '개포동'}, {'code': '1168010400', 'name': '청담동'}, {'code': '1168010500', 'name': '삼성동'}, {'code': '1168010600', 'name': '대치동'}, {'code': '1168010700', 'name': '신사동'}, {'code': '1168010800', 'name': '논현동'}, {'code': '1168011000', 'name': '압구정동'}, {'code': '1168011100', 'name': '세곡동'}, {'code': '1168011200', 'name': '자곡동'}, {'code': '1168011300', 'name': '율현동'}, {'code': '1168011400', 'name': '일원동'}, {'code': '1168011500', 'name': '수서동'}, {'code': '1168011800', 'name': '도곡동'}]}]

다음포스트에서는 공공데이터를 읽어와서, 컬럼이름을 수정하고, 전용면적을 평수로 계산하는 메소드를 구현해봅니다.

 

728x90
반응형