728x90
반응형

age1_utf.csv
1.54MB

# 행안부, 연령별 인구 현황 파일 다운받기, 계, 연령구분단위 1세, 0~100세
import csv
f = open('./age1_utf.csv',encoding="utf8")
data = csv.reader(f)
next(data) # 헤더 제거, 첫줄 읽어버리기
for row in data :
    print(row)
    
['서울특별시  (1100000000)', '9,575,355', '9,575,355', '44,116', '47,612', '51,389', '54,644', '60,226', '66,775', '68,122', '67,105', '72,631', '72,433', '74,702', '69,966', '72,360', '78,681', '74,635', '71,679', '75,052', '80,554', '81,153', '89,544', '108,121', '114,369', '120,701', '133,889', '142,513', '155,641', '160,766', '166,742', '172,551', '170,425', '155,942', '149,727', '146,537', '138,384', '137,327', '138,403', '134,457', '144,175', '151,702', '158,712', '157,393', '155,800', '139,387', '137,722', '136,405', '139,782', '148,291', '158,851', '163,010', '166,672', '171,150', '162,638', '166,009', '149,296', '141,771', '143,737', '145,888', '134,601', '151,699', '143,144', '162,666', '152,287', '142,186', '136,982', '127,836', '123,489', '127,802', '99,709', '99,786', '91,396', '76,633', '85,104', '80,194', '81,207', '79,145', '55,147', '59,598', '56,681', '63,261', '59,700', '46,471', '42,577', '39,035', '33,287', '29,726', '26,231', '21,958', '17,597', '14,591', '12,017', '9,371', '7,894', '6,808', '5,082', '3,741', '2,523', '1,790', '1,469', '1,321', '828', '2,520']
#  인구구조 알고싶은 동 입력
import numpy as np
import csv
import matplotlib.pyplot as plt
f = open('./age1_utf.csv',encoding="utf8")
# 스트림 : 데이터의 이동 통로
# 한번 읽으면 사라짐, 그래서 문제가 될지도, 또 쓰고 싶으면, 별도로 저장해야 함.
data = csv.reader(f)
next(data) # 헤더 제거, 첫줄 읽어버리기
name = input('지역의 이름(읍면동 단위) 입력')

for row in data :
    if name in row[0] :
        name = row[0]
        print(name)
        row = list(map((lambda x : x.replace(',', '')), row)) # 문자열 제거 숫자내부 m 제거해서 정수값 변경가능
        home = np.array(row[3:], dtype = int)
        
plt.style.use('ggplot')        
plt.figure(figsize = (10, 5), dpi = 100)
plt.rc('font', family = 'Malgun Gothic')
plt.title(name + ' 지역의 인구 구조')
plt.plot(home)
plt.show()

# 지역의 이름(읍면동 단위) 입력강남구
# 서울특별시 강남구 (1168000000)

가장 비슷한 인구구조를 가진 그래플와 지역 출력

# 가장 비슷한 인구구조를 가진 그래플와 지역 출력
import numpy as np
import csv
import matplotlib.pyplot as plt
import re
f = open('./age1_utf.csv',encoding="utf8")
# 스트림 : 데이터의 이동 통로
# 한번 읽으면 사라짐, 그래서 문제가 될지도, 또 쓰고 싶으면, 별도로 저장해야 함.
data = csv.reader(f)
next(data) # 헤더 제거, 첫줄 읽어버리기
# name = input('지역의 이름(읍면동 단위) 입력')
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)) # 문자열 제거 숫자내부 m 제거해서 정수값 변경가능
        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) # 차이가 마이너스가 될수도, 절대값 개념
    if s < mn and name not in row[0] :
        mn = s #  mn 저장
        result_name = row[0]
        result = away
        
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()

 

age_14.csv
1.42MB

import numpy as np
import pandas as pd
import csv
import matplotlib.pyplot as plt
import re

df = pd.read_csv('age_14.csv', encoding="cp949", index_col = 0)
print(df.head())
df = df.div(df['총인구수'], axis=0)
del df['총인구수'], df['연령구간인구수']
name = '신림동'
a = df.index.str.contains(name) # 신림동 레코드
df2 = df[a]

plt.rc('font', family = 'Malgun Gothic')
df2.T.plot()
plt.show()

                               총인구수  연령구간인구수     0세     1세     2세     3세  \
행정구역                                                                        
서울특별시  (1100000000)          9857426  9857426  61253  70532  74322  72482   
서울특별시 종로구 (1111000000)        154770   154770    652    794    911    895   
서울특별시 종로구 청운효자동(1111051500)    13272    13272     81     82     90    105   
서울특별시 종로구 사직동(1111053000)       9441     9441     43     63     75     68   
서울특별시 종로구 삼청동(1111054000)       2907     2907     12      4     22     13   

                                4세     5세     6세     7세  ...   91세   92세  \
행정구역                                                     ...               
서울특별시  (1100000000)          71688  78941  75386  75929  ...  5892  4695   
서울특별시 종로구 (1111000000)         859   1046    909   1012  ...   149   115   
서울특별시 종로구 청운효자동(1111051500)     97    116    117    116  ...    12    14   
서울특별시 종로구 사직동(1111053000)       76     81     74     83  ...    11    13   
서울특별시 종로구 삼청동(1111054000)       12     13     20     11  ...     5     2   

                              93세   94세   95세   96세   97세   98세  99세  100세 이상  
행정구역                                                                           
서울특별시  (1100000000)          3589  3501  2569  1851  1436  1010  736     5519  
서울특별시 종로구 (1111000000)         95    79    81    60    46    37   26      226  
서울특별시 종로구 청운효자동(1111051500)     7     7     8     3     5     1    1       17  
서울특별시 종로구 사직동(1111053000)       7     5     7     3     6     4    4       17  
서울특별시 종로구 삼청동(1111054000)       3     3     2     2     0     2    1        7  

[5 rows x 103 columns]

 

 

 

 

반응형

'Data_Science > Data_Analysis_Py' 카테고리의 다른 글

13. Stockprice  (0) 2021.10.26
12. titanic (2  (0) 2021.10.26
10. folium 2  (0) 2021.10.26
9. tips || '21.06.28.  (0) 2021.10.26
8. iris || '21.06.28.  (0) 2021.10.26

+ Recent posts