날짜 문자열을 날짜 형식으로 변환하기

날짜 문자열을 날짜 형식으로 변환하기

Python
날짜 문자열을 날짜 형식으로 변환하기
Author

gabriel yang

Published

October 10, 2024


문자열을 날짜 형식으로 변환하고 수정하기

데이터 분석이나 웹 개발을 하다 보면, 날짜 데이터가 텍스트(문자열) 형식으로 저장되어 있는 경우가 종종 있습니다. 하지만 날짜 정보를 다룰 때는 문자열보다는 날짜 데이터 형식으로 변환해서 처리하는 것이 더 효율적입니다. Python에서는 이러한 작업을 쉽게 할 수 있는 다양한 방법을 제공합니다. 이 글에서는 대표적으로 많이 쓰이는 datetime 모듈과 pandas 라이브러리를 사용하여 날짜 형식 문자열을 날짜 데이터 형식으로 변환하는 방법과 변환 후 날짜를 수정하는 방법을 소개하겠습니다.

1. 날짜 문자열을 datetime 객체로 변환하기

Python의 기본 내장 모듈인 datetime을 사용하면 날짜 형식 문자열을 datetime 객체로 변환할 수 있습니다. 주로 strptime 메서드를 사용하는데, 이 메서드는 날짜 형식의 문자열을 파싱하여 datetime 객체로 변환해 줍니다.

datetime.strptime 사용 예시:

from datetime import datetime

# 날짜 문자열을 datetime 객체로 변환
date_str = "2023-10-09"
date_obj = datetime.strptime(date_str, "%Y-%m-%d")

print(date_obj)
2023-10-09 00:00:00

위 코드에서는 "2023-10-09"라는 날짜 형식의 문자열을 datetime 객체로 변환하였습니다. 여기서 "%Y-%m-%d"는 날짜 형식이 연-월-일로 되어 있음을 의미합니다.

2. 날짜 형식 변경하기

종종 데이터에서 날짜 형식이 우리가 원하는 형식과 맞지 않는 경우가 있습니다. 예를 들어 "2023/10/09"와 같은 형식으로 되어 있을 수도 있죠. 이런 경우에는 strptime에서 형식에 맞게 변환해 주면 됩니다.

다른 형식의 문자열 변환 예시:

from datetime import datetime

# 슬래시(/)로 구분된 날짜 문자열 변환
date_str = "2023/10/09"
date_obj = datetime.strptime(date_str, "%Y/%m/%d")

print(date_obj)
2023-10-09 00:00:00

여기서는 슬래시 /로 구분된 날짜 형식 문자열을 변환하고 있습니다. 이렇게 다양한 형식을 처리할 수 있습니다.

3. pandas를 이용한 날짜 변환

대량의 데이터 처리를 할 때는 pandas 라이브러리를 많이 사용합니다. pandas에서는 to_datetime 함수를 사용하여 문자열을 쉽게 날짜 형식으로 변환할 수 있습니다. 이 함수는 날짜 형식을 자동으로 인식하므로, 매우 편리하게 사용할 수 있습니다.

pandas.to_datetime 사용 예시:

import pandas as pd

date_series = pd.Series(["2023-10-09", "2023-5-09", "2023-11-09"])

# pandas를 이용한 날짜 형식 변환
date_series_converted = pd.to_datetime(date_series)

print(date_series_converted)
0   2023-10-09
1   2023-05-09
2   2023-11-09
dtype: datetime64[ns]

pandas는 다양한 날짜 형식을 자동으로 처리하기 때문에 to_datetime 함수 하나만으로도 여러 형식의 날짜를 변환할 수 있습니다.

4. 날짜 수정하기

변환된 날짜 데이터를 수정하고 싶다면, datetime 모듈의 기능을 활용할 수 있습니다. 예를 들어, 날짜에 며칠을 더하거나 빼고 싶은 경우에는 timedelta 객체를 사용할 수 있습니다.

날짜 수정 예시:

from datetime import datetime, timedelta

# 현재 날짜
date_obj = datetime.strptime("2023-10-09", "%Y-%m-%d")

# 날짜에 7일 더하기
new_date = date_obj + timedelta(days=7)

