카테고리 없음

[기술 블로그 07] Pandas와 datetime 활용한 시계열 데이터 처리 기초

quiet-ocean 2026. 5. 31. 16:08

<목차>

1. datetime 객체 이해와 기본 활용하기

2. 문자열 데이터를 datetime으로 변환하기

3. 시계열 데이터 불러오기와 시간 정보 추출 및 간격 계산


1. datetime 객체 이해와 기본 활용하기

datetime 라이브러리는 파이썬에서 날짜와 시간을 처리하는 다양한 기능을 제공하는 필수 라이브러리입니다. 이 객체를 사용해서 날짜 데이터를 편리하게 다루고 연산할 수 있습니다.

 

● 라이브러리 불러오기 & 현재 시간 확인

먼저 datetime 라이브러리에서 datetime 객체를 불러옵니다. 현재 날짜와 시간 정보를 확인하고 싶으면 now() 메서드를 사용합니다.

from datetime import datetime

now = datetime.now()
print(now)

 

  원하는 날짜로 객체 생성 및 비교하기

특정 시점의 날짜를 지정하여 객체를 생성할 수도 있습니다.

ex) 1970년 1월 1일로 객체를 생성해 현재 시간과 비교.

t1 = datetime.now()
t2 = datetime(1970, 1, 1)

 

  두 날짜 사이의 시간 차이 계산 (timedelta)

datetime 객체는 수학 연산자를 지원해주기 때문에, 날짜 간의 차이를 직관적으로 계산할 수 있습니다.

t1에서 t2를 빼서 시간 차이를 구하면, 결과는 timedelta 객체로 표현됩니다.

diff = t1 - t2
print(diff)       
print(type(diff)) # <class 'datetime.timedelta'>

 

2. 문자열 데이터를 datetime으로 변환하기

판다스에서 데이터셋을 처음 불러오면 날짜 데이터가 object형으로 인식되는 경우가 많기 때문에 시계열 분석이 가능한 datetime형으로 변환하는 방법을 알아보겠습니다.

 

  판다스 to_datetime() 함수 활용

전에 다뤄봤던 에볼라 데이터셋(country_timeseries.csv)을 예시로 들어보면, 데이터를 불러와 info() 메서드로 확인하면 Date 열이 object형인 것을 볼 수 있습니다. 이를 pd.to_datetime()를 통해 변환한 후 date_dt라는 새로운 열로 저장합니다.

import pandas as pd

ebola = pd.read_csv('/content/drive/MyDrive/codes/data/country_timeseries.csv')

ebola['date_dt'] = pd.to_datetime(ebola['Date'])

 

  format 매개변수로 시간 형식 지정하기

날짜 데이터의 형태를 명확하게 지정하고 싶으면 format 매개변수를 사용합니다. 만약 데이터가 '월/일/년' 형식 구조라면 각 요소를 나타내는 기호(%m, %d, %Y)와 슬래시(/)를 조합해서 

ebola['date_dt'] = pd.to_datetime(ebola['Date'], format='%m/%d/%Y')

이런식으로 지정할 수 있습니다.

형식을 매번 직접 지정하지 않아도 to_datetime()에서 제공하는 매개변수를 쓸 수 있습니다. 

ex) dayfirst=True : '31-05-2026'와 같이 'day'가 가장 앞에 오는 형식

      yearfirst=True : '2026-05-31'과 같이 'year'가 가장 앞에 오는 형식

 

3. 시계열 데이터 불러오기& 시간 정보 추출/ 간격 계산

  데이터 불러올 때 바로 datetime으로 변환하기 

데이터를 불러오고 변환했던 것과 다르게, read_csv() 함수의 parse_dates 매개변수를 사용하면 데이터를 불러오면서 특정 열을 바로 datetime형으로 바꿀 수 있습니다.

ebola = pd.read_csv('/content/drive/MyDrive/codes/data/country_timeseries.csv', parse_dates=['Date'])

 

 

  시간 정보 추출하기

단일 객체 데이터인 경우: .year, .month, .day 속성으로 각각 추출.

d = pd.to_datetime('2026-05-31')
print(d.year)  # 2026
print(d.month) # 05
print(d.day)   # 31

데이터프레임 열(Series) 전체인 경우: dt 속성을 먼저 호출한 뒤 메서드나 속성에 접근.

ebola['year'] = ebola['date_dt'].dt.year

ebola = ebola.assign(
    month = ebola['date_dt'].dt.month,
    day = ebola['date_dt'].dt.day
)

 

  시간 간격 계산하기

datetime 형태로 변환된 열이 있으면 데이터셋 내에서 시간 간격을 쉽게 계산할 수 있습니다.

에볼라 데이터셋의 Day 열: 발병 이후 며칠이 지났는지를 나타내는 변수.

ex) 데이터셋 내에서 가장 오래된 날짜(발병 첫날)를 구하기--> date_dt 열에서 min() 메서드를 호출.

first_day = ebola['date_dt'].min()

발병 첫날과 각 행의 date_dt(각 날짜)의 차이를 계산하면, 데이터셋의 Day 열과 동일하게 '발병 후 몇 일이 지났는지'에 대한 시간 간격 값을 직접 계산할 수 있습니다.