본문 바로가기

DATA STUDY/모두의 데이터분석 with 파이썬

둘째 마당 - 기온 데이터 다양하게 시각화 UNIT 06

UNIT 06은 데이터를 다양한 관점에서 보는 것이 좋을 수 있다는 말로 시작합니다.

 

지금까지 했던 꺾은선 그래프가 아닌 다른 형태의 그래프를 그려보겠습니다.

 

 

히스토그램

자료 분포를 hist() 함수를 통해 직사각형 모양의 막대 그래프로 나타냅니다.

 

import matplotlib.pyplot as plt
plt.hist([1,1,2,3,4,5,6,6,7,8,10])
plt.show()

 

데이터 분포에 따라 높이가 결정됩니다. 예를 들어 1과 6은 두 개씩 있으니 좀더 높이가 높겠죠?

기온 데이터를 히스토그램으로 표현하기

 

import csv
import matplotlib.pyplot as plt

f = open('seould.csv')
data = csv.reader(f)
next(data)
result = []

for row in data:
    if row[-1] != '':
    	result.append(float(row[-1]))
        
plt.hist(result, bins = 100, color = 'r')
plt.show()

 

같은 데이터를 쓰고 있기 때문에 마지막 부분의 plt.hist 부분을 제외하면 이전에 배우던 것과 동일합니다.

 

bins는 가로축의 구간 개수를 결정합니다. 적당한 수로 설정하는 것이 예쁜 그래프를 만든다고 하네요

기온데이터를 상자 그림으로 표현하기

이번에는 상자 그림(boxplot)으로 표현해보겠습니다.

 

상자 그림은 자료에서 얻어낸 최대값, 최소값, 상위 1/4, 2/4, 3/4에 위치한 값을 보여줍니다.

 

데이터 자체를 보여주지 않아서 좀 어색할 수 있지만 전반적인 데이터 분포 확인이 쉽다는 장점이 있습니다.

 

import matplotlib.pyplot as plt
import random
result = []
for i in ragne(13):
	result.append(random.randint(1, 100))
print(sorted(result))

plt.boxplot(result)
plt.show()

 

전에 보지 못했던 random 모듈의 randint() 함수에 대해 먼저 알아보겠습니다.

 

import random
print(random.randint(1,6))

 

이렇게 작성하면 1부터 6까지 수 중 하나가 출력됩니다.

 

따라서 randint(1,100)이면 1부터 100까지 수 중 하나를 출력하는데 range가 13이니까 총 13개의 수가 출력되겠죠?

 

다시 기온 데이터로 돌아와보겠습니다.

 

import csv
import matplotlib.pyplot as plt

f = open('seould.csv')
data = csv.reader(f)
next(data)
result = []

for row in data:
    if row[-1] != '':
    	result.append(float(row[-1]))
        
plt.boxplot(result)
plt.show()

 

같은 데이터를 상자 그림으로 표현하고 싶으면 마지막 부분만 boxplot으로 바꿔주면 됩니다.

 

이후에 책에서 복잡한 내용이 나오지만 설명을 자세하게 해주고 있으니 어렵지 않게 따라가실 수 있을겁니다.

 

+

hong-yp-ml-records.tistory.com/88

 

[Python] matplotlib stylesheet 종류 및 설정 변경

matplotlib은 파이썬 데이터 분석에서 빼놓을 수 없는 필수 시각화 라이브러리다. seaborn, bokeh 등과 같이 조금은 투박하다고 할 수 있는 matplotlib을 개선(?)한 인터페이스의 시각화 라이브러리가 있지

hong-yp-ml-records.tistory.com

ggplot을 포함한 여러 스프레드 시트에 대한 설명이 되어있는 블로그입니다.