Notice
Recent Posts
Recent Comments
관리 메뉴

안까먹을라고 쓰는 블로그

[Python] 모두의 데이터분석 with 파이썬 - 코드2 (인구통계데이터 + matplot) 본문

Language/Python

[Python] 모두의 데이터분석 with 파이썬 - 코드2 (인구통계데이터 + matplot)

YawnsDuzin 2019. 10. 21. 19:16

 

반응형

인구통계정보

https://mois.go.kr/frt/a01/frtMain.do

 

행정안전부 대표 누리집

행정안전부 홈페이지에 오신것을 환영합니다.

mois.go.kr

 - "정책자료" - "통계" - "주민등록 인구통계" - "연령별 인구현황" - "통계표"

         조회기간 : 2019년 1월~ 2019년 1월

         구분 : 남,여 구분

         정렬순서 : 행정기관코드, 오름차순

         연령구분단위 : 1세

          만 연령구분 : 0, 100이상

     "검색" 후 " 전체읍면동현황" 체크 후, "csv 파일 다운로드"

    파일명을 "gender.csv"로 변경

 

import csv
f = open('gender.csv')
data = csv.reader(f)
m = []
f = []

for row in data:
    if '신도림' in row[0]:
        for i in range(0, 101):
            m.append(int(row[i+3]))
            f.append(int(row[-(i+1)]))
f.reverse()
import csv
f = open('gender.csv')
data = csv.reader(f)
m = []
f = []

for row in data:
    if '신도림' in row[0]:
        for i in row[3:104]:
            m.append(-int(i))
        for i in row[106:]:
            f.append(int(i))
            
import matplotlib.pyplot as plt
plt.rc('font', family = 'Malgun Gothic')
plt.rcParams['axes.unicode_minus'] = False
plt.title('신도림 지역의 남녀 성별 인구 분포')
plt.barh(range(101), m, label = '남성')
plt.barh(range(101), f, label = '여성')
plt.legend()
plt.show()

실행 결과

 

import csv
f = open('gender.csv')
data = csv.reader(f)

m = []
f = []

name = input('찾고 싶은 지역의 이름을 알려주세요 : ')

for row in data:
    if name in row[0]:
        for i in row[3:104]:
            m.append(-int(i))
        for i in row[106:]:
            f.append(int(i))

            
import matplotlib.pyplot as plt
plt.style.use('ggplot')
plt.figure(figsize = (10, 5), dpi = 300)
plt.rc('font', family = 'Malgun Gothic')
plt.rcParams['axes.unicode_minus'] = False
plt.title(name + '지역의 남녀 성별 인구 분포')
plt.barh(range(101), m, label = '남성')
plt.barh(range(101), f, label = '여성')
plt.legend()
plt.show()

실행 결과

 

import csv
f = open('gender.csv')
data = csv.reader(f)

m = []
f = []

name = input('찾고 싶은 지역의 이름을 알려주세요 : ')
for row in data:
    if name in row[0]:
        for i in row[3:104]:
            m.append(-int(i))
        for i in row[106:]:
            f.append(int(i))
        
        break
            
print(len(m), len(f))

import matplotlib.pyplot as plt

plt.style.use('ggplot')
plt.figure(figsize = (10, 5), dpi = 300)
plt.rc('font', family = 'Malgun Gothic')
plt.rcParams['axes.unicode_minus'] = False
plt.title(name + ' 지역의 남녀 성별 인구 분포')
plt.barh(range(101), m, label = '남성')
plt.barh(range(101), f, label = '여성')
plt.legend()
plt.show()

실행 결과

 

import csv

f = open('gender.csv')
data = csv.reader(f)

size = []
name = input('찾고 싶은 지역의 이름을 알려주세요 : ')

for row in data:
    if name in row[0]:
        m = 0
        f = 0
        for i in range(101):
            m += int(row[i + 3])
            f += int(row[i + 106])
        break
        
size.append(m)
size.append(f)
print(size)

실행 결과

 

import csv

f = open("gender.csv")
data = csv.reader(f)
size = []

name = input("찾고 싶은 지역의 이름을 알려주세요 : ")

