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

Seaborn으로 X축의 정수를 datetime(날짜·시간) 형식으로 표시하는 방법

Matplotlib 환경에서 Seaborn을 사용하면 X축의 정수(int) 값을 datetime(날짜·시간) 형식으로 변환하여 플롯할 수 있습니다. 특히 밀리초(millisecond) 단위의 타임스탬프를 사람이 읽기 쉬운 날짜 문자열로 바꿀 때 유용합니다. 아래 단계를 따라 해 보세요.

구현 단계

  • 그림(figure) 크기를 설정하고, 서브플롯 사이와 주변의 여백(padding)을 조정합니다.

  • 세 개의 열(column)을 가진 2차원 데이터프레임 df를 생성합니다.

  • X축에 정수 값인 dob(밀리초 단위 타임스탬프)을 두고 countplot을 그립니다.

  • X축 눈금 레이블을 정수에서 datetime 형식의 문자열로 변환하여 설정합니다.

  • plt.show() 메서드를 사용해 그림을 화면에 표시합니다.

예제 코드

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

# 그림 크기 설정
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True

# 3개의 열을 가진 데이터프레임 생성
df = pd.DataFrame([
    [23, 'James', 1259969793926],
    [39, 'Jimmy', 1259969793927],
    [56, 'Jack', 1259969793929],
    [60, 'Tom', 1259969793928],
    [80, 'Tim', 1259969793939]
], columns=['marks', 'names', 'dob'])

# df로 카운트플롯(countplot) 생성
ax = sns.countplot(x="dob", data=df)

# X축 눈금 값을 밀리초 단위 timestamp에서 datetime 문자열로 변환
ax.set_xticklabels(
    [
        pd.to_datetime(tm, unit='ms').strftime('%Y-%m-%d %H:%M:%S')
        for tm in ax.get_xticks()
    ], rotation=45)

# 그래프 표시
plt.show()

코드 설명

  • pd.to_datetime(tm, unit='ms'): 밀리초 단위의 정수 타임스탬프를 pandas의 datetime 객체로 변환합니다.

  • .strftime('%Y-%m-%d %H:%M:%S'): datetime 객체를 '연도-월-일 시:분:초' 형식의 문자열로 포맷팅합니다.

  • rotation=45: 긴 날짜 레이블이 겹치지 않도록 X축 레이블을 45도 회전시킵니다.

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Seaborn으로 X축의 정수를 datetime(날짜·시간) 형식으로 표시하는 방법

참고 사항

최신 버전의 Matplotlib에서는 set_xticklabels()를 먼저 호출하면 경고(warning)가 발생할 수 있습니다. 이 경우 ax.set_xticks(ax.get_xticks())를 먼저 호출한 뒤 레이블을 설정하거나, matplotlib.ticker.FixedLocator를 활용하면 경고 없이 동일한 결과를 얻을 수 있습니다.