▶️ 데이터 : 행정안전부 인구 통계
import csv
import matplotlib.pyplot as plt
# 1) 파일 읽어들이기
f = open('/content/age.csv')
data = csv.reader(f)
result = [] # 리스트 변수
# 2) 데이터 한줄씩 읽기
for row in data:
# 2-1) 신도림만 추출하여 출력
if '신도림' in row[0]: # 중복되는 동이 있을 경우 and 연산자를 이용해 시도를 입력('대전' in row[0] and '삼성동' in row[0])
# 연령 별 인구수 데이터 result 변수에 담기
for i in row[3:]:
result.append(int(i))
# 3) 시각화
plt.figure(dpi=100)
plt.style.use('ggplot') # 격자 무늬 스타일 지정
plt.plot(result)
plt.show()
🔽🔽 결과
city = input("도시 이름을 입력하시오.")
dong = input("동네명(동)을 입력하시오.")
-> 입력받을 변수 지정
if city in row[0] and dong in row[0]:
-> 시와 동을 and 연산자를 이용하여 추출
plt.title(city + ' '+ dong + '의 인구구조')
-> 그래프 타이틀 수정
🔽🔽 결과
address = input("본인의 전체 주소(시 군구 읍면동)을 입력하시오.")
-> 주소 입력 변수
for row in data:
# 2-1) 사용자가 입력한 동 정보 추출하여 출력
if row[0].split('(')[0] == address: # 시 군구 읍면동 정보가 일치하는 정보 추출
# 2-2) 연령 별 인구수 데이터 address 변수에 담기
for i in row[3:]:
result.append(int(i.replace(',', ''))) # replace(A, B)를 통해 ',' 처리
-> for-if문 수정
plt.title(address + '의 인구구조')
-> 그래프 타이틀 수정
result1 = [] # 리스트 변수
result2 = []
address1 = input("비교할 동네의 전체 주소(시 군구 읍면동)을 입력하시오.")
address2 = input("본인의 전체 주소(시 군구 읍면동)을 입력하시오.")
-> 변수 설정
for row in data:
# 2-1) 사용자가 입력한 동 정보 추출하여 출력
if row[0].split('(')[0] == address1: # 시 군구 읍면동 정보가 일치하는 정보 추출
# 2-2) 연령 별 인구수 데이터 address 변수에 담기
for i in row[3:]:
result1.append(int(i.replace(',', ''))) # replace(A, B)를 통해 ',' 처리
if row[0].split('(')[0] == address2: # 시 군구 읍면동 정보가 일치하는 정보 추출
# 2-2) 연령 별 인구수 데이터 address 변수에 담기
for i in row[3:]:
result2.append(int(i.replace(',', ''))) # replace(A, B)를 통해 ',' 처리
-> 각각의 주소를 출력하여 result 변수에 저장
plt.figure(dpi=100)
plt.title(address1 + '과 ' + address2 + '의 인구구조')
plt.plot(result1, 'r', label = address1)
plt.plot(result2, 'b', label = address2)
plt.legend()
plt.show()
-> 시각화
🔽🔽 결과
import csv
import matplotlib.pyplot as plt
# 1) 파일 읽어들이기
f1 = open('/content/age_2019.csv')
f2 = open('/content/age_2020.csv')
f3 = open('/content/age_2021.csv')
f4 = open('/content/age_2022.csv')
data1 = csv.reader(f1)
data2 = csv.reader(f2)
data3 = csv.reader(f3)
data4 = csv.reader(f4)
result1 = [] # 리스트 변수
result2 = []
result3 = []
result4 = []
address = input("알아보고자 하는 지역의 전체 주소(시 군구 읍면동)를 입력해주세요.")
# 2) 데이터 한줄씩 읽기(2019년)
for row in data1:
# 2-1) 사용자가 입력한 주소 정보를 추출하여 출력
if row[0].split('(')[0] == address: # 시 군구 읍면동 정보가 일치하는 정보 추출
# 2-2) 연령 별 인구수 데이터 address 변수에 담기
for i in row[3:]:
result1.append(int(i.replace(',', ''))) # replace(A, B)를 통해 ',' 처리
# 2020년
for row in data2:
# 2-1) 사용자가 입력한 주소 정보를 추출하여 출력
if row[0].split('(')[0] == address: # 시 군구 읍면동 정보가 일치하는 정보 추출
# 2-2) 연령 별 인구수 데이터 address 변수에 담기
for i in row[3:]:
result2.append(int(i.replace(',', ''))) # replace(A, B)를 통해 ',' 처리
# 2021년
for row in data3:
# 2-1) 사용자가 입력한 주소 정보를 추출하여 출력
if row[0].split('(')[0] == address: # 시 군구 읍면동 정보가 일치하는 정보 추출
# 2-2) 연령 별 인구수 데이터 address 변수에 담기
for i in row[3:]:
result3.append(int(i.replace(',', ''))) # replace(A, B)를 통해 ',' 처리
# 2022년
for row in data4:
# 2-1) 사용자가 입력한 주소 정보를 추출하여 출력
if row[0].split('(')[0] == address: # 시 군구 읍면동 정보가 일치하는 정보 추출
# 2-2) 연령 별 인구수 데이터 address 변수에 담기
for i in row[3:]:
result4.append(int(i.replace(',', ''))) # replace(A, B)를 통해 ',' 처리
# 시각화
plt.figure(dpi=100)
plt.title(address + '의 인구구조')
plt.plot(result1, 'r', label = '2019년도 ' + address + ' 인구분포')
plt.plot(result2, 'g', label = '2020년도 ' + address + ' 인구분포')
plt.plot(result3, 'b', label = '2021년도 ' + address + ' 인구분포')
plt.plot(result4, 'y', label = '2022년도 ' + address + ' 인구분포')
plt.legend()
plt.show()
🔽🔽 결과
plt.bar(range(len(result)),result)
-> plot을 bar로 변경하고 range(len())으로 x좌표 범위 설정
+) barh로 변경시 가로 그래프로 변경됨(horizontal)
import csv
import matplotlib.pyplot as plt
import os
# 1) 파일 읽어오기
file_list = os.listdir('/content/') # 디렉토리를 이용하여 파일을 리스트 형태로 저장
print(file_list)
# 변수 생성
result = []
result_1= []
year_1 = input("비교하고자 하는 첫번째 연도를 입력하시오.")
year_2 = input("비교하고자 하는 두번째 연도를 입력하시오.")
address = input("비교할 동네주소명 [시 군 구 읍면동]")
for fl in file_list:
if year_1 in fl:
f_1 = open(fl)
if year_2 in fl:
f_2 = open(fl)
data = csv.reader(f_1)
data1 = csv.reader(f_2)
for row in data:
if row[0].split('(')[0] == address:
for i in row[3:]:
result.append(-int(i.replace(',','')))
for row in data1:
if row[0].split('(')[0] == address:
for i in row[3:]:
result_1.append(int(i.replace(',','')))
plt.figure(dpi=100)
plt.style.use('ggplot') # Bar chart 쓸 때 유의점
plt.barh(range(len(result)), result, label = year_1 + '인구구조')
plt.barh(range(len(result_1)), result_1, label = year_2 + '인구구조') # range => 범위, len => 항목 갯수(나이 1,2,~ 100) ==> range를 항목 개수(나이범위)로
plt.title(address + '의 ' + year_1 + '년과 ' + year_2 + '년의 인구구조 비교')
plt.legend()
plt.show() # barh => bar + horizontal
🔽 결과