print(new_date)
2023-10-16 00:00:00

위 코드에서는 기존 날짜에 7일을 더하여 새로운 날짜를 계산하였습니다. 이처럼 timedelta 객체를 이용하면 날짜에 일, 시간, 분 등을 더하거나 뺄 수 있습니다.

date() 메서드 사용하기

date() 메서드를 사용하면 datetime 객체에서 날짜 부분만 추출할 수 있습니다.

from datetime import datetime

# 현재 날짜와 시간을 포함하는 datetime 객체 생성
now = datetime.now()

# datetime 객체에서 날짜만 추출
date_only = now.date()

print("현재 날짜:", date_only)  # 출력 예: 현재 날짜
현재 날짜: 2025-01-05

strftime() 메서드 사용하기

strftime() 메서드는 datetime 객체를 문자열로 포맷할 수 있게 해줍니다. 이 방법을 사용하여 날짜만 원하는 형식으로 가져올 수도 있습니다.

from datetime import datetime

# 현재 날짜와 시간을 포함하는 datetime 객체 생성
now = datetime.now()

# datetime 객체에서 날짜만 문자열로 추출 (형식: YYYY-MM-DD)
date_str = now.strftime("%Y-%m-%d")

print("현재 날짜 (문자열):", date_str)  # 출력 예: 현재 날짜 (문자열): 2023-10-09
현재 날짜 (문자열): 2025-01-05

현재시간에서 수정하기

from datetime import datetime, timedelta

# 현재 시간
now = datetime.now()

# 5시간을 더한 시간
new_time = now + timedelta(hours=5)

print(new_time)
2025-01-05 17:22:47.291372

timedelta의 주요 옵션

timedelta는 다음과 같은 인자(옵션)를 통해 특정 기간을 정의할 수 있습니다.

  • days: 일 단위로 기간을 정의합니다.
    • 양수 값은 날짜를 더하고, 음수 값은 날짜를 뺍니다.
    • 기본값은 0입니다.
  • seconds: 초 단위로 기간을 정의합니다.
    • 기본값은 0입니다. 이 값은 분, 시간 등과 함께 사용할 수 있으며, 60초 이상일 경우 자동으로 적절한 시간, 분 단위로 변환됩니다.
  • microseconds: 마이크로초 단위로 기간을 정의합니다. (1초 = 1,000,000 마이크로초)
    • 기본값은 0입니다. 이 값 역시 자동으로 더 큰 시간 단위로 변환됩니다.
  • milliseconds: 밀리초 단위로 기간을 정의합니다. (1초 = 1,000 밀리초)
    • 기본값은 0입니다. 자동으로 초 단위로 변환됩니다.
  • minutes: 분 단위로 기간을 정의합니다.
    • 기본값은 0입니다. 자동으로 초, 시간 단위로 변환됩니다.
  • hours: 시간 단위로 기간을 정의합니다.
    • 기본값은 0입니다. 자동으로 날짜 단위로 변환됩니다.
  • weeks: 주 단위로 기간을 정의합니다.
    • 기본값은 0입니다. 1주는 7일로 처리됩니다.

5. 날짜 데이터 형식으로의 변환이 중요한 이유

  • 정확한 날짜 연산: 문자열 형식으로는 날짜 간의 차이 계산이나 특정 기간 이후 날짜 계산이 불가능합니다.
  • 일관된 데이터 관리: 날짜 데이터를 처리할 때 일관된 형식을 유지하면 이후 분석, 필터링, 시각화 등의 작업에서 오류를 방지할 수 있습니다.
  • 효율적인 데이터 처리: 대량의 데이터를 처리할 때, 날짜 데이터는 일반적으로 분석의 핵심이므로 이를 효율적으로 관리할 수 있습니다.

결론

이번 글에서는 Python의 datetime 모듈과 pandas 라이브러리를 활용하여 날짜 형식 문자열을 날짜 데이터 형식으로 변환하고, 변환 후 날짜를 수정하는 방법에 대해 알아보았습니다. 데이터를 다룰 때 날짜 처리에 어려움을 겪고 있다면, 위 방법들을 활용하여 날짜 데이터를 효율적으로 관리해 보세요.