for row in data:
    if name in row[0]:
        m = 0
        f = 0
        for i in range(101):
            m += int(row[i + 3])
            f += int(row[i + 106])
        break
        
size.append(m)
size.append(f)
print(size)

import matplotlib.pyplot as plt

plt.rc('font', family = 'Malgun Gothic')
color = ['crimson', 'darkcyan']
plt.axis('equal')
plt.pie(size, labels = ['남', '여'], autopct = '%.1f%%', colors = color, startangle = 80)
plt.title(name + ' 지역의 남녀 성별 비율')
plt.show()

실행 결과

 

import csv

f = open('gender.csv')
data = csv.reader(f)

size = []

name = input('찾고 싶은 지역의 이름을 알려주세요 : ')

for row in data:
    if name in row[0]:
        m = 0
        f = 0
        for i in range(101):
            m += int(row[i + 3])
            f += int(row[i + 106])
        break
        
size.append(m)
size.append(f)

import matplotlib.pyplot as plt
plt.rc('font', family = 'Malgun Gothic')
color = ['crimson', 'darkcyan']
plt.axis('equal')

plt.pie(size, labels = ['남', '여'], autopct = '%.1f%%', colors = color, startangle = 90)
plt.title(name + ' 지역의 남녀 성별 비율')
plt.show()

실행 결과

 

import csv
f = open('gender.csv')
data = csv.reader(f)
m = []
f = []

name = input('궁금한 동네를 입력해주세요 : ')
for row in data:
    if name in row[0]:
        for i in range(3, 104):
            m.append(int(row[i]))
            f.append(int(row[i + 103]))
        break
        
import matplotlib.pyplot as plt

plt.plot(m, label = 'Male')
plt.plot(f, label = 'Female')
plt.legend()
plt.show()

실행 결과

 

import csv
f = open('gender.csv')
data = csv.reader(f)
result = []

name = input("궁금한 동네를 입력해주세요 : ")
for row in data:
    if name in row[0]:
        for i in range(3, 104):
            result.append(int(row[i]) - int(row[i + 103]))
        break
        
import matplotlib.pyplot as plt

plt.bar(range(101), result)
plt.show()

실행 결과

 

import csv
f = open('gender.csv')
data = csv.reader(f)
m = []
f = []
name = input('궁금한 동네를 입력해주세요 : ')
for row in data:
    if name in row[0]:
        for i in range(3, 104):
            m.append(int(row[i]))
            f.append(int(row[i + 103]))
        break
        
import matplotlib.pyplot as plt
plt.scatter(m, f)
plt.show()

실행 결과

 

import csv
f = open('gender.csv')
data = csv.reader(f)
m = []
f = []

name = input('궁금한 동네를 입력해주세요 : ')
for row in data:
    if name in row[0]:
        for i in range(3, 104):
            m.append(int(row[i]))
            f.append(int(row[i + 103]))
        break
        
import matplotlib.pyplot as plt
plt.scatter(m, f, c = range(101), alpha = 0.5, cmap = 'jet')
plt.colorbar()
plt.plot(range(max(m)), range(max(m)), 'g')
plt.show()

실행 결과

 

import csv
import math
f = open('gender.csv')
data = csv.reader(f)
m = []
f = []
size = []

name = input('궁금한 동네를 입력해주세요 : ')
for row in data:
    if name in row[0]:
        for i in range(3, 104):
            m.append(int(row[i]))
            f.append(int(row[i + 103]))
            size.append(math.sqrt(int(row[i]) + int(row[i + 103])))
        break
        
import matplotlib.pyplot as plt
plt.style.use('ggplot')
plt.rc('font', family = 'Malgun Gothic')
plt.figure(figsize = (10, 5), dpi = 300)
plt.title(name + ' 지역의 성별 인구 그래프')
plt.scatter(m, f, s = size, c = range(101), alpha = 0.5, cmap = 'jet')
plt.colorbar()
plt.plot(range(max(m)), range(max(m)), 'g')
plt.xlabel('남성 인구수')
plt.ylabel('여성 인구수')
plt.show()

실행 결과

반응형
Comments