goodthings4me.tistory.com
특별시, 광역시가 아니면서 구가 있는 시가 있다. 고양시, 수원시, 성남시, 용인시, 안산시, 안양시, 천안시, 청주시, 전주시, 창원시, 포항시 등이다. 아래 파이썬 코드는 이 시들의 지자체 명칭이 붙어있는 경우, 분리하는 코드이다.
주소 분리할 대상 엑셀 파일
법정동 주소 열을 보면,
- 도로명주소와 다르게 시와 구 명칭이 붙어 있다. '창원마산합포구', '성남수정구'를 도로명주소처럼 '창원시 마산합포구'로 만들고 싶다.
- 하단에 있는 서울의 동대문구, 서대문구 명칭은 그대로 사용해야 한다.
- 엑셀 파일 E열에 SUBSTITUTE() 엑셀 함수 등 여러 함수를 복합적으로 이용하거나 VBA 코드를 짜서 변경할 수도 있지만, 파이썬 코드를 이용해서도 쉽게 바꿀 수 있다.
'성남분당구'를 '성남시 분당구'로 분리하기
import pandas as pd
# 엑셀 파일 불러오기
file_path = './data/k-apt/20241025_단지_기본정보.xlsx'
df = pd.read_excel(file_path, sheet_name='sheet1')
print(df.columns)
print(df.head())
mi_gu = {
'창원마산합포구': '창원시 마산합포구', '창원마산회원구': '창원시 마산회원구', '고양일산동구': '고양시 일산동구',
'고양일산서구': '고양시 일산서구', '고양덕양구': '고양시 덕양구', '성남분당구': '성남시 분당구',
'성남수정구': '성남시 수정구', '성남중원구': '성남시 중원구', '수원권선구': '수원시 권선구',
'수원영통구': '수원시 영통구', '수원장안구': '수원시 장안구', '수원팔달구': '수원시 팔달구',
'안산단원구': '안산시 단원구', '안산상록구': '안산시 상록구', '안양동안구': '안양시 동안구',
'안양만안구': '안양시 만안구', '용인기흥구': '용인시 기흥구', '용인수지구': '용인시 수지구',
'용인처인구': '용인시 처인구', '창원성산구': '창원시 성산구', '창원의창구': '창원시 의창구',
'창원진해구': '창원시 진해구', '전주덕진구': '전주시 덕진구', '전주완산구': '전주시 완산구',
'천안동남구': '천안시 동남구', '천안서북구': '천안시 서북구', '청주상당구': '청주시 상당구',
'청주서원구': '청주시 서원구', '청주청원구': '청주시 청원구', '청주흥덕구': '청주시 흥덕구',
'포항남구': '포항시 남구', '포항북구': '포항시 북구'
}
def process_row(row):
if not row['법정동주소']:
return
parts = str(row['법정동주소']).split(' ', 2)
print(parts)
if len(parts) > 1 and parts[1] in mi_gu:
parts[1] = mi_gu[parts[1]]
row['법정동주소'] = ' '.join(parts)
return row
# 각 행에 대해 process_row 함수 적용
df_processed = df.apply(process_row, axis=1)
print(df_processed)
output_file_path = './data/k-apt/processed_k-apt.xlsx'
df_processed.to_excel(output_file_path, index=False)
print(f"작업완료! '{output_file_path}'.")
- file_path: 엑셀 파일의 경로 지정. '20241025_단지_기본정보.xlsx'라는 파일을 읽어온다.
- pd.read_excel: Pandas 라이브러리를 사용해서 지정된 파일과 시트(sheet1)를 불러온다.
- df: 엑셀 데이터를 판다스 DataFrame 형식( 행과 열로 이루어진 테이블 구조 )으로 저장한다.
- df.columns: DataFrame에 포함된 열 이름을 출력하여 확인할 수 있다.
- df.head(): 판다스 함수인 head()를 통해 상위 5개 행 데이터를 확인한다.
- process_row(): 법정동주소 컬럼의 행 값이 비어 있으면 함수를 종료하고, 값이 있으면 법정동주소를 문자열로 변환한 뒤, 공백 ' '을 기준으로 최대 3부분으로 나눈다. 예: '서울특별시 강남구 역삼동' → ['서울특별시', '강남구', '역삼동']
- if len(part) > 1 ~ 문: split() 함수의 결과는 리스트이기 때문에 parts[1]이 구 이름에 해당하며, mi_gu 딕셔너리에 있으면 대응하는 값으로 변경한다.
- ' '.join(parts): 수정된 구 명칭을 포함해 주소를 다시 하나의 문자열로 결합한다.
- df.apply(): DataFrame의 각 행(axis=1)에 대해 process_row 함수를 적용하여 결과를 새로운 DataFrame df_processed에 저장한다.
- output_file_path: 처리된 데이터를 저장할 파일 경로를 지정한다.
- to_excel(): 결과 DataFrame을 엑셀 파일로 저장한다.
- index=False: DataFrame의 인덱스 열은 저장하지 않도록 설정한다.
주소 변환 결과
K-apt 공동주택관리 정보시스템
K-apt에서 전국의 아파트 단지 정보 데이터를 엑셀로 다운로드 받을 수 있습니다.
'생활(시사)정보 > 유용한 정보들' 카테고리의 다른 글
충북 지역 시군구별 캠핑장 정보 (0) | 2024.08.23 |
---|---|
충남 지역 시군구별 캠핑장 정보 (0) | 2024.08.23 |
전북 지역 시군구별 캠핑장 정보 (0) | 2024.08.23 |
전라남도 지역 시군구별 캠핑장 정보 (0) | 2024.08.23 |
인천시 지역 시군구별 캠핑장 정보 (0) | 2024.08.23 |
댓글