본문 바로가기

Python/Let's Get IT 파이썬 프로그래밍

[Let's Get IT 파이썬 프로그래밍] 5. 그래프 그리기

728x90
반응형

  오늘의 포스트부터는 한 번에 한 단원씩 진행할 것이다. 지금까지 배웠던 이론을 복합적으로 적용시키기 때문에 내용이 많아서 그렇다. 이번 글은 8장의 '그래프 그리기'를 다루고, 320~374페이지에 해당하는 내용이다.

 

  그래프 그리기, 다른 표현으로는 시각화라고도 한다. 아무리 코드를 잘 짰다고 한들 타인과의 커뮤니케이션을 위해서는 일목요연하게 무엇을 나타냈는지 표현할 필요가 있다. Python으로 코드를 작성하고, Tableau나 Power BI 같은 툴로 최종적인 시각화를 하는 케이스가 많다고 하는데, 데이터를 살펴보는 데도 (EDA) 유용하게 쓰일 수 있는 기능이라 배워두면 도움이 된다. 


 

1. 들어가기

 

이번에는 다음의 라이브러리를 활용했다. 

# 라이브러리 불러오기

import random
import numpy as np
import matplotlib.pyplot as plt

 

help(라이브러리명) 명령어로 라이브러리의 구성을 확인할 수 있다.

help(random)

 

2. 그래프 그리기

1) 꺾은선 그래프

 

시계열 데이터를 나타내기 좋은 꺾은선 그래프를 파이썬으로 표현해봤다.

sales = [1, 5, 9, 18, 13]
month = ["Jan", "Apr", "Jun", "Sep", "Dec"]

# 한글로 그래프 제목이나 축제목을 입력하려면, 별도의 옵션을 지정해야 된다.
plt.rc('font', family = 'Malgun Gothic') # Mac은 AppleGothic

# 명령어의 괄호 안에서 shift + tab을 누르면 param 목록을 확인할 수 있다.

plt.figure(dpi = 300, # 해상도
           figsize = (10, 8)) # 그래프 크기
plt.title("Monthly Sales Trend")
plt.plot(month, sales, 
         color = 'g', # 그래프 색 지정
         label = "단위 : 개수" # 범례 설정
        )

# 범례 표시
plt.legend(loc= 'best' # 범례 위치
          ) 

# 축 제목
plt.xlabel('Month')
plt.ylabel('Revenue')

plt.show()

 

'Let's Get IT 파이썬 프로그래밍' 교재에서 리스트를 새로 만드는 경우가 많은데 아래의 함수를 만들어 코딩을 하면 시간을 단축할 수 있다.

 

def ran_num(x, y, z):
    
    test = []

    for i in range(x):
        a = np.random.randint(y, z) 
        test.append(a)  
    
    return test

2-1) 꺾은선 그래프 겹쳐그리기

 

위에서 만든 함수를 사용해 두개의 선이 그려진 그래프를 그려보자.

 

nations = ['korea', 'usa', 'japan', 'china', 'india']

football = ran_num(5, 10, 100)
baseball = ran_num(5, 10, 100)

plt.plot(nations, football, label = "축구", color = 'red')
plt.plot(nations, baseball, label = "야구", color = 'skyblue')
plt.legend(loc = 'best')
plt.show()

 

 

plt.plot을 2번 입력하면, 복수의 선이 그려진다는 것을 알 수 있다.

 

 

3) 막대 그래프

막대 그래프도 꺾은선 그래프와 비슷한 과정의 코드로 그릴 수 있다. 세로형과 가로형은 bar, barh이므로 상황에 따라 알맞게 고르면 된다.

 

em = []

for i in range(10):
    hire = np.random.rand(10) * 100
    em.append(round(hire[i],0))
    
month = np.arange(1,11); month

plt.title('monthly employment')
plt.barh(month, em, color = 'Orange') # bar, barh 상황에 맞게 활용
plt.show()

 

3-1) 막대 그래프 겹쳐 그리기

 

이번 단원에서 가장 난이도가 높은 부분이라 할 수 있다. 0을 기준으로 양수와 음수 파트로 나눠 그래프가 그려지기 때문에 음수 파트에 그려질 그래프의 데이터를 처리해줘야 한다.

 

plt.rcParams['axes.unicode_minus'] = False # 음수부호 인식

for i in range(len(football)):
    football[i] = -football[i] 

plt.title('국가별 스포츠 점수')
plt.barh(nations, football, label = "축구", color = "yellowgreen")
plt.barh(nations, baseball, label = "야구", color = "purple")
plt.legend()
plt.show()

 


원그래프, 산점도, 상자수염, Self Check의 코드도 아래의 링크에서 확인할 수 있다.

 

8장-그래프그리기

 

교재에 있는 것을 따라해보고, 그 다음 자신만의 스타일로 변형해보자!

728x90
반응형