🖥️ IT, 컴퓨터/🐍 Python

[Python] 생활인구 데이터 가공하기 (서울KT 생활인구/노인인구/PANDAS)

김 홍시 2023. 6. 23.
반응형

준비물

https://data.seoul.go.kr/dataList/OA-14979/F/1/datasetView.do

 

열린데이터광장 메인

데이터분류,데이터검색,데이터활용

data.seoul.go.kr

생활인구 데이터 내려받기

 

 

참고

https://kimhongsi.tistory.com/entry/Python-%ED%8C%8C%EC%9D%B4%EC%8D%AC%EC%9C%BC%EB%A1%9C-GIS%ED%95%98%EA%B8%B0-GeoPandas%EB%A1%9C-%EA%B0%84%EB%8B%A8%ED%95%9C-%EC%A7%80%EC%98%A4%ED%94%84%EB%A1%9C%EC%84%B8%EC%8B%B1-%EC%88%98%ED%96%89%ED%95%98%EA%B8%B0-%EC%A2%8C%ED%91%9C%EA%B3%84-%EC%84%A4%EC%A0%95-join-spatial-join-intersect-%EC%A7%80%EB%8F%84-%EA%B7%B8%EB%A6%AC%EA%B8%B0

 

[Python] 파이썬으로 GIS하기 : GeoPandas로 간단한 지오프로세싱 수행하기 (좌표계 설정, join, spatial joi

0. 준비물 실습 시 사용하는 데이터는 (1) 집계구 영역 shp파일, (2) 행정동 shp파일 (3) 집계구 단위 서울 생활인구 데이터 (csv) 세 가지다. https://data.seoul.go.kr/dataList/OA-14979/F/1/datasetView.do 열린데이터

kimhongsi.tistory.com

 

 

파이썬 코드

import pandas as pd
df=pd.read_csv("Geopandas/LOCAL_PEOPLE_20230614.csv", encoding = "CP949")
del df['?"기준일ID"']

df = df.replace("*", "0")  # *을 0으로 치환

통계치가 전부 숫자가 아닌 object로 되어있음을 확인함

 

 

나는 60세 노인 인구를 구하고자 함.

그래서 여자와 남자 모두 60세부터 64세 생활인구수 ~ 70세 이상 생활인구수를 더함.

df_subset= df[  ["시간대구분", "집계구코드","여자60세부터64세생활인구수","여자65세부터69세생활인구수" , "여자70세이상생활인구수",  
                "남자60세부터64세생활인구수","남자65세부터69세생활인구수" , "남자70세이상생활인구수",  ]   ] #대괄호 안에 list의 형태로 넣어주어 여러 열을 불러옴

 

 

통계치가 들어있는 열에 대해서 object를 float로 바꾸기 위해

나머지 열들은 index 처리해줌 

df_subset = df_subset.set_index(['시간대구분', '집계구코드'])

df_subset = df_subset.astype(float)

노인인구라는 새로운 열을 만들어서 6개의 열 값을 합함.

그리고 그 6개의 통계치가 들어있던 열들은 다 삭제함

df_subset['노인인구'] = df_subset['여자60세부터64세생활인구수'] + df_subset['여자65세부터69세생활인구수'] + df_subset['여자70세이상생활인구수'] + df_subset['남자60세부터64세생활인구수'] + df_subset['남자65세부터69세생활인구수'] + df_subset['남자70세이상생활인구수']

del df_subset['여자60세부터64세생활인구수']
del df_subset['여자65세부터69세생활인구수']
del df_subset['여자70세이상생활인구수']
del df_subset['남자60세부터64세생활인구수']
del df_subset['남자65세부터69세생활인구수']
del df_subset['남자70세이상생활인구수']

나는 오전 11시에서 정오 오후 12시까지의 인구분포를 알고 싶으므로 

시간대구분의 11을 활용함

 

그러기위해 index를 다시 되돌려줌

df_subset = df_subset.reset_index(drop=False)
df_subset = df_subset[df_subset['시간대구분'] == 11]

df_subset.to_csv("노인_11시_인구.csv", encoding = "CP949")

 

이 파일을 GIS 프로그램에서 열어 조인해 주었다.

공간 데이터는 아래를 내려받자.

투영 좌표계는 UTM-K (EPSG:5179)이다.

 

 

 

반응형

댓글