파이썬 날짜 데이터 다루기 (datetime, timedelta, pandas)

728x90

날짜데이터 다루기

 

파이썬을 이용해 데이터 분석을 하다 보면 날짜와 시간을 다루는 일이 매우 빈번하다. 이를 간편하게 처리하기 위해 datetime, timedelta, 그리고 pandas 라이브러리를 활용할 수 있다. 이 글에서는 각각의 사용법을 예시와 함께 자세히 설명한다.

1. datetime 모듈을 사용한 날짜 다루기

datetime 모듈은 파이썬에서 날짜와 시간을 다루는 데 가장 많이 사용되는 표준 라이브러리이다.

이를 통해 날짜 생성, 비교, 형식 변환 등의 다양한 작업을 할 수 있다.

from datetime import datetime

# 현재 날짜와 시간 가져오기
now = datetime.now()
print("현재 날짜와 시간:", now)

 

datetime.now()를 사용하면 현재 시스템의 날짜와 시간을 가져올 수 있다.

이는 데이터 생성 시간을 기록하거나 현재 시점을 기준으로 데이터를 비교하는 데 유용하다.

  • datetime.now(): 시스템의 현재 날짜와 시간을 반환하는 함수로, 데이터의 최신 상태를 파악하거나 기록할 때 사용된다.

 

# 특정 날짜 생성하기
specific_date = datetime(2023, 10, 15, 14, 30)
print("특정 날짜와 시간:", specific_date)

 

datetime 객체를 생성할 때는 연도, 월, 일, 시, 분 등을 지정할 수 있다.

위 예시에서는 2023년 10월 15일 14시 30분을 특정하여 생성하였다.

  • datetime(year, month, day, hour, minute): 지정된 연도, 월, 일, 시, 분을 기반으로 datetime 객체를 생성한다. 특정 시점에 대한 객체를 생성하여 이벤트를 관리하거나 기록할 때 유용하다.

 

# 문자열을 datetime 객체로 변환하기
date_str = "2024-10-15 14:30:00"
date_obj = datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S")
print("문자열을 datetime 객체로 변환:", date_obj)

 

datetime.strptime() 함수는 문자열을 datetime 객체로 변환할 때 사용된다.

예를 들어, 데이터베이스에서 가져온 날짜가 문자열 형태일 때 이를 datetime 객체로 변환해 날짜 계산 등을 수행할 수 있다.

  • datetime.strptime(date_string, format): 지정된 형식(format)에 맞추어 문자열(date_string)을 datetime 객체로 변환한다. 문자열로 저장된 날짜 데이터를 처리하거나 계산할 때 사용된다.

 

# datetime 객체를 문자열로 변환하기
formatted_date = date_obj.strftime("%Y/%m/%d %H:%M")
print("datetime 객체를 문자열로 변환:", formatted_date)

datetime.strftime() 함수는 datetime 객체를 특정 형식의 문자열로 변환할 때 사용된다.

이 방법을 통해 날짜를 사람이 읽기 쉬운 형식으로 출력하거나 파일 이름 등에 활용할 수 있다.

  • datetime.strftime(format): datetime 객체를 지정된 형식의 문자열로 변환한다. 이는 날짜 데이터를 보고서나 로그 파일에 기록할 때 매우 유용하다.

2. timedelta를 사용한 시간 간격 계산

timedelta 객체는 날짜와 시간 간격을 표현하는 데 사용된다.

주로 날짜 간의 차이를 계산하거나, 특정 날짜에 시간 간격을 더하거나 뺄 때 유용하다.

from datetime import datetime, timedelta

# 현재 날짜와 시간 가져오기
now = datetime.now()

# 5일 후의 날짜 계산하기
five_days_later = now + timedelta(days=5)
print("5일 후의 날짜:", five_days_later)

 

timedelta(days=5)는 현재 날짜에 5일을 더한 결과를 계산한다. 이를 통해 미래의 특정 날짜를 쉽게 구할 수 있다.

  • timedelta(days=n): 지정된 일수를 나타내는 timedelta 객체를 생성한다. 날짜 간의 간격을 계산하거나 미래의 특정 시점을 예측할 때 사용된다.

 

# 3시간 30분 전의 시간 계산하기
three_hours_before = now - timedelta(hours=3, minutes=30)
print("3시간 30분 전의 시간:", three_hours_before)

 

