본문 바로가기

Python/데이터 시각화

[Python] 초보자도 따라하는 Line Plot(라인차트) 만들기

반응형

오늘은 데이터 시각화의 시작이라고 할 수 있는 라인차트 만드는 방법에 대해서 알아볼 것이다. 파이썬에서 대표적인 시각화 패키지로 matplotlib과 seaboarn을 사용하여 어떻게 하면 가시성이 좋고, 원하는 선형 그래프를 만들 수 있는지 아주 쉽게 알아보는 것을 목표로 할 것이다. 데이터 시각화할 때 잊지 말아야 할 원칙도 알아보면서 자신의 실력을 키워보는 보는 것도 권장한다. 

 

목차

1. 기초 데이터셋 소개 및 데이터 준비 방법 안내

2. Matplotlib을 활용한 라인차트 그리기

3. Seaborn을 활용한 라인차트 그리기

 

1. 기초 데이터셋 소개 및 데이터 준비 방법

 

오늘 활용할 데이터셋은 한국 기상청에서 아주 쉽게 구할 수 있는 지역별 날씨 데이터이다. 데이터셋은 굳이 가서 찾을 필요가 없도록 준비해 놨으니 편하게 다운로드 받아서 쓰도록 하자. 

kr_weather_utf.csv
0.44MB

 

또한 데이터 전처리가 이 포스팅에 주제가 이니니 미리 전처리를 하는 코드를 알려주고자 한다. 전처리의 핵심은 지역별로 하루 평균의 기온을 단순화해서 표현해주는데 있었다. 말로 설명하면 입만 아프니 아래의 두 사진을 통해 어떻게 처리가 되었는지 이해하면 편할 것이다. 

 

- 전처리 이전 데이터 형태

기상청 데이터 전처리 이전
- 전처리 이후 데이터 형태

전처리 이후의 데이터

 

전처리하는 코드는 생각보다 단순하다. 이것 또한 귀찮을 수 있으니 필요한 사람들은 아래의 코드를 복사 붙여넣기 해서 사용하기를 권장한다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
## 기초 패키지
import pandas as pd
import numpy as np
 
 
## 시각화를 위한 패키지
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
 
 
## 데이터 불러오기
r1 = pd.read_csv('kr_weather_utf.csv')
## Column명 재지정
r1.columns = ['지점''지역명''일시''기온']
 
## 날짜 추출
r1['날짜'= pd.to_datetime(r1.일시).dt.normalize()
 
 
## 날짜 및 지역별로 데이터 정리하기 
df = r1.groupby(['날짜''지역명'])['기온'].mean().to_frame().reset_index()
df.sample(10)
cs

 

 

 

2. Matplotlib을 활용한 라인차트 

 

데이터 시각화할 때 모든 차트에서는 빠져서는 안 될 중요한 사항들이 4가지가 있다. 오늘은 초보자들을 위한 가이드인 만큼 심도있게 다루기보다는 기초적인 것을 가장 깔끔하고 쉽게 다룰 수 있는 방법들 위주로 소개하려고 한다. 

 

2-1) 라인차트의 기본을 지켜주는 가이드

  • plt.plot()을 통한 라인차트(Line Chart) 그리기
    • 기본 패키지 설명
      • 자료 형태만 맞다면, plt.plot()을 통해서 아주 쉽게 라인 차트를 형성할 수 있다. 
      • 또한 2개를 표현하고 싶다면, 단순히 두 줄을 써주면 matplotlib에서 한 번에 두개를 동시에 표출한다. 
    • 그래프에서 반드시 표시해야 할 4가지 파라미터
      • 첫 번째. 모든 차트에는 항상 제목을 설정해야 한다. 
        : 제목을 삽입하기 위한 파라미터는 plt.title() 명령어를 통해서 아주 쉽게 사용할 수 있다. 참고로 pad는 차트와 제목 사이의 공간을 마련해주는 파라미터이다. 

      • 두 번째. X & Y축에 대한 설명을 넣어주고, 단위를 잊지 않도록 주의한다. 
        : 각 축에 대해서 설명하는 것은 필수적이고, 특히 단위를 표시해주는 것을 절대 잊으면 안 된다. 
        plt.label은 각 축의 이름을 설정해주는 파라미터이고, ticks는 각 축의 숫자에 대한 설정을 하는 명령어이다. 

      • 세 번째. 범례(Legend)에 대한 설명을 반드시 삽입한다. 
        : 범례는 특히 2가지 이상의 차트가 혼합되어 있을 때 반드시 필요한 정보이고, plt.legend를 통해서 설정할 수 있다. 범례는 자동적으로 위치를 정해주기도 하지만, 사용자의 설정에 따라 크기 및 위치를 조정할 수도 있다. 

      • 네 번째. plt.grid를 통해서 배경의 기준선을 넣어주도록 한다. 
        : 다른 사람들은 이것이 필요없다고 생각할 수도 있지만, 발전된 데이터 시각화에는 필수적인 요소라고 생각한다. 왜냐하면 원하는 데이터 위치가 X 및 Y축에 어디에 있는지 한 번에 알리기 편하기 때문이다. 
