3 분 소요

ABC 부트캠프 [인구 공공 데이터 분석]

image

기온 공공데이터를 활용한 기온 분석에 이어서

인구 공공데이터를 활용한 인구구조 분석을 진행해보도록 한다

​

​

인구 공공데이터 내려받기

[연령별 인구현황]-[통계표]-[조회기간 설정]-[남여 구분 체크 해제]

[연령 구분 단위 ‘1세’ ]-[만 연령구분 0세~ 100세 이상 설정]-[검색]

image

[전체읍면동현황 체크]-[csv파일 다운로드]

​

​

우리 동네 인구 구조 시각화 알고리즘 설계

  1. 인구 데이터 파일을 읽어온다.

  2. 전체 데이터에서 한 줄씩 반복해서 읽어온다.

  3. 우리 동네에 대한 데이터인지 확인한다.

  4. 우리 동네일 경우 0세부터 100세 이상까지의 인구수를 순서대로 저장한다.

  5. 저장된 연령별 인구수 데이터를 시각화한다.

​

인구 데이터가 준비되었다면 본격적으로 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

image

​

사용자 입력(동)을 통한 인구구조 시각화 하기

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()

​image

두개의 동네의 인구구조 비교하기

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()

​

​ image

다른 지역의 인구구조 비교하기

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()

image

row[0].split('(')[0].strip() 는

데이터 첫번째 요소의 괄호(‘(‘) 이후

그 요소안의 데이터 공백을 없애는 코드이다.

strip() 함수는 문자열 시작과 끝 공백을 제거하는 함수이다.

​

이렇게 서울특별시 강남구와 대전광역시의 인구 구조를 비교해 볼 수 있다

댓글남기기