파이썬/데이터프레임 다루기

Pandas에서 다양한 날짜·시간 데이터 다루기

Data Jun 2025. 8. 31. 10:46

 데이터 분석에서는 날짜·시간 컬럼을 자주 만나게 됩니다.
예: 주문일(order_time), 배송일(shipping_time)

 

문제는 데이터가 항상 같은 포맷이 아니라는 점입니다.

  • 2015-01-01 04:54:00
  • 01/20/2015 (월/일/연도)
  • 20/01/2015 (일/월/연도)
  • 2015년 10월 31일 20시 17분 00초

이런 데이터는 문자열로 두면 연산이 불가능하기 때문에, datetime 타입으로 변환해야 합니다. Pandas는 다양한 옵션을 제공해 이런 변환을 쉽게 해줍니다.

 

CSV 불러올 때 datetime으로 지정하기

order_df = pd.read_csv('data/order.csv',
                       parse_dates=['order_time', 'shipping_time'])

옵션

  • dayfirst=True: 일/월/연도 순서 (기본 포맷: 월/일/연도 형식의 데이터와 연도/월/일)
  • yearfirst=True: 2자리 연도로 시작하는 데이터 (예시: 15/02/15)

 

to_datetime()으로 변환하기

특수 포맷은 format 파라미터를 사용합니다

order_df['order_time'] = pd.to_datetime(
    order_df['order_time'],
    format='%Y년 %m월 %d일 %H시 %M분 %S초'
)

% 기호가 붙는 이유

  • strftime/strptime에서 %는 포맷 코드를 의미합니다.
  • % 뒤에 오는 알파벳이 날짜/시간의 특정 요소를 가리킵니다.

 

자주 쓰는 포맷 코드

예: 2017-10-31 16:37:00 → strftime("%d %B %Y, %I:%M %p") → 31 October 2017, 04:37 PM

 

시간대(Timezone) 다루기

시간대 설정

order_df['order_time'] = order_df['order_time'].dt.tz_localize('Asia/Seoul')

시간대 변환

order_df['order_time'] = order_df['order_time'].dt.tz_convert('America/New_York')

UTC 개념 이해하기

  • UTC (Coordinated Universal Time): 전 세계 표준 시간. 영국 그리니치 천문대 시간을 기준으로 함.
  • 지역 시간대는 UTC 기준의 시차(offset) 로 표현됨.

예시

  • 서울: UTC+9 → UTC보다 9시간 빠름
  • 뉴욕: UTC-5(겨울), UTC-4(여름, 서머타임)

즉, 같은 2015-01-01 12:00 UTC라 해도

  • 서울은 2015-01-01 21:00
  • 뉴욕은 2015-01-01 07:00 으로 표시됩니다.

 Pandas의 tz_localize, tz_convert는 이 UTC 기준 시차를 적용하거나 바꿔주는 역할을 합니다.\

 

정리

  • parse_dates, dayfirst, yearfirst → CSV 불러올 때
  • to_datetime(format=…) → 특수 포맷 처리 (여기서 % + 코드로 요소 지정)
  • strftime() → datetime을 원하는 문자열로 변환
  • tz_localize, tz_convert → 시간대 설정과 변환 (UTC 기반)

결론: 날짜·시간은 처음부터 완벽히 외우려 하지 말고, 포맷 코드와 옵션이 있다는 걸 알고 필요할 때 찾아 쓰는 게 핵심입니다