우선 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 |
'2학년 2학기 > 데이터 사이언스 입문' 카테고리의 다른 글
10주차 - 실습 (0) | 2024.11.07 |
---|---|
[pandas] 고성능 Pandas: Eval & Query (0) | 2024.11.05 |
[pandas] 날짜 / 시간 데이터 다루기(Time stamp, Time interval, Time duration) (0) | 2024.11.05 |
[pandas] 문자열 Vectorized 연산 (0) | 2024.11.05 |
9주차 - split, apply, pivot table을 이용해서 실습해보기 (0) | 2024.10.31 |