Pandas 기초

파이썬에서 표 형태의 데이터를 탐색하고 분석하는데 사용하는 판다스 라이브러리 사용법을 알아봅니다.


수강중

17. 날짜와 시간

동영상이 없는 텍스트 강의 자료입니다.

판다스에서 날짜와 시간을 다루는 방법을 알아보겠습니다.

import pandas as pd

문자열을 날짜와 시간으로 바꾸기

판다스에서는 날짜와 시간을 나타내기 위해 Timestmap라는 자료형을 사용합니다. 문자열로 표시된 날짜와 시간을 Timestamp로 바꾸려면 to_datetime 함수를 사용합니다. 아래는 2020년 2월 12일 15시 34분을 Timestamp로 변환한 것입니다.

pd.to_datetime('2020-02-12 15:34')
Timestamp('2020-02-12 15:34:00')

일정 기간의 날짜 만들기

date_range 함수로 일정 기간의 날짜들을 만들 수 있습니다. 다음은 2020년 2월 12일부터 7일간의 날짜입니다.

pd.date_range('2020-02-12', periods=7)
DatetimeIndex(['2020-02-12', '2020-02-13', '2020-02-14', '2020-02-15',
               '2020-02-16', '2020-02-17', '2020-02-18'],
              dtype='datetime64[ns]', freq='D')

freq를 이용해 날짜의 간격을 지정할 수 있습니다. 다음은 2020년 2월 12일부터 1주일 간격으로 7주간의 날짜입니다.

pd.date_range('2020-02-12', periods=7, freq='W')
DatetimeIndex(['2020-02-16', '2020-02-23', '2020-03-01', '2020-03-08',
               '2020-03-15', '2020-03-22', '2020-03-29'],
              dtype='datetime64[ns]', freq='W-SUN')

간격을 나타내는 주요 기호는 다음과 같습니다.

  • D: 1일 간격
  • W: 1주 간격
  • M: 1개월 간격
  • A: 1년 간격

더 많은 기호는 링크를 참고하세요.

날짜, 시간에서 일부 정보만 추출

날짜, 시간에서 일부 정보만 추출하는 방법을 알아보겠습니다. 먼저 2020년 1월 2일 3시 45분과 2021년 12월 24일 23시 59분의 날짜, 시간을 만듭니다.

x = pd.to_datetime(['2020-01-02 03:45', '2021-12-24 23:59'])

.year로 연도만 추출할 수 있습니다.

x.year
Int64Index([2020, 2021], dtype='int64')

.month는 월

x.month
Int64Index([1, 12], dtype='int64')

.day는 일

x.day
Int64Index([2, 24], dtype='int64')

.weekay는 요일입니다. 0이 월요일, 1이 화, 2이 수, 3가 목, 4가 금, 5이 토, 그리고 6이 일요일입니다.

x.weekday
Int64Index([3, 4], dtype='int64')

.hour는 시

x.hour
Int64Index([3, 23], dtype='int64')

.minute은 분입니다.

x.minute
Int64Index([45, 59], dtype='int64')

기간 구하기

날짜와 날짜를 빼면 날짜 간격을 구할 수 있습니다.

diff = x - pd.to_datetime('2020-02-12 15:39')

2020년 1월 2일은 2020년 2월 12일보다 42일 전이고,2021년 12월 24일은 681일 후입니다.

diff.days
Int64Index([-42, 681], dtype='int64')

기간 더하기

기간을 나타낼 때는 Timedelta를 사용합니다. 아래 예는 기존의 날짜에 15일씩 더하는 예입니다.

x + pd.Timedelta(days=15)
DatetimeIndex(['2020-01-17 03:45:00', '2022-01-08 23:59:00'], dtype='datetime64[ns]', freq=None)