[데이터 분석] 우리 동네 인구 구조 시각화하기

2024. 1. 29. 21:58·데이터 분석

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

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

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

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

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

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

 

전체 데이터에서 우리 동네 데이터만 출력하기 

0번째 열인 row[0]에 지역명이 저장되어 있으므로 

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

for row in data :
    if '경상남도 진주시 천전동(4817051500)' == row[0]:
        print(row)

 

['경상남도 진주시 천전동(4817051500)', '27,517', '27,517', '98', '94', '95', '102', '128', '119', '141', '161', '186', '188', '209', '204', '230', '195', '239', '250', '247', '195', '253', '305', '305', '392', '461', '561', '495', '471', '437', '365', '406', '373', '367', '333', '290', '255', '226', '243', '248', '244', '253', '272', '286', '311', '323', '341', '303', '390', '352', '395', '453', '457', '487', '473', '492', '518', '505', '488', '425', '443', '438', '348', '430', '508', '504', '440', '401', '417', '438', '415', '377', '355', '360', '293', '274', '309', '294', '289', '273', '206', '258', '210', '253', '221', '178', '190', '144', '117', '100', '101', '69', '57', '45', '31', '19', '26', '16', '5', '9', '9', '2', '2', '8']

 

위 코드와 같이 특정 지역 데이터만 출력이 가능

 

하지만 경상남도 진주시 천전동(4817051500)와 같이 정확하게 지역명을 입력하기 번거로움 

→ in 연산자를 활용하여 쉽게 구현 가능

 

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

for row in data :
    if '천전동' in row[0]:
        print(row)

0 ~ 100세 이상까지의 인구수를 순서대로 저장하기

데이터를 살펴보면 가장 앞 열(row[0]에는 지역명이, 그 다음 두 열(row[1], row[2])에는 해당 지역의 총 인구수가, 그 뒤로는 0~100세 이상까지의 인구수가 순서대로 저장되어 있음 → 리스트의 3번 인덱스부터 끝까지 데이터를 반복해서 읽어오기

 

import csv
f = open('age.csv')
data = csv.reader(f)
result = []                 
for row in data :
    if '천전동' in row[0] :  
        for i in row[3:] :   # 0세부터 끝(100세 이상)까지 모든 연령에 대해 반복하기
            result.append(int(i))
print(result)

 

['98', '94', '95', '102', '128', '119', '141', '161', '186', '188', '209', '204', '230', '195', '239', '250', '247', '195', '253', '305', '305', '392', '461', '561', '495', '471', '437', '365', '406', '373', '367', '333', '290', '255', '226', '243', '248', '244', '253', '272', '286', '311', '323', '341', '303', '390', '352', '395', '453', '457', '487', '473', '492', '518', '505', '488', '425', '443', '438', '348', '430', '508', '504', '440', '401', '417', '438', '415', '377', '355', '360', '293', '274', '309', '294', '289', '273', '206', '258', '210', '253', '221', '178', '190', '144', '117', '100', '101', '69', '57', '45', '31', '19', '26', '16', '5', '9', '9', '2', '2', '8']

 

 

데이터 시각화하기

import csv
import matplotlib.pyplot as plt
f = open('age.csv')
data = csv.reader(f)
result = []                 
for row in data :
    if '천전동' in row[0] :  
        for i in row[3:] :   # 0세부터 끝(100세 이상)까지 모든 연령에 대해 반복하기
            result.append(int(i))
plt.style.use('ggplot')
plt.plot(result)
plt.show()

 

지역의 이름 입력받아 그 지역의 인구 구조 출력하기 

import csv
import matplotlib.pyplot as plt
f = open('age.csv')
data = csv.reader(f)
name = input("인구 구조가 알고 싶은 지역의 이름(읍면동 단위)를 입력해 주세요: ")
result = []                 
for row in data :
    if name in row[0] :  
        for i in row[3:] :   # 0세부터 끝(100세 이상)까지 모든 연령에 대해 반복하기
            result.append(int(i))
plt.style.use('ggplot')
plt.rc('font', family='Malgun Gothic')
plt.title(name+' 지역의 인구 구조')
plt.plot(result)
plt.show()

'데이터 분석' 카테고리의 다른 글

[데이터 분석] 파이 차트, 산점도  (1) 2024.02.07
[데이터 분석] 다양한 형태로 시각화하기 (막대 그래프, 항아리 그래프)  (0) 2024.01.31
[데이터 분석] A열의 한글이 깨져 보일 때 해결 방법  (1) 2024.01.29
[데이터 분석] 기온 변화 그래프 그리기 / 기온 데이터 다양하게 시각화하기  (0) 2024.01.29
[데이터 분석] 데이터 시각화 - 그래프 그리기, 옵션 추가하기  (1) 2024.01.28
'데이터 분석' 카테고리의 다른 글
  • [데이터 분석] 파이 차트, 산점도
  • [데이터 분석] 다양한 형태로 시각화하기 (막대 그래프, 항아리 그래프)
  • [데이터 분석] A열의 한글이 깨져 보일 때 해결 방법
  • [데이터 분석] 기온 변화 그래프 그리기 / 기온 데이터 다양하게 시각화하기
seulll
seulll
개인 공부 / 정리 블로그입니다
  • seulll
    seulll
    seulll
  • 전체
    오늘
    어제
    • 분류 전체보기 (328) N
      • 코딩테스트 (224)
        • programmers (python) (156)
        • 백준 (python) (66)
      • 자료구조 | 알고리즘 (14)
      • 개발 | 프로젝트 (40) N
        • Python (4)
        • Java | Spring (7)
        • Android (4) N
        • Unity (3)
        • API (4) N
      • CS (15)
        • Network (5)
        • SQL (2)
        • OS (4)
      • 데이터 분석 (14)
      • 기타 (12)
  • 블로그 메뉴

    • 홈
    • 태그
    • 글쓰기
    • 설정
  • 링크

    • GitHub
  • 인기 글

  • 태그

    야근 지수
    2 x n 타일링
    티스토리챌린지
    모델 성능 평가
    Greedy
    프로그래머스
    프렌즈4블록
    API
    백엔드 개발자
    오차행렬
    Python
    박스플롯
    데이터분석
    Boxplot
    카카오맵 api
    그리디 알고리즘
    kakao map api
    카카오맵
    바다코끼리
    confusion matrix
    solving environment
    대입 표현식
    백엔드 개발자 역량
    백엔드
    오블완
    asterisk
    웹크롤링
    코딩테스트
    train_test_split
    파이썬
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
seulll
[데이터 분석] 우리 동네 인구 구조 시각화하기
상단으로

티스토리툴바