본문 바로가기
AI 기본 과정

Python을 이용한 데이터 분석 - Matplotlib (2)

by 넝구리 2022. 5. 5.

ICT이노베이션스퀘어 AI기본과정(CNU) 교육을 듣고 정리한 내용입니다.

AI기본과정(CNU) 교육 자료를 참고하였습니다.


인구 공공데이터

 

인구 구조 시각화

 

age.csv
2.21MB

 

 

1. 인구 구조 시각화

 

우리 동네의 인구 데이터 출력

import csv

f = open('C:/Users/82109/OneDrive/바탕 화면/age.csv')
population = csv.reader(f)

for row in population:
    if "혜화동" in row[0]:
        print(row)

 

우리 동네의 연령별 인구 수 출력

import csv

f = open('C:/Users/82109/OneDrive/바탕 화면/age.csv')
population = csv.reader(f)

for row in population:
    if "혜화동" in row[0]:
        for i in row[3:]:
            print(i)

 

우리 동네의 연령별 인구 수를 리스트에 저장

import csv

f = open('C:/Users/82109/OneDrive/바탕 화면/age.csv')
population = csv.reader(f)

hyehwa = []

for row in population:
    if "혜화동" in row[0]:
        for i in row[3:]:
            hyehwa.append(int(i))     # 문자 데이터를 정수로 변환하여 hyehwa 리스트에 추가

print(hyehwa)

 

우리 동네의 연령별 인구 수 데이터 시각화

import csv
import matplotlib.pyplot as plt

f = open('C:/Users/82109/OneDrive/바탕 화면/age.csv')
population = csv.reader(f)

hyehwa = []

for row in population:
    if "혜화동" in row[0]:
        for i in row[3:]:
            hyehwa.append(int(i))

plt.style.use("ggplot")     # 격자무늬 스타일 지정
plt.plot(hyehwa)
plt.show()

혜화동 연령별 인구

 

지역명을 입력받아서 연령별 인구 수 데이터 시각화

import csv
import matplotlib.pyplot as plt

f = open('C:/Users/82109/OneDrive/바탕 화면/age.csv')
population = csv.reader(f)

region = input("지역명(읍면동 단위)을 입력하세요:")

result = []

for row in population:
    if region in row[0]:
        for i in row[3:]:
            result.append(int(i))

plt.style.use("ggplot")
plt.plot(result)
plt.show()

 

 

 

인구 구조의 다양한 시각화

 

1. 막대그래프

 

bar(막대를 표시할 위치, 막대의 높이)

import matplotlib.pyplot as plt

plt.bar([0,3,7,9,15], [3,4,5,8,2])
plt.show()

 

막대그래프를 활용한 우리 동네 인구 구조 시각화

import csv
import matplotlib.pyplot as plt

f = open('C:/Users/82109/OneDrive/바탕 화면/age.csv')
population = csv.reader(f)

hyehwa = []

for row in population:
    if "혜화동" in row[0]:
        for i in row[3:]:
            hyehwa.append(int(i))

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

 

수평 막대그래프를 활용한 우리 동네 인구 구조 시각화

import csv
import matplotlib.pyplot as plt

f = open('C:/Users/82109/OneDrive/바탕 화면/age.csv')
population = csv.reader(f)

hyehwa = []

for row in population:
    if "혜화동" in row[0]:
        for i in row[3:]:
            hyehwa.append(int(i))

plt.barh(range(101), hyehwa)
plt.show()

 

 

2. 항아리 모양 그래프

 

gender.csv
4.03MB

 

성별 데이터 저장하기

남성 데이터 : 3 ~ 103번 인덱스 데이터를 순차적으로 저장

여성 데이터 : -1 ~ -101번 인덱스 데이터를 순차적으로 저장한 후 뒤집기

import csv

f = open('C:/Users/82109/OneDrive/바탕 화면/gender.csv')
gender = csv.reader(f)

male = []
female = []

for row in gender:
    if "한남동" in row[0]:
        for i in range(0,101):
            male.append(int(row[i+3]))
            female.append(int(row[-(i+1)]))

female.reverse()

 

성별 데이터를 수평 막대그래프로 시각화

import csv
import matplotlib.pyplot as plt

f = open('C:/Users/82109/OneDrive/바탕 화면/gender.csv')
gender = csv.reader(f)

male = []
female = []

for row in gender:
    if "한남동" in row[0]:
        for i in range(0,101):
            male.append(int(row[i+3]))
            female.append(int(row[-(i+1)]))

female.reverse()

plt.barh(range(101), male)
plt.barh(range(101), female)
plt.show()

 

성별 데이터를 항아리 모양 그래프로 시각화

import csv
import matplotlib.pyplot as plt

f = open('C:/Users/82109/OneDrive/바탕 화면/gender.csv')
gender = csv.reader(f)

region = input("지역명을 입력하세요:")

male = []
female = []

for row in gender:
    if region in row[0]:
        for i in range(0,101):
            male.append(-int(row[i+3]))     # 마이너스 부호를 넣어 음수로 변경
            female.append(int(row[-(i+1)]))

female.reverse()

plt.rc("font", family = "Malgun Gothic")
plt.rcParams["axes.unicode_minus"] = False     # 마이너스 부호 깨짐 현상 해결
plt.title("남녀 성별 인구 분포")
plt.barh(range(101), male, label = "남성")
plt.barh(range(101), female, label = "여성")
plt.legend()
plt.show()