안녕하세요, 저는 데이터전처리를 하면서 은근히 시간을 뺏기게 되는 부분이 있는데요,
바로 날짜 형식 변경 입니다.
데이터를 처리하면서 시계열 분석, 일자별 집계, 코호트분석 등 날짜가 기준이 되어야하는 경우가 빈번하게 발생합니다.
그럴 때, 코드가 잘 돌아가다가도 오류가 발생하면 어김없이 형식이 맞지 않을 때가 많아요.
그래서 제가 자주 쓰는 구글스프레드시트와 파이썬 기준으로 날짜 형식 변경에 대해 어떻게 처리하는지 말씀드리겠습니다.
1. 구글 스프레드시트
1.1 기본 날짜 형식 변경
구글 스프레드시트에서는 다양한 기본 날짜 형식을 제공합니다.
날짜가 포함된 셀을 선택합니다.
상단 메뉴에서 [서식] > [숫자] > [날짜]를 선택합니다.
원하는 날짜 형식을 선택
1.2 DATEVALUE 함수 활용
DATEVALUE 함수는 텍스트로 된 날짜를 날짜 값으로 변환합니다.
사용법: =DATEVALUE(텍스트)
# 예시
=DATEVALUE("2023-11-18")
=DATEVALUE("18/11/2023")
=DATEVALUE("November 18, 2023")
1.3 커스텀 날짜 형식 만들기
원하는 날짜 형식이 기본 옵션에 없다면 커스텀 형식을 만들 수 있습니다.
[서식] > [숫자] > [더보기 형식] > [맞춤 날짜 및 시간]을 선택합니다.
연도, 월, 일, 요일 등 원하는 형식을 조합
예시 형식:
* yyyy년 mm월 dd일 (요일): 2023년 11월 18일 (토요일)
* yy/mm/dd HH:MM: 23/11/18 14:30
1.4 TEXT 함수를 이용한 날짜 형식 변경
TEXT 함수로 날짜를 원하는 형식의 문자열로 변환
# 예시
=TEXT(A1, "yyyy-mm-dd")
=TEXT(TODAY(), "yyyy년 mm월 dd일")
=TEXT(NOW(), "HH시 MM분 SS초")
날짜를 KEY로 쓸 때 가장 많이 사용하고 있는 형식이다.
2. Python
2.1 datetime 모듈
datetime 객체 생성 및 기본 사용
from datetime import datetime, date, time
# 현재 날짜와 시간
now = datetime.now()
print(now) # 2023-11-18 14:30:00.123456
# 특정 날짜 생성
specific_date = date(2023, 11, 18)
print(specific_date) # 2023-11-18
# 특정 시간 생성
specific_time = time(14, 30, 0)
print(specific_time) # 14:30:00
2.2 문자열을 날짜로 변환
strptime() 메서드 사용법
예시: datetime.strptime("2023-11-18", "%Y-%m-%d")
from datetime import datetime
date_string = "2023-11-18"
date_object = datetime.strptime(date_string, "%Y-%m-%d")
print(date_object) # 2023-11-18 00:00:00
# 다양한 형식 처리
date_string2 = "18/11/2023 14:30"
date_object2 = datetime.strptime(date_string2, "%d/%m/%Y %H:%M")
print(date_object2) # 2023-11-18 14:30:00
2.3 날짜를 문자열로 변환
strftime() 메서드 활용
다양한 포맷 문자 (예: %Y, %m, %d, %H, %M, %S)
from datetime import datetime
now = datetime.now()
# 다양한 형식으로 변환
print(now.strftime("%Y-%m-%d")) # 2023-11-18
print(now.strftime("%d/%m/%Y")) # 18/11/2023
print(now.strftime("%Y년 %m월 %d일 %H시 %M분")) # 2023년 11월 18일 14시 30분
print(now.strftime("%A, %d %B %Y")) # Saturday, 18 November 2023
2.4 pandas를 이용한 날짜 처리
to_datetime() 함수 사용법
데이터프레임에서의 날짜 컬럼 처리
import pandas as pd
# 문자열을 날짜로 변환
df = pd.DataFrame({'date': ['2023-11-18', '2023-11-19', '2023-11-20']})
df['date'] = pd.to_datetime(df['date'])
print(df)
# 날짜 컬럼에서 년, 월, 일 추출
df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month
df['day'] = df['date'].dt.day
print(df)
# 날짜 범위 생성
date_range = pd.date_range(start='2023-11-18', end='2023-11-25', freq='D')
print(date_range)
3. 마무리
구글스프레드시트와 Python을 통해 다양하게 날짜를 변환하는 방법을 살펴보았습니다.
사실 날짜형식의 변환은 정답이 없습니다. Raw 데이터가 어떤형식으로 어떻게 적재되어있는지에 따라 결국은 적절한 변환방법을 사용하는게 가장 좋습니다!
'데이터핸들링 > 데이터전처리' 카테고리의 다른 글
[SQL] Window 함수 사용법 (2) | 2024.11.19 |
---|---|
[Python] 주민등록번호로 연령, 연령대 구하기 (0) | 2024.11.18 |
[Python] merge,concat 데이터 join하기(=합치기) feat. 이제 행 중복 오류를 곁들인... (0) | 2024.10.30 |