본문 바로가기

Python

Python - 인구 구조가 비슷한 지역 그래프 그리기

# age1.csv 파일을 이용해서 선택한 지역의 인구 구조와 가장 비슷한
# 인구 구조를 가지고 있는 지역의 그래프와 지역을 출력하기
# 선택한 지역은 한 개만 가능하도록 한다. 

 

age1.csv
2.21MB


import numpy as np
import csv
f = open("age1.csv")
data = csv.reader(f)
next(data)
data = list(data)
name = "신림동"
mn = 1
result_name = ''
result = 0 # 가장 비슷한 인구 비율
for row in data :
    if name in row[0] :
        row = list(map((lambda x:x.replace(",","")),row))
        home = np.array(row[3:],dtype=int) / int(row[2])
for row in data :
    row = list(map((lambda x:x.replace(",","")),row))
    away = np.array(row[3:],dtype=int) / int(row[2])
    # 선택한 지역의 수치와 다른 지역 수치의 차의 제곱. : 양수값
    s = np.sum((home-away)**2)
    # s < mn 조건 away 데이터가 현재까지 가장 인구비율이 비슷한 지역 
    # 선택된 지역은 안됨 
    if s < mn and name not in row[0] :
        mn = s
        result_name = row[0] # 다른 지역의 이름 
        result = away        # 다른 지역의 데이터 
import matplotlib.pyplot as plt
plt.style.use('ggplot')
plt.figure(figsize=(10,5),dpi=100)
plt.rc('font',family="Malgun Gothic")
plt.title(name + " 지역과 가장 비슷한 인구 구조를 가진 지역")
# 선택된 지역 그래프 
plt.plot(home, label = name)
# 선택된 지역과 인구 비율이 가장 비슷한 지역 그래프 
plt.plot(result, label = result_name)
plt.legend()
plt.show()