[데이터 사전 처리/시계열 데이터] 다른 자료형을 시계열 객체로 변환
보통 접하는 많은 시간 데이터들은 별도의 시간 자료형(파이썬 datetime 라이브러리 등)으로 기록되지 않고, 문자열 또는 숫자로 저장되는 경우가 많다.
판다스는 다른 자료형으로 저장된 시간 데이터를 판다스 시계열 객체인 Timestamp로 변환하는 함수를 제공하고 있다.
목차
문자열을 Timestamp로 변환
판다스 to_datetime() 함수를 사용하면 문자열 등 다른 자료형을 판다스 Timestamp를 나타내는 datetime64 자료형으로 변환 가능하다.
예제에서 사용할 'stock-data.csv'는 주식 시장에서 거래되는 A 종목의 거래 데이터를 정리한 csv 파일이다.
# 예제 5-15(1)
import pandas as pd
df = pd.read_csv('stock-data.csv')
print(df.head())
print('\n')
print(df.info())

head() 메소드로 데이터프레임의 일부를 살펴보면, 'Date' 열에 날짜 데이터가 들어 있다.
info() 메소드로 해당 열의 자료형을 확인하면 문자열(object)임을 알 수 있다.
'Date' 열의 날짜 데이터를 판다스 Timestamp 객체로 바꿔본다.
# 예제 5-15(2)
import pandas as pd
df = pd.read_csv('stock-data.csv')
df['new_Date'] = pd.to_datetime(df['Date'])
print(df.head())
print('\n')
print(df.info())
print('\n')
print(type(df['new_Date'][0]))
'Date' 열을 to_datetime() 함수의 인자로 전달하면 문자열(object) 데이터를 datetime64 자료형으로 변환한다.
변환된 데이터를 'new_Date' 열에 담아서 데이터프레임 df에 추가한다.

info() 메소드로 'new_Date' 열에 들어 있는 데이터 값들이 datetime64 자료형임을 확인할 수 있다.
또한 'new_Date' 열에 개별 원소 데이터를 type() 함수로 확인하면 Timestamp 객체라는 것을 알 수 있다.
'new_Date' 열을 데이터프레임 df의 행 인덱스로 설정하고, 필요없어진 'Date' 열을 제거할 것이다.
# 예제 5-15(3)
import pandas as pd
df = pd.read_csv('stock-data.csv')
df['new_Date'] = pd.to_datetime(df['Date'])
df.set_index('new_Date', inplace=True)
df.drop('Date', axis=1, inplace=True)
print(df.head())
print('\n')
print(df.info())

이렇게 시계열 값을 행 인덱스로 지정하면 판다스는 DatetimeIndex로 저장한다. 이처럼 시계열 인덱스 클래스를 지원하기 때문에 시간 순서에 맞춰 인덱싱 또는 슬라이싱하기가 편리하다.
Timestamp를 Period로 변환
판다스 to_period() 함수를 이용하면 일정한 기간을 나타내는 Period 객체로 Timestamp 객체를 변환할 수 있다.
freq 옵션에 기준이 되는 기간을 설정한다.
다음 예제에서 3개의 날짜 데이터를 Timestamp로 변환하고, 기간 옵션을 달리 하여 Period객체를 지정해본다.
# 예제 5-16
import pandas as pd
dates = ['2019-01-01', '2020-03-01', '2021-06-01']
ts_dates = pd.to_datetime(dates)
print(ts_dates)
print('\n')
pr_day = ts_dates.to_period(freq='D')
print(pr_day)
pr_month = ts_dates.to_period(freq='M')
print(pr_month)
pr_year = ts_dates.to_period(freq='A')
print(pr_year)
DatetimeIndex가 PeriodIndex로 변환되고, 자료형은 datetime64에서 period로 변환된다.
freq 옵션을 'D'로 지정할 경우 1일의 기간을 나타내고, 'M'은 1개월의 기간을 뜻한다.
'A'는 1년의 기간을 나타내는데, 1년이 끝나는 12월을 기준으로 삼는다.

※ freq 옵션의 종류
| 옵션 | 설명 | 옵션 | 설명 |
| D | day(1일) | B | business day(휴일 제외) |
| W | week(1주) | H | hour(1시간) |
| M | month end(월말) | T | minute(1분) |
| MS | month begin(월초) | S | second(1초) |
| Q | quater end(분기말) | L | millisecond(1/1,000초) |
| QS | quater begin(분기초) | U | microsecond(1/1,000,000초) |
| A | year end(연말) | N | nanosecond(1/1,000,000,000초) |
| AS | year begin(연초) | ... | ... |
이외에 다른 값들에 대해서는 판다스 사용자 가이드(https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html)를 참고.
Time series / date functionality — pandas 1.5.2 documentation
Time series / date functionality pandas contains extensive capabilities and features for working with time series data for all domains. Using the NumPy datetime64 and timedelta64 dtypes, pandas has consolidated a large number of features from other Python
pandas.pydata.org
![]() |
|
'공부 > 파이썬 머신러닝 판다스 데이터 분석' 카테고리의 다른 글
| [데이터 사전 처리/시계열 데이터] 시계열 데이터 활용 (0) | 2022.12.05 |
|---|---|
| [데이터 사전 처리/시계열 데이터] 시계열 데이터 만들기 (0) | 2022.12.05 |
| [데이터 사전 처리/시계열 데이터] (0) | 2022.12.05 |
| [데이터 사전 처리/정규화] (0) | 2022.12.05 |
| [데이터 사전 처리/범주형(카테고리) 데이터 처리] 더미 변수 (0) | 2022.12.02 |




