법정동 데이터 수집하기
datakart 패키지의 Datagokr 클래스를 사용하여 법정동 데이터를 수집하는 함수를 만들어 봅시다. 이 함수는 법정동 데이터를 수집한 후 리스트 형식으로 반환합니다. 리스트에는 주소 코드가 음, 면, 동, 리 단위까지 포함되어 있으므로, 데이터를 정제해서 시, 군, 구 단위만 남기겠습니다.
법정동 데이터 리스트를 데이터프레임으로 반환한 다음 읍, 면, 동, 리 단위 주소가 행을 추출하고, 시도, 시군구, 지역 주소명 열로 정리해 보겠습니다. 이렇게 정제한 데이터프레임은 CSV 파일로 저장할 것입니다.
비주얼 스튜디오 코드에서 새 파일을 생성하고, 파일명은 'step_2_1.py'로 저장합니다. 그리고 나서 다음 코드를 입력한 후, 대화형 창에서 실행하면 'output' 폴더에 서울특별시 지역에 속한 법정동 데이터가 포함된 'step_2_1.csv' 파일이 생성됩니다.
ch_11/step_2_1.py
from pathlib import Path
import pandas as pd
from datakart import Datagokr
from step_1_1 import OUT_DIR # 이전에 작성한 모듈을 불러옵니다.
OUT_2_1 = OUT_DIR / f"{Path(__file__).stem}.csv"
def sido_sgg_to_csv(region: str | None = None): # 08
DATAGO_KEY = "공공데이터포털 API 키" # 공공데이터포털 API 키 입력
datago = Datagokr(DATAGO_KEY) # Datagokr 객체 생성
resp = datago.lawd_code(region) # 법정동 데이터 수집
df_raw = pd.DataFrame(resp) # 데이터프레임 생성
df_raw["sido_sgg"] = df_raw["sido_cd"] + df_raw["sgg_cd"] # '시도_시군구' 열 생성 # 13
f_no_sgg = df_raw["sgg_cd"] == "000" # 시군구 코드값이 '000'인 경우 # 15
f_no_umd = df_raw["umd_cd"] == "000" # 읍면동 코드값이 '000'인 경우
f_no_ri = df_raw["ri_cd"] == "00" # 리 코드값이 '00'인 경우
f_only_sgg = (~f_no_sgg) & (f_no_umd) & (f_no_ri) # 시군구 코드값만 있는 경우
df_sliced = df_raw.loc[f_only_sgg] # 데이터프레임에서 시군구 코드값 추출 # 19
df_filter = df_sliced.filter(["sido_sgg", "locatadd_nm"]) # 사용할 열 필터링 # 21
df_sort = df_filter.sort_values("locatadd_nm") # 지역주소명으로 오름차순 정렬 # 22
df_result = df_sort.reset_index(drop=True) # 데이터프레임 인덱스 재생성 # 23
df_result.to_csv(OUT_2_1, index=False) # CSV로 저장
if __name__ == "__main__":
region = "서울특별시"
sido_sgg_to_csv(region) # '시도_시군구' 단위 지역주소명을 CSV로 저장
실행결과
sido_sgg, locatadd_snum
11680, 서울특별시, 강남구
11740, 서울특별시 강동구
11305, 서울특별시 강북구
... 생략 ...
08 매개변수에 저장된 지역의 '시도_시군구' 단위 지역주소명을 CSV로 저장하는 함수 sido_sgg_to_csv()를 정의합니다.
13 sido_cd 열과 sgg_cd 열을 결합하여 sudo_sgg 열로 만듭니다.
15~19 시군구 단위 데이터만 남기고, 읍면동 및 리 단위 데이터는 삭제합니다.
21 함수 filter()를 사용하여 sido_sgg와 locatadd_nm 열을 추출합니다.
22 함수 sort_values()를 사용하여 지역 주소명을 기준으로 오름차순 정렬합니다.
23 함수 reset_index()을 사용하여 데이터프레임의 인덱스를 0부터 다시 생성합니다.
'프로그래밍 언어 > Python' 카테고리의 다른 글
| 거래가 취소된 데이터 삭제 (0) | 2026.06.04 |
|---|---|
| 아파트 매매 실거래가 데이터 수집 (0) | 2026.06.01 |
| 아파트 매매 실거래가 지도 (0) | 2026.05.26 |
| 정기예금 상품 목록 입력하기 (0) | 2026.05.23 |
| 주요 금리지표 데이터 입력하기 (0) | 2026.05.20 |