본문 바로가기
2학년 2학기/데이터 사이언스 입문

.dt를 사용하는 이유

by print_soo 2024. 11. 7.

우선 dt의 사용이유를 알기 전에 to_datetime()의 입력 데이터 형태에 따라 반환되는 타입이 뭔지 알아야 한다. 그리고 그 반환 타입에 따라 .dt 사용여부를 확인해보자.

 

to_datetime() - 입력데이터 타입에 따른 반환 타입

1. 단일 String 입력

  • 반환 타입: Timestamp
  • [코드]
date = pd.to_datetime('2023-01-01')
print(type(date))  # <class 'pandas._libs.tslibs.timestamps.Timestamp'>

 

.dt 사용 안함!

 

 

 

2. list 또는 array 입력

  • 반환 타입: DatetimeIndex
  • [코드]
dates = pd.to_datetime(['2023-01-01', '2023-02-01', '2023-03-01'])
print(type(dates))  # <class 'pandas.core.indexes.datetimes.DatetimeIndex'>

 

.dt 사용 안함!

 

 

 

3. series / dataframe입력

  • 반환 타입: datetime64[ns]
  • [코드]
dates_series = pd.to_datetime(pd.Series(['2023-01-01', '2023-02-01', '2023-03-01']))
print(type(dates_series))  # <class 'pandas.core.series.Series'>

# --------------------------------------------------

# 예제 DataFrame 생성
df = pd.DataFrame({
    'date1': ['2023-01-01', '2023-02-01', '2023-03-01'],
    'date2': ['2024-01-01', '2024-02-01', '2024-03-01']
})

# DataFrame을 pd.to_datetime()에 전달
df_transformed = df.apply(pd.to_datetime)
print(df_transformed.dtypes) # <class 'pandas.core.series.Series'>

 

.dt 사용 함!

 

[접근 예시]

import pandas as pd

# datetime 형식의 Series 생성
dates = pd.Series(pd.to_datetime(['2023-01-01', '2023-02-15', '2023-03-31']))

# .dt를 사용하여 연도, 월, 일, 요일 추출
years = dates.dt.year       # 연도 추출
months = dates.dt.month     # 월 추출
days = dates.dt.day         # 일 추출
day_of_week = dates.dt.dayofweek  # 요일 추출 (0=월요일, 6=일요일)

 

 


 

 

요약표

입력 데이터 반환 타입 .dt 사용 여부 예시 사용법
단일 날짜 값 Timestamp ❌ (직접 .year, .month 사용) date.year, date.month
리스트/배열 DatetimeIndex ❌ (직접 .year, .month 사용) dates.year, dates.month
Series Series (datetime64[ns]) ✔️ (.dt로 접근) dates_series.dt.year, dates_series.dt.month