PART 08. 데이터 시각화

목차


학습 목표

📖 목차


8.1 그래프 그리기

데이터 시각화는 데이터를 그래프 형태로 표현하여 추세와 특징을 쉽게 파악할 수 있게 한다.

맷플롯립(Matplotlib)

본 예제는 matplotlib을 이용한 시각화 기본 흐름(데이터 준비 → 그래프 함수 호출 → show())을 제시한다.


import matplotlib.pyplot as plt

선 그래프

본 예제는 matplotlib의 pyplot을 이용하여 선 그래프를 그리는 절차를 담는다. x축과 y축에 대응하는 데이터 목록을 준비한 뒤 plot()으로 선을 그리며, title/label을 통해 그래프의 의미를 명확히 한다.


year = [2018, 2019, 2020, 2021, 2022]
gdp = [30000, 31000, 32000, 33000, 34000]

plt.plot(year, gdp)
plt.title("연도별 1인당 GDP")
plt.xlabel("Year")
plt.ylabel("GDP")
plt.show()

여러 개의 선 그래프

본 예제는 matplotlib의 pyplot을 이용하여 선 그래프를 그리는 절차를 담는다. x축과 y축에 대응하는 데이터 목록을 준비한 뒤 plot()으로 선을 그리며, title/label을 통해 그래프의 의미를 명확히 한다.


seoul = [12, 13, 14, 15, 16]
jeju = [15, 16, 17, 18, 19]

plt.plot(year, seoul, label="Seoul")
plt.plot(year, jeju, label="Jeju")
plt.legend()
plt.show()

막대 그래프

본 예제는 범주형 데이터를 막대 그래프로 표현한다. bar()에 항목(범주)과 값 목록을 전달하여 비교를 시각화하며, 필요에 따라 legend(), xticks() 등을 통해 표기를 정돈한다.


season = ["봄", "여름", "가을", "겨울"]
rain = [200, 600, 300, 100]

plt.bar(season, rain)
plt.title("계절별 강수량")
plt.show()

산점도

본 예제는 산점도(scatter plot)로 두 변수의 관계를 시각화한다. 각 점은 (x, y) 한 쌍을 의미하며, 분포 형태를 통해 상관 경향을 관찰할 수 있다.


height = [160, 165, 170, 175, 180]
weight = [50, 55, 65, 70, 80]

plt.scatter(height, weight)
plt.xlabel("키")
plt.ylabel("몸무게")
plt.show()

히스토그램

본 예제는 range() 함수로 반복 횟수를 정한 뒤, for 문으로 동일한 작업을 일정 횟수만큼 수행하는 방법을 보인다. 변수 i는 반복 과정에서 0 또는 지정된 시작값부터 증가하며, 각 반복에서 코드 블록이 한 번씩 실행된다.


import random

data = [random.normalvariate(0,1) for _ in range(1000)]
plt.hist(data, bins=15, alpha=0.7)
plt.show()

8.2 이미지 다루기

이미지 읽고 출력하기

본 예제는 imread()로 이미지 파일을 읽어 배열 형태로 얻고, imshow()로 화면에 출력하는 절차를 보여 준다. axis('off')를 적용하면 축이 숨겨져 이미지가 더 깔끔하게 표시된다.


import matplotlib.pyplot as plt

img = plt.imread("cat1.jpg")
plt.imshow(img)
plt.axis("off")
plt.show()

여러 이미지 출력하기

본 예제는 range() 함수로 반복 횟수를 정한 뒤, for 문으로 동일한 작업을 일정 횟수만큼 수행하는 방법을 보인다. 변수 i는 반복 과정에서 0 또는 지정된 시작값부터 증가하며, 각 반복에서 코드 블록이 한 번씩 실행된다.


imgs = ["cat1.jpg", "dog1.jpg"]

for i in range(2):
    plt.subplot(1,2,i+1)
    plt.imshow(plt.imread(imgs[i]))
    plt.axis("off")

plt.show()

8.3 [플러스 예제] 인기 강좌의 빈도수 그래프

본 예제는 while 문으로 조건 기반 반복을 수행하며, 특정 조건을 만족할 때 break 문으로 반복을 즉시 종료하는 흐름을 보여 준다. 입력값이나 상태 변수를 점검하여 반복을 계속할지 여부를 결정한다.


course = {"회화":0, "문법":0, "독해":0}

while True:
    s = input("희망 강좌 입력(종료): ")
    if s == "종료":
        break
    for c in s.split(","):
        c = c.strip()
        if c in course:
            course[c] += 1

plt.bar(course.keys(), course.values())
plt.title("인기 강좌 조사 결과")
plt.show()