내가 사는 우리 동네는 둔산동이다.
둔산동은 대전광역시 서구에 속하며 1,2,3동으로 나눠져있다.
# 우리 동네 인구 구조 시각화 하기
import csv
f = open('/content/age.csv') # 1) 데이터 불러오기
data = csv.reader(f)
for row in data :
print(row)
위에서 보이는 바와 같이 데이터를 불러와 제대로 데이터를 받았는지 출력해본다.
각종 시,군,읍,동이 나열되어 데이터를 보여준다.
하지만 정리되어있지않고 너무 많은 데이터이기 때문에 저절로 고개를 젓게 만든다.
# 우리 동네 인구 구조 시각화 하기
import csv
f = open('/content/age(2019).csv') # 1) 데이터 불러오기
data = csv.reader(f)
# 2) 데이터 한줄씩 읽기
for row in data :
# 둔산동만 추출하여 출력, 중복 -> 중복되는 동이 있을 경우, 사용자에게 시(서울? 대전...) 정보를 추가해서 and 조건 추가
if '대전광역시' in row[0] and '둔산2동' in row[0]:
print(row[0].split('(')[0], row[1:])
그래서 이렇게 '대전광역시', '둔산2동'이라는 조건을 추가해서 값을 출력한다.
이렇게.
그렇다면 다른 동네는 어떨까?
# 우리 동네 인구 구조 시각화 하기
import csv
import matplotlib.pyplot as plt
f = open('/content/age(2019).csv') # 1) 데이터 불러오기
data = csv.reader(f)
result = []
city = input("조회하고 싶은 동네명(동)을 입력하세요. ")
# 2) 데이터 한줄씩 읽기
for row in data :
# 2-1) 사용자가 입력한 정보만 추출하여 출력, 중복 -> 중복되는 동이 있을 경우, 사용자에게 시(서울? 대전...) 정보를 추가해서 and 조건 추가
if city in row[0]:
# 연령별 인구 수 데이터 result 변수에 담기
for i in row[3:]:
result.append(int(i))
# 우리 동네 인구 구조 시각화 하기
# 시각화
plt.rc('font', family='NanumBarunGothic')
plt.figure(dpi = 100)
plt.style.use('ggplot') # 격자 무늬 스타일 지정
plt.plot(result)
plt.title(city + ' 의 인구 구조')
plt.show()
input을 이용하여 사용자가 필요한 동네의 인구 구조 데이터를 선형 그래프로 보여준다.
이렇게.
막대그래프로 보고 싶을때는?
# 우리 동네 인구 구조 시각화 하기
import csv
import matplotlib.pyplot as plt
f = open('/content/age(2019).csv') # 1) 데이터 불러오기
data = csv.reader(f)
result = []
address = input("우리동네 전체 주소(시, 군구, 읍면동)를 입력하세요. ")
# 2) 데이터 한줄씩 읽기
for row in data :
# 2-1) 사용자가 입력한 정보만 추출하여 출력
if row[0].split('(')[0] == address: # 시 군구 읍면동의 정보가 일치하는 정보 추출
# 연령별 인구 수 데이터 result 변수에 담기
for i in row[3:]:
result.append(int(i.replace(',',''))) # i.replace(A,B) -> i의 A값을 B로 변경
# 우리 동네 인구 구조 시각화 하기
# 시각화
plt.rc('font', family='NanumBarunGothic')
plt.figure(dpi = 100)
plt.style.use('ggplot') # 격자 무늬 스타일 지정
plt.bar(range(len(result)),result) # bar(x,y) x,y 둘다 list 형태
plt.title(address + ' 의 인구 구조 그래프')
plt.show()
이렇게.
x축과 y축을 바꾸고 싶을때는 plt.bar(range(len(result)),result)에서 bar뒤에 h를 붙여서 plt.barh()를 사용해준다.
만약
import csv
import matplotlib.pyplot as plt
# 1) 데이터 불러오기
f = open('/content/age(2019).csv')
g = open('/content/age(2020).csv')
h = open('/content/age(2021).csv')
i = open('/content/age(2022).csv')
data_2019 = csv.reader(f)
data_2020 = csv.reader(g)
data_2021 = csv.reader(h)
data_2022 = csv.reader(i)
result_2019 = []
result_2020 = []
result_2021 = []
result_2022 = []
city = input("알고싶은 전체 주소를 입력하세요. ")
# 2) 데이터 한줄씩 읽기
for row in data_2019:
# 2-1) 사용자가 입력한 정보만 추출하여 출력, 중복 -> 중복되는 동이 있을 경우, 사용자에게 시(서울? 대전...) 정보를 추가해서 and 조건 추가
if city in row[0]:
# 연령별 인구 수 데이터 result 변수에 담기
for f in row[3:]:
result_2019.append(int(f.replace(',','')))
for row in data_2020:
if city in row[0]:
for g in row[3:]:
result_2020.append(int(g.replace(',','')))
for row in data_2021:
if city in row[0]:
for h in row[3:]:
result_2021.append(int(h.replace(',','')))
for row in data_2022:
if city in row[0]:
for i in row[3:]:
result_2022.append(int(i.replace(',','')))
# 우리 동네 인구 구조 시각화 하기
# 시각화
plt.figure(dpi = 200)
plt.style.use('ggplot') # 격자 무늬 스타일 지정
plt.plot(result_2019, 'red', label = '2019년 ' + city)
plt.plot(result_2020, 'blue', label = '2020년 ' + city)
plt.plot(result_2021, 'skyblue', label = '2020년 ' + city)
plt.plot(result_2022, 'orange', label = '2022년 ' + city)
plt.title(city + ' ' + "'s population comparing graph")
plt.legend()
plt.show()
이렇게.