데이터 분석에서는 날짜·시간 컬럼을 자주 만나게 됩니다.
예: 주문일(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 기반)
결론: 날짜·시간은 처음부터 완벽히 외우려 하지 말고, 포맷 코드와 옵션이 있다는 걸 알고 필요할 때 찾아 쓰는 게 핵심입니다
'파이썬 > 데이터프레임 다루기' 카테고리의 다른 글
| Pandas에서 loc와 iloc 슬라이싱 규칙 정리 (0) | 2025.08.31 |
|---|---|
| Python에서 strftime과 strptime 정리하기 (0) | 2025.08.31 |
| Pandas에서 불리언 인덱싱을 더 간단하게! query() 함수 사용법 (1) | 2025.08.30 |
| Pandas 불리언 인덱싱: 연산자 우선순위와 사용 규칙 (0) | 2025.08.30 |
| Pandas 불리언 인덱싱에서 괄호는 언제 써야 할까? (0) | 2025.08.30 |