Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Seaborn - 선 그래프(lineplot)로 여러 열을 포함한 시계열 플롯 그리기

데이터 분석에서 여러 개의 열(컬럼)을 하나의 시계열 플롯에 함께 표현하면 추세를 한눈에 비교할 수 있어 매우 유용합니다. Python의 Seaborn 라이브러리에서는 lineplot() 함수를 사용하여 손쉽게 선 그래프 형태의 시계열 플롯을 만들 수 있습니다.

1. 필요한 라이브러리 불러오기

먼저 시각화와 데이터 처리에 필요한 라이브러리들을 임포트합니다.

import seaborn as sb
import pandas as pd
import matplotlib.pyplot as plt
  • seaborn : 통계 기반 데이터 시각화 라이브러리로, lineplot() 함수를 제공합니다.
  • pandas : DataFrame을 생성하고 날짜 데이터를 다루는 데 사용됩니다.
  • matplotlib.pyplot : 그래프의 라벨 설정, 화면 출력 등 세부 조작을 담당합니다.

2. DataFrame 생성하기

여러 열을 포함하는 샘플 DataFrame을 만들어 보겠습니다. 이 예제에서는 구매 날짜(Date_of_Purchase)를 기준으로 판매 수량(Units Sold)과 반품 수량(Units Returned)이라는 두 개의 열을 가진 데이터를 사용합니다.

dataFrame = pd.DataFrame({
    'Date_of_Purchase': ['2018-07-25', '2018-10-25', '2019-01-25',
                         '2019-05-25', '2019-08-25', '2020-09-25',
                         '2021-03-25'],
    'Units Sold': [98, 77, 51, 70, 70, 87, 76],
    'Units Returned': [60, 50, 40, 57, 62, 51, 60]
})

3. 여러 열에 대한 시계열 플롯 그리기

시계열 플롯은 x축에 날짜 열을, y축에 각각의 수치 열을 지정하여 lineplot()을 호출하면 됩니다. 두 개의 열을 같은 그래프 위에 그리려면 함수를 연속해서 호출하기만 하면 됩니다.

sb.lineplot(x="Date_of_Purchase", y="Units Sold", data=dataFrame)
sb.lineplot(x="Date_of_Purchase", y="Units Returned", data=dataFrame)

Seaborn은 자동으로 서로 다른 색상을 적용해 주기 때문에, 두 선이 한 그래프에서 명확하게 구분됩니다.

전체 예제 코드

지금까지의 내용을 하나로 합친 전체 코드는 다음과 같습니다.

import seaborn as sb
import pandas as pd
import matplotlib.pyplot as plt

# DataFrame 생성
dataFrame = pd.DataFrame({
    'Date_of_Purchase': ['2018-07-25', '2018-10-25', '2019-01-25',
                         '2019-05-25', '2019-08-25', '2020-09-25',
                         '2021-03-25'],
    'Units Sold': [98, 77, 51, 70, 70, 87, 76],
    'Units Returned': [60, 50, 40, 57, 62, 51, 60]
})

# 여러 열에 대한 시계열 플롯
sb.lineplot(x="Date_of_Purchase", y="Units Sold", data=dataFrame)
sb.lineplot(x="Date_of_Purchase", y="Units Returned", data=dataFrame)

# y축 라벨 설정
plt.ylabel("Units Returned / Units Sold")

plt.show()

실행 결과

위 코드를 실행하면 x축에는 구매 날짜가, y축에는 수량이 표시된 시계열 선 그래프가 출력됩니다. Units Sold(판매 수량)와 Units Returned(반품 수량) 두 개의 선이 서로 다른 색상으로 함께 그려져, 기간별 판매와 반품 추세를 직관적으로 비교할 수 있습니다.

이처럼 lineplot()을 여러 번 호출하는 방법 외에도, 데이터를 long format으로 변환한 후 hue 파라미터를 활용하면 더 많은 열을 한 번에 깔끔하게 시각화할 수도 있습니다.