timedelta 객체를 이용하면 특정 시간 간격을 더하거나 뺄 수 있다. 위 예시에서는 현재 시간에서 3시간 30분을 빼서 이전의 시점을 계산하였다.

  • timedelta(hours=n, minutes=m): 지정된 시간과 분을 나타내는 timedelta 객체를 생성한다. 과거의 특정 시점을 계산하거나 기록할 때 유용하다.

 

# 두 날짜 사이의 차이 계산하기
start_date = datetime(2024, 10, 10)
end_date = datetime(2024, 10, 15)
difference = end_date - start_date
print("두 날짜 사이의 차이 (일):", difference.days)

 

datetime 객체의 차이는 timedelta 객체로 반환된다. 이를 통해 두 날짜 간의 일수 차이를 계산할 수 있다.

  • datetime 객체 간의 차이: 두 datetime 객체를 빼면 timedelta 객체가 반환된다. 이를 통해 두 날짜 사이의 기간을 계산할 수 있다.

 

3. pandas에서 날짜 컬럼 다루기

pandas는 데이터 분석에 널리 사용되는 라이브러리로, 날짜 데이터를 쉽게 처리할 수 있는 다양한 기능을 제공한다.

특히 datetime 형식으로 날짜 컬럼을 변환하거나, 날짜 정보를 기준으로 데이터 필터링을 할 때 매우 편리하다.

 

import pandas as pd

# 데이터 프레임 생성
data = {
    'date': ["2024-10-10", "2024-10-11", "2024-10-12", "2024-10-13"],
    'value': [100, 200, 150, 300]
}
df = pd.DataFrame(data)

 

위 예시는 날짜와 값이 포함된 간단한 데이터 프레임을 생성한 것이다. 날짜는 문자열 형태로 저장되어 있다.

 

# 문자열을 datetime 형식으로 변환
df['date'] = pd.to_datetime(df['date'])
print("날짜 컬럼을 datetime 형식으로 변환:")
print(df)

 

pandas.to_datetime() 함수를 사용해 문자열 형태의 날짜를 datetime 형식으로 변환할 수 있다.

이를 통해 날짜 관련 연산이나 필터링을 쉽게 수행할 수 있다.

 

  • pd.to_datetime(column): pandas에서 문자열 형태의 날짜 데이터를 datetime 형식으로 변환한다. 날짜 데이터를 기준으로 정렬하거나 분석할 때 필수적이다.

 

# 날짜를 기준으로 데이터 필터링
filtered_df = df[df['date'] > pd.to_datetime("2024-10-11")]
print("2024-10-11 이후의 데이터:")
print(filtered_df)

 

날짜를 기준으로 데이터를 필터링하는 방법이다. 위 예시에서는 2024년 10월 11일 이후의 데이터를 필터링하였다.

  • 날짜 기준 필터링: datetime 형식으로 변환된 날짜 컬럼을 기준으로 조건을 지정하여 데이터를 필터링할 수 있다. 이를 통해 특정 기간 동안의 데이터만을 분석할 수 있다.

 

# 날짜로부터 연도, 월, 일 추출
df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month
df['day'] = df['date'].dt.day
print("날짜로부터 연도, 월, 일 추출:")
print(df)

 

pandas.dt 접근자를 사용해 날짜로부터 연도, 월, 일 등의 정보를 추출할 수 있다. 이를 통해 날짜 데이터를 더 세밀하게 분석할 수 있다.

  • .dt 접근자: datetime 형식의 컬럼에서 연도, 월, 일 등을 쉽게 추출할 수 있게 해주는 접근자이다. 데이터의 특정 시점에 대한 정보를 세분화하여 분석하는 데 유용하다.

 

결론

datetimetimedelta를 사용하면 날짜와 시간을 간편하게 생성하고 계산할 수 있다.

또한, pandas는 대량의 날짜 데이터를 효과적으로 처리할 수 있는 다양한 기능을 제공한다.

이 도구들을 잘 활용하면 날짜와 시간을 다루는 작업을 효율적으로 처리할 수 있다.

 

이 글에서 다룬 예시들을 통해 파이썬에서 날짜 데이터를 다루는 다양한 방법을 익힐 수 있을 것이다.

날짜와 시간을 다루는 작업은 데이터 분석에서 매우 중요하기 때문에 이러한 도구들을 잘 활용하는 것이 중요하다.

728x90