ABC부트캠프: Day7[인구 공공데이터 분석]
ABC 부트캠프 [인구 공공 데이터 분석]
기온 공공데이터를 활용한 기온 분석에 이어서
인구 공공데이터를 활용한 인구구조 분석을 진행해보도록 한다
인구 공공데이터 내려받기
[연령별 인구현황]-[통계표]-[조회기간 설정]-[남여 구분 체크 해제]
[연령 구분 단위 ‘1세’ ]-[만 연령구분 0세~ 100세 이상 설정]-[검색]
[전체읍면동현황 체크]-[csv파일 다운로드]
우리 동네 인구 구조 시각화 알고리즘 설계
-
인구 데이터 파일을 읽어온다.
-
전체 데이터에서 한 줄씩 반복해서 읽어온다.
-
우리 동네에 대한 데이터인지 확인한다.
-
우리 동네일 경우 0세부터 100세 이상까지의 인구수를 순서대로 저장한다.
-
저장된 연령별 인구수 데이터를 시각화한다.
인구 데이터가 준비되었다면 본격적으로 colab 환경에서 데이터 분석을 진행해보자!
인구 공공 데이터 준비하기
import csv
# 1) 파일 열기
f = open('/content/201902_201902_연령별인구현황_월간.csv')
data = csv.reader(f)
# 2) 데이터 한줄씩 출력
for row in data:
print(row)
# 3) 파일 닫기
f.close()
신도림 데이터 확인하기
print('서울특별시 구로구 신도림동(1153051000)' == '신도림동') # False
print('서울특별시 구로구 신도림동(1153051000)' in '신도림동') # False
print('신도림동' in '서울특별시 구로구 신도림동(1153051000)') # True(반대로 넣어줌)
in 연산자를 활용해 신도림 데이터만 추출
import csv
# 1) 파일 열기
f = open('/content/201902_201902_연령별인구현황_월간.csv')
data = csv.reader(f)
# 2) 데이터 한줄씩 출력
for row in data:
if '신도림동' in row[0] : # 읍면동 조건
print(row[3:]) # 0~100세 정보
print(len(row[3:])) # 0~100세 데이터 수
# 3) 파일 닫기
f.close()
우리 동네 연령별 인구수 result 리스트에 저장(시각화)
import csv
import matplotlib.pyplot as plt
# 1) 연령별 인구수 리스트 선언
result = []
# 2) 파일 열기
f = open('/content/201902_201902_연령별인구현황_월간.csv')
data = csv.reader(f)
# 3) 데이터 한줄씩 출력
for row in data:
if '신도림동' in row[0] : # 읍면동 조건
for i in row[3:] :
result.append(int(i)) # 정수형 출력
# 4) 파일 닫기
f.close()
# 5) 인구구조 시각화
plt.title('신도림동의 인구구조')
plt.style.use('ggplot')
plt.plot(resul
사용자 입력(동)을 통한 인구구조 시각화 하기
import csv
import matplotlib.pyplot as plt
# 1) 연령별 인구수 리스트 선언
result = []
dong = input('인구구조를 확인하고 싶은 동네명(동) 입력하세요 : ')
# 2) 파일 열기
f = open('/content/201902_201902_연령별인구현황_월간.csv')
data = csv.reader(f)
# 3) 데이터 한줄씩 출력
for row in data:
if dong in row[0] : # 읍면동 조건
for i in row[3:] :
result.append(int(i.replace(",",""))) # 정수형 출력
break
# 4) 파일 닫기
f.close()
# 5) 인구구조 시각화
plt.title(dong+'의 인구구조')
plt.style.use('dark_background')
plt.plot(result)
plt.show()
두개의 동네의 인구구조 비교하기
import csv
import matplotlib.pyplot as plt
# 1) 연령별 인구수 리스트 선언
result1 = []
result2 = []
dong1 = input('인구구조를 확인하고 싶은 동네명(동) 입력하세요 : ')
dong2 = input('인구구조를 확인하고 싶은 다른 동네명(동) 입력하세요 : ')
# 2) 파일 열기
f = open('/content/201902_201902_연령별인구현황_월간.csv')
data = csv.reader(f)
# 3) 데이터 한줄씩 출력
for row in data:
if dong1 in row[0] : # 읍면동 조건
for i in row[3:] :
result1.append(int(i.replace(",",""))) # 정수형 출력
elif dong2 in row[0] : # 읍면동 조건
for j in row[3:] :
result2.append(int(j.replace(",",""))) # 정수형 출력
break
# 4) 파일 닫기
f.close()
# 5) 인구구조 시각화
plt.title('%s의 인구구조와 %s의 인구구조 비교'% (dong1, dong2))
plt.style.use('dark_background')
plt.plot(result1, color = 'b' , label = '%s의 인구구조' % dong1 )
plt.plot(result2, color = 'r' , label = '%s의 인구구조' % dong2 )
plt.legend()
plt.show()
다른 지역의 인구구조 비교하기
import csv
import matplotlib.pyplot as plt
# 1) 연령별 인구수 리스트 선언
result1 = []
result2 = []
address1 = input('인구구조를 확인하고 싶은 지역을 입력하세요 : ')
address2 = input('인구구조를 확인하고 싶은 다른 지역을 입력하세요 : ')
# 2) 파일 열기
f = open('/content/201902_201902_연령별인구현황_월간.csv')
data = csv.reader(f)
# 3) 데이터 한줄씩 출력
for row in data:
split_address = row[0].split('(')[0].strip() # strip()은 공백 제거
if split_address == address1 :
for i in row[3:] :
result1.append(int(i.replace(",",""))) # 정수형 출력
if split_address == address2 :
for i in row[3:] :
result2.append(int(i.replace(",",""))) # 정수형 출력
# 4) 파일 닫기
f.close()
# 5) 인구구조 시각화
plt.title('%s의 인구구조와 %s의 인구구조 비교'% (address1, address2))
plt.style.use('dark_background')
plt.plot(result1, color = 'b', label = '%s의 인구구조' % address1)
plt.plot(result2, color = 'r', label = '%s의 인구구조' % address2)
plt.legend()
plt.show()
row[0].split('(')[0].strip()
는
데이터 첫번째 요소의 괄호(‘(‘) 이후
그 요소안의 데이터 공백을 없애는 코드이다.
strip() 함수는 문자열 시작과 끝 공백을 제거하는 함수이다.
이렇게 서울특별시 강남구와 대전광역시의 인구 구조를 비교해 볼 수 있다
댓글남기기