데이터분석과 개발

[시계열 시각화] seaborn으로 시계열데이터 그려보기 본문

AI(시계열)/데이터시각화

[시계열 시각화] seaborn으로 시계열데이터 그려보기

긍정적인마인드 2022. 12. 28. 23:56

계절성을 비롯한 시계열 데이터 특성을 눈으로 확인하기 위해서는 시각화가 중요하다고 생각합니다.

matplotlib으로 그릴수도 있지만 좀 더 화려한 시각화를 하기 위해..! seaborn을 써서 기본적인 시계열 데이터 시각화를 정리해보려 합니다.

 

시각화 데이터는 월별 데이터입니다. 

언뜻 보기엔 패턴이 있는거 같기도 하고 없는 거 같기도 하네요

계절적 특성이 있는 확인하기 위해 년도, 월 컬럼을 생성해 주겠습니다.

 

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# 계절성 확인을 위해 년도, 월 컬럼 생성
df['year'] = df.index.year
df['month'] = df.index.month

1. 박스 그래프 (boxplot)

 

(1) 연도별 데이터

 

연도별 추세를 확인할 수 있습니다. 2013년도 까지 증가했다가 증가감소를 반복하고 있는 모습입니다.

 

# 연도별 데이터
plt.figure(figsize=(10,5))
sns.barplot(data=df, x='year', y = 'Total')

 

(2) 연도별 흐름에 따른 월별 데이터

 

위의 연도별 그래프에 각 연도마다 월별 그래프를 추가하였습니다. seaborn의 경우 hue 라는 파라미터를 사용하여 

2007년, 2008년.. 연도흐름에 따라서 1월 2월..12월  각 월 정보를 표시할 수 있습니다.

plt.figure(figsize=(10,5))
sns.barplot(data=df, x='year', y = 'Total',hue='month')

 (3) 월별 데이터

 

각 연도별 1월값의 평균, 2월값의 평균...을 시각화 하였습니다. 1년 기준으로 2월달에만 데이터의 값이 작아지는 모습을 볼 수 있습니다. 하나의 계절성이라고 볼 수 있을 것 같습니다.

plt.figure(figsize=(10,5))
sns.barplot(data=df, x='month', y = 'Total')

4. 월별 흐름에 따른 연 데이터

하나의 연도의 데이터가 1월,2월.. 12월 흐름에 따라 어떻게 움직이는 지 표현한 그래프입니다.

plt.figure(figsize=(10,5))
sns.barplot(data=df, x='month', y = 'Total',hue='year')

 2. 라인 그래프(line plot)

 

(1) 연도별 데이터

연도별로 데이터를 시각화 함으로서 대략적인 추세를 알 수 있습니다.

추세를 보기엔 박스 그래프보다 라인 그래프가 훨씬 보기 쉽네요. 

2013년까지 증가 추세가 있고 그 이후엔 증가감소를 반복하고 있는 것을 알 수 있네요. 

# 전체적인 추세
plt.figure(figsize=(10,5))
sns.lineplot(data=df, x='year', y = 'Total')

 

 

(2) 연도 흐름에 따른 월 데이터

 

1월,2월 .. 12월의 연도별 흐름을 볼 수 있습니다.

각 월별로 비슷한 추세로 움직이지만 2월달이 특히 작은 값인 것을 알 수 있습니다.

# 연도별 월 데이터
plt.figure(figsize=(10,5))
sns.lineplot(data=df, x='year', y = 'Total',hue='month')

(3) 월별 흐름에 따른 연도 데이터

 

색깔이 흐린 연도 2007년~ 2012년 이 다른년도에 비해 값이 작았던 것을 볼 수 있습니다.

이 그래프를 통해 데이터가 확실히 2월달에 값이 작은 계절성을 가진다고 할 수 있겠네요.

# 월별 시각화
plt.figure(figsize=(10,5))
sns.lineplot(data=df, x='month', y = 'Total',hue='year')

지금까지 seaborn 을 통해 시각화를 진행해보았습니다!

더 유용한 시각화가 있다면 차차 포스팅을 통해 정리해보겠습니다. 감사합니다~