본문 바로가기
Big Data/DataAnalysis & Manipulate

[Pandas] datetime 프로퍼티

by Wikinist 2023. 9. 8.

Pandas의 Series 객체에는 dt 프로퍼티가 있습니다. 이 프로퍼티는 날짜와 시간과 관련된 작업을 수행하는 데 유용한 여러 유용한 기능 및 속성을 제공합니다. dt는 "datetime"의 약자로, Series 내부의 데이터가 날짜 및 시간 관련 정보를 포함하는 경우에 사용됩니다.

dt 프로퍼티의 주요 기능과 속성은 다음과 같습니다.

날짜 및 시간 속성 접근

dt를 사용하여 Series 내의 각 요소에 대한 날짜 및 시간 관련 속성에 쉽게 접근할 수 있습니다. 예를 들어, series.dt.year는 Series 내의 날짜에서 연도를 추출하며, series.dt.month는 월을 추출합니다.

날짜 및 시간 속성 (Attributes)

  • dt.year: 각 요소에서 연도를 추출합니다.
  • dt.month: 각 요소에서 월을 추출합니다.
  • dt.day: 각 요소에서 일(day)을 추출합니다.
  • dt.hour: 각 요소에서 시(hour)를 추출합니다.
  • dt.minute: 각 요소에서 분(minute)을 추출합니다.
  • dt.second: 각 요소에서 초(second)를 추출합니다.
  • dt.microsecond: 각 요소에서 마이크로초(microsecond)를 추출합니다.
  • dt.nanosecond: 각 요소에서 나노초(nanosecond)를 추출합니다.
  • dt.week: 각 요소의 주(week) 번호를 추출합니다.
  • dt.weekday: 각 요소의 요일을 추출합니다 (0은 월요일, 6은 일요일).

날짜 및 시간 연산

dt를 사용하여 Series 내의 날짜와 시간에 대한 연산을 수행할 수 있습니다. 예를 들어, 두 개의 Series를 더하면 해당 날짜와 시간을 합칠 수 있습니다.

날짜 및 시간 함수 (Methods)

  • dt.date(): 각 요소의 날짜 부분을 추출합니다.
  • dt.time(): 각 요소의 시간 부분을 추출합니다.
  • dt.strftime(format): 지정된 형식으로 각 요소를 문자열로 변환합니다.
  • dt.to_period(freq): 각 요소를 주기(예: 'D'는 일, 'M'은 월)로 변환합니다.
  • dt.to_timestamp(freq): 각 요소를 지정된 주기에 해당하는 타임스탬프로 변환합니다.
  • dt.is_leap(): 윤년 여부를 확인합니다.
  • dt.days_in_month: 각 요소의 월별 일수를 반환합니다.
  • dt.is_month_start 및 dt.is_month_end: 월의 시작과 끝을 확인합니다.
  • dt.is_quarter_start 및 dt.is_quarter_end: 분기의 시작과 끝을 확인합니다.
  • dt.is_year_start 및 dt.is_year_end: 연도의 시작과 끝을 확인합니다.

날짜 및 시간 형식 변환

dt를 사용하여 Series 내의 날짜 및 시간을 다른 형식으로 변환할 수 있습니다. 예를 들어, 날짜를 문자열로 변환하거나 반대로 문자열을 날짜로 변환할 수 있습니다.

날짜 및 시간 필터링

dt를 사용하여 Series 내의 날짜와 시간을 기반으로 필터링을 수행할 수 있습니다. 예를 들어, 특정 월에 해당하는 데이터를 선택하거나 특정 기간 내의 데이터를 추출할 수 있습니다.

날짜 및 시간 인덱스

dt를 사용하여 Series를 날짜 및 시간에 따라 인덱싱하고 슬라이싱할 수 있습니다. 이를 통해 시계열 데이터를 다루는 데 매우 편리합니다.

예제

날짜 및 시간 속성 접근

import pandas as pd

data = pd.Series(['2023-09-07 10:30', '2023-09-08 14:45', '2023-09-09 18:15'])
dates = pd.to_datetime(data)

years = dates.dt.year
months = dates.dt.month
days = dates.dt.day
hours = dates.dt.hour
minutes = dates.dt.minute
seconds = dates.dt.second

print(years)
print(months)
print(days)
print(hours)
print(minutes)
print(seconds)

날짜 및 시간 연산

series1 + series2: 두 Series를 더하면 해당 날짜와 시간을 합칠 수 있습니다.

import pandas as pd

data1 = pd.Series(['2023-09-07 10:30', '2023-09-08 14:45'])
data2 = pd.Series(['2023-09-09 18:15', '2023-09-10 09:00'])
dates1 = pd.to_datetime(data1)
dates2 = pd.to_datetime(data2)

# 두 날짜 사이의 시간 간격 계산
time_difference = dates2 - dates1

# 시간 간격을 다른 날짜에 더함
result = dates1 + time_difference
print(result)

날짜 및 시간 형식 변환

series.dt.strftime(format): 지정된 형식으로 날짜 및 시간을 문자열로 변환합니다.

import pandas as pd

data = pd.Series(['2023-09-07 10:30', '2023-09-08 14:45'])
dates = pd.to_datetime(data)

formatted_dates = dates.dt.strftime('%Y-%m-%d %H:%M')
print(formatted_dates)

날짜 및 시간 필터링

series[condition]: 조건을 사용하여 특정 날짜 및 시간을 필터링합니다.

import pandas as pd

data = pd.Series(['2023-09-07 10:30', '2023-09-08 14:45', '2023-09-09 18:15'])
dates = pd.to_datetime(data)

filtered_dates = dates[dates.dt.month == 9]
print(filtered_dates)

날짜 및 시간 인덱스

DataFrame에서 인덱스로 사용하여 시계열 데이터를 다룰 수 있습니다.

import pandas as pd

data = pd.Series([10, 20, 30], index=pd.to_datetime(['2023-09-07', '2023-09-08', '2023-09-09']))
print(data['2023-09-08'])
print(data['2023-09-08':'2023-09-09'])

해당 게시글은 ChatGPT의 도움을 받아 작성되었습니다.