우리 동네의 인구 구조 시각화 알고리즘
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 |