plt plot을 위한 기초 데이터 형태
plt plot을 통해 라인 차트를 완성하기

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
plt.plot(seoul.index, seoul.기온)
plt.plot(busan.index, busan.기온)
 
 
## 첫 번째. 제목을 설정하는 코드
plt.title('주요 도시 기온차 분석', fontsize = 25, pad = 10)
 
 
## 두 번째. X축 설정하기
plt.xlabel('날짜', fontsize = 15)  ## X축 이름을 설정
 
plt.xticks(fontsize = 15          ## 글씨 크기를 설정
          , rotation = 30         ## 회전각도 설정
          )
 
 
 
## Y축 설정하기
plt.ylabel('기온(ºC)', fontsize = 15## y축 이름을 설정
 
plt.yticks( [3,6,9,12]                ## Y축 숫자를 얼마나 표시할지 설정
           ,fontsize = 15            ## 글씨 크기 설정
          )
 
 
 
## 세 번째. 범례 설정(Legend)
plt.legend( ['서울기온''부산기온']
        , fontsize = 12
        , loc = 'upper left'  )
 
 
 
## 네 번째. 배경 Grid 설정하기
plt.grid( alpha = 0.4         ## 투명도 설정 
         , linestyle = '--'   ## 선의 형태 설정
         , color = 'gray'     ## 뒷 배경의 선 색 설정
        );
 
 
cs

 

 

 

 

 

 

3. Seaborn 패키지를 활용한 라인차트

 

 

3-1) Seaborn을 통한 Line Chart 설정하는 방법

 

  • sns.lineplot()을 통한 라인차트(Line Chart) 그리기
    • 기본 패키지 설명
      : sns.lineplot()에서는 반드시 X축 및 Y축 2가지 파라미터를 선언해주어야 한다. 그렇지 않으면 아래와 같은 ValueError를 마주하게 될 것이다. 너무 당황하지 말고, 기초 가이드를 따라주면 이런 실수를 우회할 수 있다. 또한 위에서 설명한 그래프의 기초는 동어 반복이기 때문에 여기에서는 생략하도록 하겠다. 
ValueError: If using all scalar values, you must pass an index

 

코드를 통해서 보면 어떻게 각 파라미터를 설정하는지 아주 쉽게 알 수 있을 것이다. 

 

sns.lineplot을 위한 기초 데이터 형태
sns.lineplot을 통한 라인 차트 설정하기

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
sns.lineplot( x = incheon.index
            , y = incheon['기온']
            )
 
sns.lineplot( x = daegu.index
            , y = daegu['기온']
            )
 
## 제목을 설정하는 코드
plt.title('주요 도시 기온차 분석', fontsize = 25, pad = 10)
 
 
## X축 설정하기
plt.xlabel('날짜', fontsize = 15)  ## X축 이름을 설정
 
plt.xticks(fontsize = 15          ## 글씨 크기를 설정
          , rotation = 30         ## 회전각도 설정
          )
 
 
 
## Y축 설정하기
plt.ylabel('기온(ºC)', fontsize = 15## y축 이름을 설정
 
plt.yticks( [3,6,9,12]                ## Y축 숫자를 얼마나 표시할지 설정
           ,fontsize = 15            ## 글씨 크기 설정
          )
 
 
 
## 범례 설정(Legend)
plt.legend( ['인천기온''대구기온']
        , fontsize = 12
        , loc = 'upper left'  )
 
 
 
## 배경 Grid 설정하기
plt.grid( alpha = 0.4         ## 투명도 설정 
         , linestyle = '--'   ## 선의 형태 설정
         , color = 'gray'     ## 뒷 배경의 선 색 설정
        );
cs

 

 

 

 

반응형